diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index 6783869a..fe70422a 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 eace2c0e..47e0c3d2 100644 --- a/core/locale/ar_AR/LC_MESSAGES/django.po +++ b/core/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -58,12 +58,12 @@ msgstr "تنشيط المحدد %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "إلغاء تنشيط %(verbose_name_plural)s المحددة" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "قيمة السمة" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "قيم السمات" @@ -76,19 +76,19 @@ msgstr "الاسم" msgid "image" msgstr "الصورة" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "الصور" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "المخزون" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "الأسهم" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -108,11 +108,11 @@ msgstr "معلومات أساسية" msgid "important dates" msgstr "تواريخ مهمة" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "طلب المنتج" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "اطلب المنتجات" @@ -120,7 +120,7 @@ msgstr "اطلب المنتجات" msgid "is business" msgstr "هل الأعمال" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "التكوين" @@ -172,7 +172,7 @@ msgstr "مومنتال" msgid "successful" msgstr "ناجح" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "ذاكرة التخزين المؤقت للإدخال/الإخراج" @@ -196,7 +196,7 @@ msgstr "الحصول على معلمات التطبيق القابلة للكش msgid "send a message to the support team" msgstr "إرسال رسالة إلى فريق الدعم" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "طلب عنوان URL مرتبط بـ CORSed. مسموح بـ https فقط." @@ -216,141 +216,141 @@ msgstr "" "اشترِ طلبًا كعمل تجاري، باستخدام \"المنتجات\" المتوفرة مع \"معرّف_المنتج\" " "و\"السمات\"." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "سرد كل مجموعات السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "استرداد مجموعة سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "إنشاء مجموعة سمات" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "حذف مجموعة سمات" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "سرد جميع قيم السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "استرداد قيمة سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "إنشاء قيمة السمة" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "حذف قيمة سمة" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" -#: core/docs/drf/viewsets.py:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "إنشاء فئة" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "حذف فئة" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 msgid "rewrite some fields of an existing category saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 msgid "for non-staff users, only their own orders are returned." msgstr "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع الطلبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 msgid "rewrite some fields of an existing order saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "سعر الشراء وقت الطلب" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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,103 +359,127 @@ msgstr "" "ينهي أمر الشراء. إذا تم استخدام \"فرض_الرصيد\"، يتم إكمال عملية الشراء " "باستخدام رصيد المستخدم؛ إذا تم استخدام \"فرض_الدفع\"، يتم بدء المعاملة." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "شراء طلب شراء بدون إنشاء حساب" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "إنهاء طلب الشراء لمستخدم غير مسجل." -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "يضيف منتجًا إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +msgid "add a list of products to order, quantities will not count" +msgstr "إضافة قائمة بالمنتجات المطلوب طلبها، لن يتم احتساب الكميات" + +#: core/docs/drf/viewsets.py:202 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" " +"المتوفرة." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +msgid "remove product from order, quantities will not count" +msgstr "إزالة منتج من الطلب، لن يتم احتساب الكميات" + +#: core/docs/drf/viewsets.py:214 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"يزيل قائمة من المنتجات من الطلب باستخدام \"معرّف_المنتج\" و\"السمات\" " +"المتوفرة." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع قوائم الرغبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "يضيف منتجًا إلى قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "إزالة منتج من قائمة الرغبات" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "يزيل منتجًا من قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "إضافة العديد من المنتجات إلى قائمة الرغبات" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "يضيف العديد من المنتجات إلى قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -475,59 +499,59 @@ 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:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(بالضبط) UUID المنتج" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(أيقونات) اسم المنتج" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(قائمة) أسماء الفئات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(بالضبط) معرّف الفئة UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(قائمة) أسماء العلامات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) الحد الأدنى لسعر السهم" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) الحد الأقصى لسعر السهم" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(بالضبط) المنتجات النشطة فقط" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(أيكساكت) اسم العلامة التجارية" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(زط) الحد الأدنى لكمية المخزون" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(بالضبط) سبيكة المنتج" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(بالضبط) الرقمية مقابل المادية" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -535,61 +559,61 @@ msgstr "" "قائمة مفصولة بفواصل من الحقول للفرز حسب. البادئة بـ \"-\" للفرز التنازلي. \n" "**مسموح بها:** uuid، تصنيف، اسم، سبيكة، إنشاء، تعديل، سعر، عشوائي" -#: core/docs/drf/viewsets.py:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "إنشاء منتج" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "حذف منتج" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "قائمة بجميع العناوين" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "استرجاع عنوان واحد" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "إنشاء عنوان جديد" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "حذف عنوان" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "تحديث عنوان كامل" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "تحديث جزئي للعنوان" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "إدخال عنوان الإكمال التلقائي" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "تطبيق docker compose exec تطبيق docker exec الشعر تشغيل إدارة python.py " @@ -598,7 +622,7 @@ 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "تحديد كمية النتائج، 1 < الحد < 10، الافتراضي: 5" @@ -606,130 +630,143 @@ msgstr "تحديد كمية النتائج، 1 < الحد < 10، الافترا msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "" "مفتاح للبحث عنه في ذاكرة التخزين المؤقت أو تعيينه في ذاكرة التخزين المؤقت" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "البيانات المراد تخزينها في ذاكرة التخزين المؤقت" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "المهلة بالثواني لتعيين البيانات في ذاكرة التخزين المؤقت" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "البيانات المخزنة مؤقتاً" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "بيانات JSON مجمّلة من عنوان URL المطلوب" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "إضافة منتج إلى الطلب" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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} غير موجود" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "إزالة جميع المنتجات من الطلب" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "شراء طلبية" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "تنفيذ إجراء على قائمة من المنتجات بالترتيب" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "إزالة/إضافة" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "يجب أن يكون الإجراء إما \"إضافة\" أو \"إزالة\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "إضافة منتج إلى الطلب" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "قائمة الأمنيات {wishlist_uuid} غير موجودة" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "شراء طلبية" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "الرجاء إرسال السمات كسلسلة منسقة مثل attr1=قيمة1، attr2=قيمة2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "سلسلة العنوان الأصلي المقدمة من المستخدم" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "يجب أن يكون الحد بين 1 و10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - يعمل مثل السحر" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "السمات" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "السمات المجمعة" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "الفئات" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "العلامات التجارية" @@ -737,8 +774,8 @@ msgstr "العلامات التجارية" msgid "category image url" msgstr "الفئات" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "النسبة المئوية للترميز" @@ -752,48 +789,48 @@ msgid "" msgstr "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "البائعون" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "خط العرض (الإحداثي Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "خط الطول (الإحداثي X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "كيفية" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "قيمة التصنيف من 1 إلى 10، شاملة، أو 0 إذا لم يتم تعيينها." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "يمثل ملاحظات من المستخدم." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "الإشعارات" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "تحميل الرابط الخاص بمنتج الطلب هذا إن أمكن" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "قائمة بطلب المنتجات بهذا الترتيب" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "عنوان إرسال الفواتير" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -801,47 +838,47 @@ msgstr "" "عنوان الشحن لهذا الطلب، اترك العنوان فارغًا إذا كان هو نفسه عنوان إرسال " "الفواتير أو إذا لم يكن منطبقًا" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "السعر الإجمالي لهذا الطلب" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "إجمالي كمية المنتجات بالترتيب" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "هل جميع المنتجات في الطلب رقمي" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "الطلبات" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "رابط الصورة" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "صور المنتج" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "الفئة" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "الملاحظات" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "العلامة التجارية" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -849,31 +886,31 @@ msgstr "مجموعات السمات" msgid "quantity" msgstr "الكمية" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "عدد الملاحظات" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "المنتجات" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "الرموز الترويجية" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "المنتجات المعروضة للبيع" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "العروض الترويجية" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "البائع" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -881,472 +918,476 @@ msgstr "البائع" msgid "product" msgstr "المنتج" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "المنتجات المفضلة" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "قوائم التمنيات" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "المنتجات الموسومة" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "علامات المنتج" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "اسم المشروع" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "البريد الإلكتروني للشركة" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "اسم الشركة" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "عنوان الشركة" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "رقم هاتف الشركة" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" " المضيف" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "مستخدم البريد الإلكتروني المضيف" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "الحد الأقصى لمبلغ السداد" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "الحد الأدنى لمبلغ السداد" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "التكوين" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "رمز اللغة" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "اسم اللغة" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "علم اللغة، إذا كان موجوداً :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "نتائج البحث عن المنتجات" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "نتائج البحث عن المنتجات" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "والد هذه المجموعة" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "مجموعة السمات الرئيسية" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "اسم مجموعة السمات" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "مجموعة السمات" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "فئة هذه السمة" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "مجموعة هذه السمة" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "الخيط" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "عدد صحيح" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "تعويم" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "منطقية" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "المصفوفة" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "الكائن" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "نوع قيمة السمة" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "نوع القيمة" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "اسم هذه السمة" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "اسم السمة" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "السمة" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "سمة هذه القيمة" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "المنتج المرتبط" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "القيمة المحددة لهذه السمة" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "تحميل صورة تمثل هذه الفئة" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "صورة الفئة" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "تحديد نسبة ترميز للمنتجات في هذه الفئة" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "أصل هذه الفئة لتكوين بنية هرمية" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "الفئة الرئيسية" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "اسم الفئة" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "تقديم اسم لهذه الفئة" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "إضافة وصف تفصيلي لهذه الفئة" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "وصف الفئة" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "اسم هذه العلامة التجارية" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "اسم العلامة التجارية" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "تحميل شعار يمثل هذه العلامة التجارية" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "صورة العلامة التجارية الصغيرة" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "رفع شعار كبير يمثل هذه العلامة التجارية" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "صورة كبيرة للعلامة التجارية" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "إضافة وصف تفصيلي للعلامة التجارية" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "وصف العلامة التجارية" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "الفئات الاختيارية التي ترتبط بها هذه العلامة التجارية" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "الفئات" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "الفئة التي ينتمي إليها هذا المنتج" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "ربط هذا المنتج اختياريًا بعلامة تجارية" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "العلامات التي تساعد في وصف أو تجميع هذا المنتج" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "علامات المنتج" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "يشير إلى ما إذا كان هذا المنتج يتم تسليمه رقميًا أم لا" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "هل المنتج رقمي" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "توفير اسم تعريفي واضح للمنتج" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "اسم المنتج" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "إضافة وصف تفصيلي للمنتج" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "وصف المنتج" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "رقم الجزء لهذا المنتج" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "رقم الجزء" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "تخزين بيانات الاعتماد ونقاط النهاية المطلوبة لاتصالات واجهة برمجة التطبيقات " "الخاصة بالمورّد" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "معلومات المصادقة" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "تحديد الترميز للمنتجات المسترجعة من هذا البائع" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "نسبة هامش الربح للبائع" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "اسم هذا البائع" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "اسم البائع" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "التعليقات المقدمة من المستخدمين حول تجربتهم مع المنتج" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "تعليقات على الملاحظات" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "منتجات الطلبات ذات الصلة" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "التصنيف المعين من قبل المستخدم للمنتج" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "تصنيف المنتج" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "الملاحظات" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "عنوان إرسال الفواتير المستخدم لهذا الطلب" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "الرمز الترويجي الاختياري المطبق على هذا الطلب" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "الرمز الترويجي المطبق" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "عنوان الشحن المستخدم لهذا الطلب" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "عنوان الشحن" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "الحالة الحالية للطلب في دورة حياته" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "حالة الطلب" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "بنية JSON للإشعارات التي سيتم عرضها للمستخدمين، في واجهة مستخدم المشرف، يتم " "استخدام عرض الجدول" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "تمثيل JSON لسمات الطلب لهذا الطلب" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "المستخدم الذي قدم الطلب" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "المستخدم" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "الطابع الزمني عند الانتهاء من الطلب" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "وقت الشراء" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "معرّف يمكن قراءته بواسطة البشر للطلب" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "معرّف يمكن قراءته من قبل البشر" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "الطلب" -#: core/models.py:527 +#: core/models.py:531 msgid "a user must have only one pending order at a time" msgstr "يجب أن يكون لدى المستخدم طلب واحد فقط معلق في كل مرة!" -#: core/models.py:551 +#: core/models.py:555 msgid "you cannot add products to an order that is not a pending one" msgstr "لا يمكنك إضافة منتجات إلى طلب غير معلق إلى طلب غير معلق" -#: core/models.py:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} غير موجود: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 msgid "you cannot remove products from an order that is not a pending one" msgstr "لا يمكنك إزالة المنتجات من طلب غير معلق من طلب غير معلق" -#: core/models.py:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} غير موجود مع الاستعلام <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "الرمز الترويجي غير موجود" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "يمكنك فقط شراء المنتجات المادية مع تحديد عنوان الشحن فقط!" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "العنوان غير موجود" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "لا يمكنك الشراء في هذه اللحظة، يرجى المحاولة مرة أخرى بعد بضع دقائق." -#: core/models.py:677 +#: core/models.py:683 msgid "invalid force value" msgstr "قيمة القوة غير صالحة" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "لا يمكنك شراء طلبية فارغة!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "عدم كفاية الأموال لإكمال الطلب" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1354,184 +1395,188 @@ msgstr "" "لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" " الإلكتروني للعميل، رقم هاتف العميل" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "طريقة الدفع غير صالحة" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"طريقة الدفع غير صالحة: {payment_method} من " +"{available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 msgid "the price paid by the customer for this product at purchase time" msgstr "السعر الذي دفعه العميل لهذا المنتج وقت الشراء" -#: core/models.py:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "سعر الشراء وقت الطلب" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "تعليقات داخلية للمسؤولين حول هذا المنتج المطلوب" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "التعليقات الداخلية" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "إشعارات المستخدم" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "تمثيل JSON لسمات هذا العنصر" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "سمات المنتج المطلوبة" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "الإشارة إلى الطلب الأصلي الذي يحتوي على هذا المنتج" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "ترتيب الوالدين" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "المنتج المحدد المرتبط بخط الطلب هذا" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "كمية هذا المنتج المحدد في الطلب" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "كمية المنتج" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "الحالة الحالية لهذا المنتج بالترتيب" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "حالة خط الإنتاج" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "معرّف العلامة الداخلي لعلامة المنتج" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "اسم العلامة" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "اسم سهل الاستخدام لعلامة المنتج" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "اسم عرض العلامة" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "علامة المنتج" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "توفير نص بديل للصورة لإمكانية الوصول" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "النص البديل للصورة" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "تحميل ملف الصورة لهذا المنتج" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "صورة المنتج" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "يحدد الترتيب الذي يتم عرض الصور به" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "أولوية العرض" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "المنتج الذي تمثله هذه الصورة" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "صور المنتج" -#: core/models.py:960 +#: core/models.py:977 msgid "unique code used by a user to redeem a discount" msgstr "الرمز الفريد الذي يستخدمه المستخدم لاسترداد قيمة الخصم" -#: core/models.py:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "معرّف الرمز الترويجي" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "مبلغ الخصم الثابت المطبق في حالة عدم استخدام النسبة المئوية" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "مبلغ الخصم الثابت" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "النسبة المئوية للخصم المطبق في حالة عدم استخدام مبلغ ثابت" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "النسبة المئوية للخصم" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "الطابع الزمني عند انتهاء صلاحية الرمز الترويجي" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "وقت انتهاء الصلاحية" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "الطابع الزمني الذي يكون هذا الرمز الترويجي صالحاً منه" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "وقت بدء الصلاحية" -#: core/models.py:993 +#: core/models.py:1010 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" -#: core/models.py:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "الطابع الزمني للاستخدام" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "المستخدم المعين لهذا الرمز الترويجي إن أمكن" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "المستخدم المعين" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "الرمز الترويجي" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "الرموز الترويجية" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1539,184 +1584,192 @@ msgstr "" "يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" " أو لا هذا ولا ذاك." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "تم استخدام الرمز الترويجي بالفعل" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "النسبة المئوية للخصم على المنتجات المختارة" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "نسبة الخصم" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "تقديم اسم فريد لهذا العرض الترويجي" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "اسم الترقية" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "وصف الترقية" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "حدد المنتجات المشمولة في هذا العرض الترويجي" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "المنتجات المشمولة" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "الترقية" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "البائع الذي يورد هذا المنتج المخزون" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "البائع المرتبط" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "السعر النهائي للعميل بعد هوامش الربح" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "سعر البيع" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "المنتج المرتبط بإدخال المخزون هذا" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "السعر المدفوع للبائع مقابل هذا المنتج" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "سعر الشراء من البائع" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "الكمية المتوفرة من المنتج في المخزون" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "الكمية في المخزون" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU المعين من قبل البائع لتحديد المنتج" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "وحدة تخزين البائع" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "الملف الرقمي المرتبط بهذا المخزون إن أمكن" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "ملف رقمي" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "إدخالات المخزون" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "المنتجات التي حددها المستخدم على أنها مطلوبة" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "المستخدم الذي يمتلك قائمة الرغبات هذه" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "مالك قائمة الرغبات" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "قائمة الرغبات" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "تنزيل" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "التنزيلات" -#: core/models.py:1220 +#: core/models.py:1237 msgid "you can not download a digital asset for a non-finished order" msgstr "لا يمكنك تنزيل أصل رقمي لطلب غير مكتمل" -#: core/models.py:1232 +#: core/models.py:1249 msgid "documentary" msgstr "فيلم وثائقي" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "الأفلام الوثائقية" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "لم يتم حلها" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "سطر العنوان للعميل" + +#: core/models.py:1270 +msgid "address line" +msgstr "سطر العنوان" + +#: core/models.py:1272 msgid "street" msgstr "الشارع" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "المنطقة" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "المدينة" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "المنطقة" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "الرمز البريدي" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "البلد" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "نقطة تحديد الموقع الجغرافي(خط الطول، خط العرض)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "استجابة JSON كاملة من أداة التشفير الجغرافي لهذا العنوان" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "استجابة JSON مخزّنة من خدمة الترميز الجغرافي" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "العنوان" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "العناوين" @@ -1946,7 +1999,7 @@ msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 608769b1..ba238ca0 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 a3dd3530..e56eea66 100644 --- a/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -60,12 +60,12 @@ msgstr "Aktivovat vybrané %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktivovat vybrané %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Hodnota atributu" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Hodnoty atributů" @@ -78,19 +78,19 @@ msgstr "Název" msgid "image" msgstr "Obrázek" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Obrázky" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Zásoby" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -110,11 +110,11 @@ msgstr "Základní informace" msgid "important dates" msgstr "Důležitá data" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Objednat produkt" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Objednat produkty" @@ -122,7 +122,7 @@ msgstr "Objednat produkty" msgid "is business" msgstr "Je podnikání" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Konfigurace" @@ -174,7 +174,7 @@ msgstr "Momental" msgid "successful" msgstr "Úspěšné" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Vstup/výstup mezipaměti" @@ -198,7 +198,7 @@ msgstr "Získání vystavitelných parametrů aplikace" msgid "send a message to the support team" msgstr "Odeslání zprávy týmu podpory" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Vyžádejte si adresu URL s protokolem CORS. Povoleno pouze https." @@ -219,152 +219,152 @@ msgstr "" "Zakoupit objednávku jako podnik s použitím zadaných `produktů` s " "`product_uuid` a `atributy`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Seznam všech skupin atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Získání jedné skupiny atributů (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Vytvoření skupiny atributů" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Odstranění skupiny atributů" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 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:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Seznam všech hodnot atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Získání jedné hodnoty atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Vytvoření hodnoty atributu" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Odstranění hodnoty atributu" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Vytvoření kategorie" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Odstranění kategorie" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 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:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 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:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Nákupní cena v době objednávky" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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,108 +374,132 @@ msgstr "" " s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " "transakce." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 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:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Přidá seznam produktů do objednávky pomocí zadaného `product_uuid` a " +"`attributes`." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 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:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Odebere seznam produktů z objednávky pomocí zadaného `product_uuid` a " +"`attributes`." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 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:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Odstranění produktu ze seznamu přání" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Přidání mnoha produktů do seznamu přání" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -495,59 +519,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(přesně) UUID produktu" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Název produktu" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(seznam) Názvy kategorií, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(přesně) Kategorie UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(seznam) Názvy značek, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Minimální cena akcií" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maximální cena akcií" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(přesně) Pouze aktivní produkty" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Obchodní značka" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimální skladové množství" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(přesně) Product slug" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(přesně) Digitální vs. fyzické" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -555,70 +579,70 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Vytvoření produktu" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 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:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Odstranění produktu" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Seznam všech adres" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Získání jedné adresy" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Vytvoření nové adresy" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Odstranění adresy" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Aktualizace celé adresy" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Částečná aktualizace adresy" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Automatické dokončování zadávání adresy" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "omezuje množství výsledků, 1 < limit < 10, výchozí: 5" @@ -626,88 +650,101 @@ msgstr "omezuje množství výsledků, 1 < limit < 10, výchozí: 5" msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Klíč k vyhledání v keši nebo nastavení do keše" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Data k uložení do mezipaměti" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Časový limit v sekundách pro nastavení dat do mezipaměti" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Data uložená v mezipaměti" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Kamelizovaná data JSON z požadované adresy URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Povoleny jsou pouze adresy URL začínající http(s)://." -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Přidání produktu do objednávky" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Odstranění všech produktů z objednávky" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Koupit objednávku" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Provedení akce na seznamu produktů v objednávce" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Odebrat/přidat" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Akce musí být buď \"přidat\", nebo \"odebrat\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Přidání produktu do objednávky" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Seznam přání {wishlist_uuid} nebyl nalezen" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Koupit objednávku" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -715,42 +752,42 @@ msgstr "" "Prosím, pošlete atributy jako řetězec ve formátu " "attr1=hodnota1,attr2=hodnota2." -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Původní řetězec adresy zadaný uživatelem" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Limit musí být mezi 1 a 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funguje jako kouzlo" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Atributy" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Seskupené atributy" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Značky" @@ -758,8 +795,8 @@ msgstr "Značky" msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Procento přirážky" @@ -774,48 +811,48 @@ msgstr "" "Minimální a maximální ceny produktů v této kategorii, pokud jsou k " "dispozici." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Prodejci" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Zeměpisná šířka (souřadnice Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Zeměpisná délka (souřadnice X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Jak na to" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Hodnota hodnocení od 1 do 10 včetně nebo 0, pokud není nastaveno." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Představuje zpětnou vazbu od uživatele." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Oznámení" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Stáhněte si url adresu pro tento objednaný produkt, pokud je to možné" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Seznam objednaných produktů v tomto pořadí" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Fakturační adresa" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -823,47 +860,47 @@ msgstr "" "Dodací adresa pro tuto objednávku, pokud je stejná jako fakturační adresa " "nebo pokud není použitelná, ponechte prázdné." -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Celková cena této objednávky" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Celkové množství objednaných produktů" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Jsou všechny produkty v objednávce digitální" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Objednávky" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Adresa URL obrázku" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Obrázky produktu" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Zpětná vazba" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Značka" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -871,31 +908,31 @@ msgstr "Skupiny atributů" msgid "quantity" msgstr "Množství" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Počet zpětných vazeb" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Propagační kódy" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Produkty v prodeji" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Propagační akce" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Prodejce" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -903,475 +940,479 @@ msgstr "Prodejce" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Produkty uvedené na seznamu přání" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Seznamy přání" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Produkty s příznakem" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Štítky produktu" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Název projektu" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "E-mail společnosti" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Název společnosti" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Adresa společnosti" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Telefonní číslo společnosti" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', někdy se musí použít místo hodnoty hostitelského uživatele." -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Uživatel hostitelského e-mailu" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Maximální částka pro platbu" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Minimální částka pro platbu" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Konfigurace" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Kód jazyka" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Název jazyka" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Příznak jazyka, pokud existuje :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Získat seznam podporovaných jazyků" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Výsledky vyhledávání produktů" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Výsledky vyhledávání produktů" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Rodič této skupiny" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Nadřazená skupina atributů" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Název skupiny atributů" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Skupina atributů" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Kategorie tohoto atributu" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Skupina tohoto atributu" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Řetězec" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Celé číslo" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Float" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Boolean" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Pole" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Objekt" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Typ hodnoty atributu" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Typ hodnoty" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Název tohoto atributu" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Název atributu" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Atribut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Atribut této hodnoty" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Související produkt" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Konkrétní hodnota tohoto atributu" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Nahrát obrázek reprezentující tuto kategorii" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Obrázek kategorie" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Definovat procento přirážky pro produkty v této kategorii." -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Nadřízený této kategorie, který tvoří hierarchickou strukturu." -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Nadřazená kategorie" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Název kategorie" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Uveďte název této kategorie" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Přidejte podrobný popis této kategorie" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Popis kategorie" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Název této značky" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Název značky" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Nahrát logo reprezentující tuto značku" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Malý obrázek značky" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Nahrát velké logo reprezentující tuto značku" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Velká image značky" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Přidejte podrobný popis značky" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Popis značky" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Volitelné kategorie, se kterými je tato značka spojena" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Kategorie" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Kategorie, do které tento produkt patří" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Volitelně přiřadit tento produkt ke značce" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Značky, které pomáhají popsat nebo seskupit tento produkt" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Štítky produktu" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Označuje, zda je tento produkt dodáván digitálně" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Je produkt digitální" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Uveďte jasný identifikační název výrobku" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Název produktu" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Přidejte podrobný popis produktu" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Popis produktu" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Číslo dílu pro tento produkt" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Číslo dílu" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Ukládá pověření a koncové body potřebné pro komunikaci s rozhraním API " "dodavatele." -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informace o ověřování" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Definice přirážky pro produkty získané od tohoto dodavatele" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Procento přirážky prodejce" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Název tohoto prodejce" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Název prodejce" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Komentáře uživatelů o jejich zkušenostech s produktem" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Zpětná vazba" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Odkazuje na konkrétní produkt v objednávce, kterého se tato zpětná vazba " "týká." -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Související objednávka produktu" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Hodnocení produktu přidělené uživatelem" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Hodnocení produktu" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Zpětná vazba" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Fakturační adresa použitá pro tuto objednávku" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Volitelný promo kód použitý na tuto objednávku" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Použitý promo kód" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Dodací adresa použitá pro tuto objednávku" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Dodací adresa" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Aktuální stav zakázky v jejím životním cyklu" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Stav objednávky" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON struktura oznámení pro zobrazení uživatelům, v uživatelském rozhraní " "administrátora se používá tabulkové zobrazení." -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON reprezentace atributů objednávky pro tuto objednávku" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "Uživatel, který zadal objednávku" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Uživatel" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Časové razítko, kdy byla objednávka dokončena." -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Kupte si čas" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Lidsky čitelný identifikátor objednávky" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "lidsky čitelné ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Objednávka" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Do objednávky nelze přidat neaktivní produkty" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} neexistuje: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} neexistuje s dotazem <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promo kód neexistuje" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Adresa neexistuje" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Neplatná hodnota síly" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Nelze zakoupit prázdnou objednávku!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Nedostatek finančních prostředků na dokončení objednávky" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1379,183 +1420,186 @@ 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:735 -msgid "invalid payment method" -msgstr "Neplatný způsob platby" +#: core/models.py:742 +#, 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:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Nákupní cena v době objednávky" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Interní komentáře pro administrátory k tomuto objednanému produktu" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Interní připomínky" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Oznámení uživatele" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON reprezentace atributů této položky" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Objednané atributy produktu" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Odkaz na nadřazenou objednávku, která obsahuje tento produkt" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Objednávka rodičů" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Konkrétní produkt spojený s touto objednávkou" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Množství tohoto konkrétního produktu v objednávce" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Množství produktu" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Aktuální stav tohoto produktu v objednávce" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Stav produktové řady" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Interní identifikátor značky produktu" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Název štítku" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Uživatelsky přívětivý název pro značku produktu" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Štítek produktu" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "Poskytněte alternativní text k obrázku kvůli přístupnosti." -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Text alt obrázku" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Nahrát soubor s obrázkem tohoto produktu" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Obrázek produktu" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Určuje pořadí, v jakém se obrázky zobrazují." -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Priorita zobrazení" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Výrobek, který tento obrázek představuje" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Obrázky produktů" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Identifikátor propagačního kódu" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "Pevná výše slevy, pokud není použito procento" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Pevná výše slevy" -#: core/models.py:975 +#: core/models.py:992 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:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Procentuální sleva" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Časové razítko ukončení platnosti promokódu" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Doba ukončení platnosti" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Časové razítko, od kterého je tento promokód platný" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Čas zahájení platnosti" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Časové razítko použití" -#: core/models.py:999 +#: core/models.py:1016 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:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Přiřazený uživatel" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Propagační kód" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Propagační kódy" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1563,184 +1607,192 @@ 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:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Promo kód byl již použit" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Neplatný typ slevy pro promocode {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Procentuální sleva na vybrané produkty" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Procento slevy" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Uveďte jedinečný název této propagační akce" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Název akce" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Popis propagace" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Vyberte, které produkty jsou zahrnuty do této akce" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Zahrnuté produkty" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Propagace" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Prodejce dodávající tento výrobek na sklad" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Přidružený prodejce" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Konečná cena pro zákazníka po přirážkách" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Prodejní cena" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Produkt spojený s touto skladovou položkou" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "Cena zaplacená prodejci za tento výrobek" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Kupní cena prodejce" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Dostupné množství produktu na skladě" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Množství na skladě" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU přidělený prodejcem pro identifikaci výrobku" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU prodejce" -#: core/models.py:1130 +#: core/models.py:1147 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:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Digitální soubor" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Zápisy do zásob" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Výrobky, které uživatel označil jako požadované" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Uživatel, který vlastní tento seznam přání" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Majitel seznamu přání" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Seznam přání" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Stáhnout" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Ke stažení na" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Dokumentární film" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Dokumentární filmy" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Nevyřešené" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Adresní řádek pro zákazníka" + +#: core/models.py:1270 +msgid "address line" +msgstr "Adresní řádek" + +#: core/models.py:1272 msgid "street" msgstr "Ulice" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Okres" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Město" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Region" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Poštovní směrovací číslo" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Země" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokace Bod(Zeměpisná délka, Zeměpisná šířka)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Úplná odpověď JSON z geokodéru pro tuto adresu" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Uložená odpověď JSON ze služby geokódování" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adresa" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adresy" @@ -1977,7 +2029,7 @@ msgstr "Digitální aktivum můžete stáhnout pouze jednou" msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 6513d29e..3d0c0fb7 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 4babf2c5..de82910e 100644 --- a/core/locale/da_DK/LC_MESSAGES/django.po +++ b/core/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -59,12 +59,12 @@ msgstr "Aktivér udvalgte %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktiver udvalgte %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attributværdi" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Attributværdier" @@ -77,19 +77,19 @@ msgstr "Navn" msgid "image" msgstr "Billede" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Billeder" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Lager" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Aktier" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -109,11 +109,11 @@ msgstr "Grundlæggende information" msgid "important dates" msgstr "Vigtige datoer" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Bestil produkt" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Bestil produkter" @@ -121,7 +121,7 @@ msgstr "Bestil produkter" msgid "is business" msgstr "Er forretning" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Konfig" @@ -173,7 +173,7 @@ msgstr "Momental" msgid "successful" msgstr "Succesfuld" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache-I/O" @@ -197,7 +197,7 @@ msgstr "Hent applikationens eksponerbare parametre" msgid "send a message to the support team" msgstr "Send en besked til supportteamet" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Anmod om en CORSed URL. Kun https er tilladt." @@ -217,155 +217,155 @@ 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:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Liste over alle attributgrupper (simpel visning)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Hent en enkelt attributgruppe (detaljeret visning)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Opret en attributgruppe" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Slet en attributgruppe" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Omskriv en eksisterende attributgruppe, der gemmer ikke-redigerbare " "attributter" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Liste over alle attributværdier (simpel visning)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Hent en enkelt attributværdi (detaljeret visning)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Opret en attributværdi" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Slet en attributværdi" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Opret en kategori" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Slet en kategori" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Købspris på bestillingstidspunktet" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +375,19 @@ msgstr "" "ved hjælp af brugerens saldo; hvis `force_payment` bruges, igangsættes en " "transaktion." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "afslutter ordrekøbet for en ikke-registreret bruger." -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -395,11 +395,23 @@ msgstr "" "Tilføjer et produkt til en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +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 msgid "remove product from order" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -407,83 +419,95 @@ msgstr "" "Fjerner et produkt fra en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +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 msgid "list all wishlists (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Fjern et produkt fra ønskelisten" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Tilføj mange produkter til ønskelisten" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -503,59 +527,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(præcis) Produkt-UUID" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Produktnavn" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(liste) Kategorinavne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(præcis) UUID for kategori" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Tag-navne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum aktiekurs" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maksimal aktiekurs" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(præcis) Kun aktive produkter" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Mærkenavn" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum lagermængde" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(nøjagtig) Produktsug" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(præcis) Digital vs. fysisk" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -563,67 +587,67 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Opret et produkt" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Slet et produkt" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Angiv alle adresser" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Hent en enkelt adresse" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Opret en ny adresse" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Slet en adresse" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Opdater en hel adresse" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Delvis opdatering af en adresse" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Automatisk udfyldning af adresseinput" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrænser mængden af resultater, 1 < grænse < 10, standard: 5" @@ -631,88 +655,101 @@ msgstr "begrænser mængden af resultater, 1 < grænse < 10, standard: 5" msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Nøgle til at lede efter i eller lægge i cachen" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Data, der skal gemmes i cachen" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout i sekunder for at lægge data i cachen" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Cachelagrede data" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Cameliserede JSON-data fra den ønskede URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Kun URL'er, der starter med http(s)://, er tilladt." -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Tilføj et produkt til ordren" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Fjern alle produkter fra ordren" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Køb en ordre" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Udfør en handling på en liste af produkter i ordren" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Fjern/tilføj" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Handlingen skal være enten \"tilføj\" eller \"fjern\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Tilføj et produkt til ordren" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Ønskeliste {wishlist_uuid} ikke fundet" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Køb en ordre" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -720,42 +757,42 @@ msgstr "" "Send venligst attributterne som en streng formateret som " "attr1=værdi1,attr2=værdi2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Original adressestreng leveret af brugeren" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Grænsen skal være mellem 1 og 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerer som en charme" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Egenskaber" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Grupperede attributter" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Grupper af attributter" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Kategorier" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Mærker" @@ -763,8 +800,8 @@ msgstr "Mærker" msgid "category image url" msgstr "Kategorier" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Markup-procentdel" @@ -781,50 +818,50 @@ msgstr "" "Minimums- og maksimumspriser for produkter i denne kategori, hvis de er " "tilgængelige." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Leverandører" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Breddegrad (Y-koordinat)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Længdegrad (X-koordinat)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Sådan gør du" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Vurderingsværdi fra 1 til 10, inklusive, eller 0, hvis den ikke er " "indstillet." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Repræsenterer feedback fra en bruger." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Meddelelser" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Download url for dette ordreprodukt, hvis det er relevant" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "En liste over bestillingsprodukter i denne ordre" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Faktureringsadresse" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -832,47 +869,47 @@ msgstr "" "Leveringsadresse for denne ordre, lad den være tom, hvis den er den samme " "som faktureringsadressen, eller hvis den ikke er relevant" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Samlet pris for denne ordre" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Samlet antal produkter i ordren" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Er alle produkterne i ordren digitale?" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Bestillinger" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Billed-URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Produktets billeder" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Kategori" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Tilbagemeldinger" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Attributgrupper" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -880,31 +917,31 @@ msgstr "Attributgrupper" msgid "quantity" msgstr "Mængde" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Antal tilbagemeldinger" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produkter" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promokoder" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Produkter til salg" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Kampagner" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Leverandør" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -912,475 +949,479 @@ msgstr "Leverandør" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Ønskelister" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Mærkede produkter" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Produktmærker" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Projektets navn" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Virksomhedens e-mail" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Virksomhedens navn" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Virksomhedens adresse" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Virksomhedens telefonnummer" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'e-mail fra', nogle gange skal den bruges i stedet for værtsbrugerværdien" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "E-mail-værtsbruger" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Maksimalt beløb til betaling" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Minimumsbeløb for betaling" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Sprogkode" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Sprogets navn" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Sprogflag, hvis det findes :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Få en liste over understøttede sprog" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Søgeresultater for produkter" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Søgeresultater for produkter" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Forælder til denne gruppe" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Overordnet attributgruppe" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Attributgruppens navn" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Attributgruppe" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Kategori for denne attribut" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Gruppe af denne attribut" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Streng" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Heltal" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Flyder" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Boolsk" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Objekt" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Type af attributtens værdi" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Værditype" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Navn på denne attribut" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Attributtens navn" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attribut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attribut for denne værdi" -#: core/models.py:143 +#: core/models.py:144 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:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Tilknyttet produkt" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Den specifikke værdi for denne attribut" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Upload et billede, der repræsenterer denne kategori" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Kategori billede" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Definer en markup-procentdel for produkter i denne kategori" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Forælder til denne kategori for at danne en hierarkisk struktur" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Overordnet kategori" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Navn på kategori" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Giv et navn til denne kategori" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Tilføj en detaljeret beskrivelse af denne kategori" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Beskrivelse af kategori" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Navnet på dette mærke" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Varemærke" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Upload et logo, der repræsenterer dette brand" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Brandets lille image" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Upload et stort logo, der repræsenterer dette brand" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Brandets store image" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Tilføj en detaljeret beskrivelse af brandet" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Varemærkebeskrivelse" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Valgfrie kategorier, som dette brand er forbundet med" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Kategorier" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Kategori, som dette produkt tilhører" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Tilknyt eventuelt dette produkt til et brand" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tags, der hjælper med at beskrive eller gruppere dette produkt" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Produktmærker" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Angiver, om dette produkt leveres digitalt" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Er produktet digitalt?" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Giv produktet et klart identificerende navn" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Produktets navn" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Tilføj en detaljeret beskrivelse af produktet" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Produktbeskrivelse" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Reservedelsnummer for dette produkt" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Varenummer" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Gemmer legitimationsoplysninger og slutpunkter, der er nødvendige for " "leverandørens API-kommunikation" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Oplysninger om godkendelse" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Definer markeringen for produkter, der hentes fra denne leverandør" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Sælgerens markup-procentdel" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Navn på denne leverandør" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Leverandørens navn" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Brugernes kommentarer om deres oplevelse med produktet" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Kommentarer til feedback" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Henviser til det specifikke produkt i en ordre, som denne feedback handler " "om" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Relateret ordreprodukt" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Brugertildelt vurdering af produktet" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Produktvurdering" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Den faktureringsadresse, der bruges til denne ordre" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Valgfri kampagnekode anvendt på denne ordre" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Anvendt kampagnekode" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Den leveringsadresse, der er brugt til denne ordre" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Leveringsadresse" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Ordrens aktuelle status i dens livscyklus" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Bestillingsstatus" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" " tabelvisningen" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON-repræsentation af ordreattributter for denne ordre" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "Den bruger, der har afgivet ordren" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Bruger" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Tidsstemplet for, hvornår ordren blev afsluttet" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Køb tid" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "En menneskeligt læsbar identifikator for ordren" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "menneskeligt læsbart ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Bestil" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Du kan ikke tilføje inaktive produkter til en ordre" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} findes ikke: {product_uuid}." -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} findes ikke med forespørgsel <{query}>." -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promokode findes ikke" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Adressen findes ikke" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Ugyldig kraftværdi" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke købe en tom ordre!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Utilstrækkelige midler til at gennemføre ordren" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1388,184 +1429,187 @@ msgstr "" "du kan ikke købe uden registrering, angiv venligst følgende oplysninger: " "kundens navn, kundens e-mail, kundens telefonnummer" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Ugyldig betalingsmetode" +#: core/models.py:742 +#, 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:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Købspris på bestillingstidspunktet" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer til administratorer om dette bestilte produkt" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Interne kommentarer" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Notifikationer til brugere" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON-repræsentation af dette elements attributter" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Bestilte produktattributter" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Henvisning til den overordnede ordre, der indeholder dette produkt" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Forældreordre" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Det specifikke produkt, der er knyttet til denne ordrelinje" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Mængde af dette specifikke produkt i ordren" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Produktmængde" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Aktuel status for dette produkt i bestillingen" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Status for produktlinje" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Intern tag-identifikator for produkttagget" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Tag-navn" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Brugervenligt navn til produktmærket" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Navn på tag-visning" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Produktmærke" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "Giv alternativ tekst til billedet af hensyn til tilgængeligheden" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Billedets alt-tekst" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Upload billedfilen til dette produkt" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Produktbillede" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Bestemmer den rækkefølge, billederne vises i" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Skærm-prioritet" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Det produkt, som dette billede repræsenterer" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Produktbilleder" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Identifikator for kampagnekode" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabatbeløb anvendes, hvis procent ikke bruges" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Fast rabatbeløb" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentvis rabat, hvis det faste beløb ikke bruges" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Procentvis rabat" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Tidsstempel, når promokoden udløber" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Slut gyldighedstid" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel, hvorfra denne promokode er gyldig" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Start gyldighedstid" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Tidsstempel for brug" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Bruger tildelt denne promokode, hvis relevant" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Tildelt bruger" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Kampagnekode" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Kampagnekoder" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1573,184 +1617,192 @@ msgstr "" "Der skal kun defineres én type rabat (beløb eller procent), men ikke begge " "eller ingen af dem." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Promokoden er allerede blevet brugt" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for promokode {self.uuid}." -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Procentvis rabat for de valgte produkter" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Rabatprocent" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Giv et unikt navn til denne kampagne" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Navn på kampagne" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Beskrivelse af kampagnen" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Vælg, hvilke produkter der er inkluderet i denne kampagne" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Inkluderede produkter" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Forfremmelse" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Den leverandør, der leverer dette produkt, lagerfører" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Endelig pris til kunden efter tillæg" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Salgspris" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Det produkt, der er knyttet til denne lagerpost" -#: core/models.py:1113 +#: core/models.py:1130 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:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Leverandørens købspris" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Tilgængelig mængde af produktet på lager" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Antal på lager" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørtildelt SKU til identifikation af produktet" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "Leverandørens SKU" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til dette lager, hvis relevant" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Digital fil" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Lagerposteringer" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Produkter, som brugeren har markeret som ønskede" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Bruger, der ejer denne ønskeliste" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Ønskelistens ejer" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Ønskeliste" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Download" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Downloads" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Dokumentarfilm" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Uafklaret" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Adresselinje til kunden" + +#: core/models.py:1270 +msgid "address line" +msgstr "Adresselinje" + +#: core/models.py:1272 msgid "street" msgstr "Gade" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Distrikt" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "By" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Region" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Postnummer" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Land" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (længdegrad, breddegrad)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Fuldt JSON-svar fra geokoderen for denne adresse" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Gemt JSON-svar fra geokodningstjenesten" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adresse" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adresser" @@ -1987,7 +2039,7 @@ msgstr "Du kan kun downloade det digitale aktiv én gang" msgid "favicon not found" msgstr "Favicon ikke fundet" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 7af0a115..988f7a9e 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 353da027..028f3ea3 100644 --- a/core/locale/de_DE/LC_MESSAGES/django.po +++ b/core/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Ausgewählte %(verbose_name_plural)s aktivieren" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribut Wert" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Attribut Werte" @@ -79,19 +79,19 @@ msgstr "Name" msgid "image" msgstr "Bild" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Bilder" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Lagerbestand" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Bestände" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Grundlegende Informationen" msgid "important dates" msgstr "Wichtige Termine" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Produkt bestellen" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Produkte bestellen" @@ -123,7 +123,7 @@ msgstr "Produkte bestellen" msgid "is business" msgstr "Ist Business" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Konfigurieren Sie" @@ -175,7 +175,7 @@ msgstr "Momente" msgid "successful" msgstr "Erfolgreich" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache I/O" @@ -199,7 +199,7 @@ msgstr "Abrufen der exponierbaren Parameter der Anwendung" msgid "send a message to the support team" msgstr "Senden Sie eine Nachricht an das Support-Team" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Fordern Sie eine CORS-gesicherte URL an. Nur https erlaubt." @@ -219,160 +219,160 @@ msgstr "" "Kauf einer Bestellung als Unternehmen unter Verwendung der angegebenen " "\"Produkte\" mit \"product_uuid\" und \"Attributen\"." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Alle Attributgruppen auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Abrufen einer einzelnen Attributgruppe (Detailansicht)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Erstellen einer Attributgruppe" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Löschen einer Attributgruppe" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Umschreiben einer bestehenden Attributgruppe mit Speicherung von Nicht-" "Editierbarkeit" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Alle Attributwerte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Abrufen eines einzelnen Attributwertes (Detailansicht)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Einen Attributwert erstellen" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Löschen eines Attributwertes" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributwerts mit Speicherung von Nicht-" "Editierbarkeit" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Eine Kategorie erstellen" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Eine Kategorie löschen" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 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:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +382,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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -404,11 +404,25 @@ msgstr "" "Fügt ein Produkt unter Verwendung der angegebenen `product_uuid` und " "`attributes` zu einer Bestellung hinzu." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Fügt einer Bestellung eine Liste von Produkten unter Verwendung der " +"angegebenen `product_uuid` und `attributes` hinzu." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -416,85 +430,98 @@ msgstr "" "Entfernt ein Produkt aus einer Bestellung unter Verwendung der angegebenen " "`product_uuid` und `attributes`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Entfernt eine Liste von Produkten aus einer Bestellung unter Verwendung der " +"angegebenen `product_uuid` und `attributes`." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 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:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Ein Produkt von der Wunschliste entfernen" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Viele Produkte auf den Wunschzettel setzen" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -514,61 +541,61 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(genaue) Produkt-UUID" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Produktname" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "" "(Liste) Kategorienamen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(genau) Kategorie UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "" "(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Mindestaktienkurs" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maximaler Aktienkurs" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(genau) Nur aktive Produkte" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Markenname" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Mindestlagermenge" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(genau) Produktausschnitt" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(genau) Digital vs. physisch" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -576,65 +603,65 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Ein Produkt erstellen" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" " Felder" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Ein Produkt löschen" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Alle Adressen auflisten" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Eine einzelne Adresse abrufen" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Eine neue Adresse erstellen" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Eine Adresse löschen" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Eine ganze Adresse aktualisieren" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Teilweise Aktualisierung einer Adresse" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Autovervollständigung der Adresseingabe" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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" @@ -642,7 +669,7 @@ 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrenzt die Anzahl der Ergebnisse, 1 < Limit < 10, Standard: 5" @@ -650,132 +677,145 @@ msgstr "begrenzt die Anzahl der Ergebnisse, 1 < Limit < 10, Standard: 5" msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Schlüssel, der im Cache zu suchen oder in den Cache zu legen ist" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Im Cache zu speichernde Daten" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in Sekunden, um die Daten in den Cache zu stellen" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Zwischengespeicherte Daten" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-Daten aus der angeforderten URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Alle Produkte aus der Bestellung entfernen" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Eine Bestellung kaufen" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Bitte geben Sie entweder order_uuid oder order_hr_id an - beide schließen " "sich gegenseitig aus!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Eine Aktion für eine Liste von Produkten in der Bestellung ausführen" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Entfernen/Hinzufügen" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Aktion muss entweder \"Hinzufügen\" oder \"Entfernen\" sein!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wunschzettel {wishlist_uuid} nicht gefunden" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Eine Bestellung kaufen" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "" "Bitte senden Sie die Attribute als String im Format attr1=wert1,attr2=wert2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Vom Benutzer angegebene Originaladresse" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Der Grenzwert muss zwischen 1 und 10 liegen." -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funktioniert wie ein Zauber" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Attribute" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Gruppierte Attribute" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Gruppen von Attributen" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Kategorien" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Marken" @@ -783,8 +823,8 @@ msgstr "Marken" msgid "category image url" msgstr "Kategorien" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" @@ -801,49 +841,49 @@ msgstr "" "Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern " "verfügbar." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Anbieter" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Breitengrad (Y-Koordinate)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Längengrad (X-Koordinate)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Wie" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Bewertungswert von 1 bis einschließlich 10 oder 0, wenn nicht festgelegt." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Stellt das Feedback eines Benutzers dar." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Benachrichtigungen" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Download-Url für dieses Bestellprodukt, falls zutreffend" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Eine Liste der bestellten Produkte in dieser Reihenfolge" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Rechnungsadresse" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -851,47 +891,47 @@ msgstr "" "Lieferadresse für diese Bestellung, leer lassen, wenn sie mit der " "Rechnungsadresse übereinstimmt oder nicht zutrifft" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Gesamtpreis für diese Bestellung" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Gesamtmenge der bestellten Produkte" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Sind alle Produkte in der Bestellung digital" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Bestellungen" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Bild URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Bilder des Produkts" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Rückmeldungen" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Marke" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Attribut-Gruppen" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -899,31 +939,31 @@ msgstr "Attribut-Gruppen" msgid "quantity" msgstr "Menge" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Anzahl der Rückmeldungen" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produkte" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Zum Verkauf stehende Produkte" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Werbeaktionen" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Anbieter" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -931,487 +971,491 @@ msgstr "Anbieter" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Auf dem Wunschzettel stehende Produkte" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Wunschzettel" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Markierte Produkte" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Produkt-Tags" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Name des Projekts" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Unternehmen E-Mail" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Name des Unternehmens" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Adresse des Unternehmens" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Telefonnummer des Unternehmens" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "E-Mail von\", muss manchmal anstelle des Host-Benutzerwerts verwendet werden" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "E-Mail-Host-Benutzer" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Höchstbetrag für die Zahlung" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Mindestbetrag für die Zahlung" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Sprachcode" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Name der Sprache" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Sprachflagge, falls vorhanden :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Suchergebnisse für Produkte" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Suchergebnisse für Produkte" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Elternteil dieser Gruppe" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Übergeordnete Attributgruppe" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Name der Attributgruppe" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Attribut-Gruppe" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Kategorie dieses Attributs" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Gruppe dieses Attributs" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Zeichenfolge" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Integer" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Schwimmer" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Boolesche" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Objekt" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Typ des Attributwerts" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Werttyp" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Name dieses Attributs" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Name des Attributs" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attribut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attribut dieses Wertes" -#: core/models.py:143 +#: core/models.py:144 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:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Zugehöriges Produkt" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Der spezifische Wert für dieses Attribut" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Laden Sie ein Bild hoch, das diese Kategorie repräsentiert" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Kategorie Bild" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "" "Definieren Sie einen prozentualen Aufschlag für Produkte in dieser Kategorie" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "" "Übergeordneter dieser Kategorie, um eine hierarchische Struktur zu bilden" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Übergeordnete Kategorie" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Name der Kategorie" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Geben Sie einen Namen für diese Kategorie an" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Fügen Sie eine detaillierte Beschreibung für diese Kategorie hinzu" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Beschreibung der Kategorie" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Name dieser Marke" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Markenname" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Laden Sie ein Logo hoch, das diese Marke repräsentiert" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Marke kleines Bild" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Laden Sie ein großes Logo hoch, das diese Marke repräsentiert" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Großes Image der Marke" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Fügen Sie eine detaillierte Beschreibung der Marke hinzu" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Beschreibung der Marke" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "" "Optionale Kategorien, mit denen diese Marke in Verbindung gebracht wird" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Kategorien" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Kategorie, zu der dieses Produkt gehört" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Optional können Sie dieses Produkt mit einer Marke verknüpfen" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tags, die helfen, dieses Produkt zu beschreiben oder zu gruppieren" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Produkt-Tags" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Gibt an, ob dieses Produkt digital geliefert wird" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Ist das Produkt digital" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "" "Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Name des Produkts" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Fügen Sie eine detaillierte Beschreibung des Produkts hinzu" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Beschreibung des Produkts" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Teilenummer für dieses Produkt" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Teilnummer" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Speichert Anmeldeinformationen und Endpunkte, die für die API-Kommunikation " "des Anbieters erforderlich sind" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informationen zur Authentifizierung" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieren Sie den Aufschlag für Produkte, die von diesem Lieferanten " "bezogen werden" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Prozentualer Aufschlag des Lieferanten" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Name dieses Anbieters" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Name des Anbieters" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Kommentare der Nutzer über ihre Erfahrungen mit dem Produkt" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Kommentare zum Feedback" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese" " Rückmeldung bezieht" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Produkt zur Bestellung" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Vom Benutzer zugewiesene Bewertung für das Produkt" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Produktbewertung" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Rückmeldung" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Die für diese Bestellung verwendete Rechnungsadresse" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Optionaler Promo-Code für diese Bestellung" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Angewandter Promo-Code" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Die für diese Bestellung verwendete Lieferadresse" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Lieferadresse" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Aktueller Status des Auftrags in seinem Lebenszyklus" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Status der Bestellung" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON-Struktur der Benachrichtigungen, die den Benutzern angezeigt werden " "sollen; in der Admin-UI wird die Tabellenansicht verwendet" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON-Darstellung der Auftragsattribute für diesen Auftrag" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "Der Benutzer, der die Bestellung aufgegeben hat" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Benutzer" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Der Zeitstempel, zu dem der Auftrag abgeschlossen wurde" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Zeit kaufen" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Ein von Menschen lesbarer Identifikator für den Auftrag" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "menschenlesbare ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Bestellung" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} existiert nicht: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} existiert nicht mit Abfrage <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promocode existiert nicht" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Adresse ist nicht vorhanden" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Ungültiger Force-Wert" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Sie können keine leere Bestellung kaufen!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Unzureichende Mittel für die Ausführung des Auftrags" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1419,192 +1463,195 @@ msgstr "" "Sie können nicht ohne Registrierung kaufen, bitte geben Sie die folgenden " "Informationen an: Kundenname, Kunden-E-Mail, Kunden-Telefonnummer" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Ungültige Zahlungsmethode" +#: core/models.py:742 +#, 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:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Interne Kommentare für Administratoren zu diesem bestellten Produkt" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Interne Kommentare" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Benutzerbenachrichtigungen" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON-Darstellung der Attribute dieses Artikels" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Bestellte Produktattribute" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Verweis auf den übergeordneten Auftrag, der dieses Produkt enthält" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Übergeordneter Auftrag" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Das spezifische Produkt, das mit dieser Auftragszeile verbunden ist" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Menge dieses spezifischen Produkts in der Bestellung" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Produktmenge" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Aktueller Status dieses Produkts im Auftrag" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Status der Produktlinie" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Interner Tag-Identifikator für das Produkt-Tag" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Tag name" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Benutzerfreundlicher Name für den Produktanhänger" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Tag-Anzeigename" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Produkt-Tag" -#: core/models.py:919 +#: core/models.py:936 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:920 +#: core/models.py:937 msgid "image alt text" msgstr "Bild-Alt-Text" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Laden Sie die Bilddatei für dieses Produkt hoch" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Produktbild" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Legt die Reihenfolge fest, in der die Bilder angezeigt werden" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Priorität anzeigen" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Das Produkt, das dieses Bild darstellt" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Produktbilder" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Kennung des Promo-Codes" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "" "Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet " "wird" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Fester Rabattbetrag" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Prozentualer Rabatt, wenn der Festbetrag nicht verwendet wird" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Prozentualer Rabatt" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Zeitstempel, wann der Promocode abläuft" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Ende der Gültigkeitsdauer" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Zeitstempel, ab dem dieser Promocode gültig ist" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Beginn der Gültigkeitsdauer" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Zeitstempel der Verwendung" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Diesem Promocode zugewiesener Benutzer, falls zutreffend" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Zugewiesener Benutzer" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Promo-Code" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Promo-Codes" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1612,187 +1659,195 @@ msgstr "" "Es sollte nur eine Art von Rabatt definiert werden (Betrag oder " "Prozentsatz), aber nicht beides oder keines von beiden." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Promocode wurde bereits verwendet" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ungültiger Rabatttyp für Promocode {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Prozentualer Rabatt für die ausgewählten Produkte" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Prozentsatz der Ermäßigung" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Geben Sie einen eindeutigen Namen für diese Aktion an" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Name der Aktion" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Wählen Sie aus, welche Produkte in dieser Aktion enthalten sind" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Enthaltene Produkte" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Förderung" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Der Verkäufer, der dieses Produkt liefert, hat folgende Bestände" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Zugehöriger Anbieter" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Endpreis für den Kunden nach Aufschlägen" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Verkaufspreis" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Das mit diesem Bestandseintrag verbundene Produkt" -#: core/models.py:1113 +#: core/models.py:1130 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:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Einkaufspreis des Verkäufers" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Verfügbare Menge des Produkts auf Lager" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Vorrätige Menge" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Vom Hersteller zugewiesene SKU zur Identifizierung des Produkts" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU des Verkäufers" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "" "Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Digitale Datei" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Bestandseinträge" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Produkte, die der Benutzer als gewünscht markiert hat" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Benutzer, dem diese Wunschliste gehört" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Besitzer der Wishlist" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Wunschzettel" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Herunterladen" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Herunterladen" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Dokumentarfilme" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Ungelöst" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Adresszeile für den Kunden" + +#: core/models.py:1270 +msgid "address line" +msgstr "Adresszeile" + +#: core/models.py:1272 msgid "street" msgstr "Straße" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Bezirk" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Stadt" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Region" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Postleitzahl" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Land" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Längengrad, Breitengrad)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Vollständige JSON-Antwort vom Geocoder für diese Adresse" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Gespeicherte JSON-Antwort vom Geokodierungsdienst" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adresse" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adressen" @@ -2031,7 +2086,7 @@ msgstr "Sie können das digitale Asset nur einmal herunterladen" msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 ee037fdf..51fbdb61 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 ec4d7e07..2ba52ff4 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -64,12 +64,12 @@ msgstr "Activate selected %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Attribute Values" @@ -82,19 +82,19 @@ msgstr "Name" msgid "image" msgstr "Image" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Stocks" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -114,11 +114,11 @@ msgstr "Basic Info" msgid "important dates" msgstr "Important Dates" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Order Product" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Order Products" @@ -126,7 +126,7 @@ msgstr "Order Products" msgid "is business" msgstr "Is Business" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Config" @@ -178,7 +178,7 @@ msgstr "Momental" msgid "successful" msgstr "Successful" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache I/O" @@ -202,7 +202,7 @@ msgstr "Get application's exposable parameters" msgid "send a message to the support team" msgstr "Send a message to the support team" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." @@ -222,143 +222,143 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Create an attribute group" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Create an attribute value" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Create a category" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Delete a category" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Purchase price at order time" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +368,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -388,11 +388,23 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -400,73 +412,85 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Removes a list of products from an order using the provided `product_uuid` " +"and `attributes`." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -486,59 +510,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(exact) Product slug" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -546,66 +570,66 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" @@ -613,88 +637,101 @@ msgstr "limits the results amount, 1 < limit < 10, default: 5" msgid "no search term provided." msgstr "No search term provided." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Key to look for in or set into the cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Data to store in cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in seconds to set the data for into the cache" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Cached data" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Add a product to the order" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Remove all products from the order" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Buy an order" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Perform an action on a list of products in the order" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Remove/Add" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Action must be either \"add\" or \"remove\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Add a product to the order" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} not found" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Buy an order" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -702,42 +739,42 @@ msgstr "" "Please send the attributes as the string formatted like " "attr1=value1,attr2=value2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Attributes" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Grouped attributes" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Groups of attributes" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Brands" @@ -745,8 +782,8 @@ msgstr "Brands" msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" @@ -760,48 +797,48 @@ msgid "" msgstr "" "Minimum and maximum prices for products in this category, if available." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -809,47 +846,47 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -857,31 +894,31 @@ msgstr "Attribute groups" msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -889,471 +926,475 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Tagged products" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Product tags" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Products search results" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Parent of this group" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Parent attribute group" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Attribute group's name" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Attribute group" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Category of this attribute" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Group of this attribute" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "String" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Integer" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Float" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Boolean" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Object" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Type of the attribute's value" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Value type" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Name of this attribute" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Attribute's name" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attribute" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attribute of this value" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Associated product" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "The specific value for this attribute" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Upload an image representing this category" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Category image" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Define a markup percentage for products in this category" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Parent of this category to form a hierarchical structure" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Parent category" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Category name" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Provide a name for this category" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Add a detailed description for this category" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Category description" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Name of this brand" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Brand name" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Brand small image" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Brand big image" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Brand description" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categories" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Product tags" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Product name" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Product description" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Part number" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Related order product" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Product rating" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Order status" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "User" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Buy time" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Order" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1361,183 +1402,186 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Invalid payment method" +#: core/models.py:742 +#, 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:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "User notifications" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Parent order" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Product line status" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Tag name" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Product tag" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Product image" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Display priority" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Product images" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "End validity time" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Promo code" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1545,184 +1589,192 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Included products" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promotion" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Selling price" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Digital file" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Download" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Downloads" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentary" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Address line for the customer" + +#: core/models.py:1270 +msgid "address line" +msgstr "Address line" + +#: core/models.py:1272 msgid "street" msgstr "Street" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "District" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "City" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Region" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Postal code" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Country" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Address" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adresses" @@ -1958,11 +2010,14 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" +#~ msgid "invalid payment method" +#~ msgstr "Invalid payment method" + #~ msgid "translations" #~ msgstr "Translations" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index 209c2f17..966d6535 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 c21ba266..ca83c8fd 100644 --- a/core/locale/en_US/LC_MESSAGES/django.po +++ b/core/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -59,12 +59,12 @@ msgstr "Activate selected %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Attribute Values" @@ -77,19 +77,19 @@ msgstr "Name" msgid "image" msgstr "Image" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Stocks" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -109,11 +109,11 @@ msgstr "Basic Info" msgid "important dates" msgstr "Important dates" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Order Product" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Order Products" @@ -121,7 +121,7 @@ msgstr "Order Products" msgid "is business" msgstr "Is Business" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Config" @@ -173,7 +173,7 @@ msgstr "Momental" msgid "successful" msgstr "Successful" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache I/O" @@ -197,7 +197,7 @@ msgstr "Get application's exposable parameters" msgid "send a message to the support team" msgstr "Send a message to the support team" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." @@ -217,143 +217,143 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Create an attribute group" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Create an attribute value" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Create a category" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Delete a category" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Purchase price at order time" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +363,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -383,11 +383,23 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -395,73 +407,85 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Removes a list of products from an order using the provided `product_uuid` " +"and `attributes`." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -481,59 +505,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(exact) Product slug" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -541,66 +565,66 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" @@ -608,88 +632,101 @@ msgstr "limits the results amount, 1 < limit < 10, default: 5" msgid "no search term provided." msgstr "No search term provided." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Key to look for in or set into the cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Data to store in cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in seconds to set the data for into the cache" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Cached data" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Add a product to the order" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Remove all products from the order" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Buy an order" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Perform an action on a list of products in the order" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Remove/Add" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Action must be either \"add\" or \"remove\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Add a product to the order" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} not found" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Buy an order" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -697,42 +734,42 @@ msgstr "" "Please send the attributes as the string formatted like " "attr1=value1,attr2=value2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Attributes" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Grouped attributes" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Groups of attributes" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Brands" @@ -740,8 +777,8 @@ msgstr "Brands" msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" @@ -755,48 +792,48 @@ msgid "" msgstr "" "Minimum and maximum prices for products in this category, if available." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "How to" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -804,47 +841,47 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -852,31 +889,31 @@ msgstr "Attribute groups" msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -884,471 +921,475 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Tagged products" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Product tags" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Products search results" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Parent of this group" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Parent attribute group" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Attribute group's name" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Attribute group" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Category of this attribute" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Group of this attribute" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "String" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Integer" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Float" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Boolean" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Object" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Type of the attribute's value" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Value type" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Name of this attribute" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Attribute's name" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attribute" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attribute of this value" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Associated product" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "The specific value for this attribute" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Upload an image representing this category" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Category image" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Define a markup percentage for products in this category" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Parent of this category to form a hierarchical structure" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Parent category" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Category name" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Provide a name for this category" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Add a detailed description for this category" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Category description" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Name of this brand" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Brand name" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Brand small image" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Brand big image" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Brand description" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categories" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Product tags" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Product name" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Product description" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Part number" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Related order product" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Product rating" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Order status" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "User" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Buy time" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Order" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1356,183 +1397,186 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Invalid payment method" +#: core/models.py:742 +#, 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:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "User notifications" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Parent order" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Product line status" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Tag name" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Product tag" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Product image" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Display priority" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Product images" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "End validity time" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Promo code" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1540,184 +1584,192 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Included products" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promotion" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Selling price" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Digital file" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Download" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Downloads" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentary" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Address line for the customer" + +#: core/models.py:1270 +msgid "address line" +msgstr "Address line" + +#: core/models.py:1272 msgid "street" msgstr "Street" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "District" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "City" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Region" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Postal code" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Country" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Address" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adresses" @@ -1953,7 +2005,7 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 4e70cb9e..4cc785cf 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 70cf90da..71248a2f 100644 --- a/core/locale/es_ES/LC_MESSAGES/django.po +++ b/core/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Activar %(verbose_name_plural)s seleccionados" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desactivar %(verbose_name_plural)s seleccionados" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Atributo Valor" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Valores de los atributos" @@ -79,19 +79,19 @@ msgstr "Nombre" msgid "image" msgstr "Imagen" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Imágenes" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Acciones" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Información básica" msgid "important dates" msgstr "Fechas importantes" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Pedir un producto" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Pedir productos" @@ -123,7 +123,7 @@ msgstr "Pedir productos" msgid "is business" msgstr "Es Negocio" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Configurar" @@ -175,7 +175,7 @@ msgstr "Momento" msgid "successful" msgstr "Éxito" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "E/S de caché" @@ -199,7 +199,7 @@ msgstr "Obtener los parámetros exponibles de la aplicación" msgid "send a message to the support team" msgstr "Enviar un mensaje al equipo de asistencia" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Solicitar una URL CORSed. Solo se permite https." @@ -220,153 +220,153 @@ msgstr "" "Compra un pedido como empresa, utilizando los `productos` proporcionados con" " `product_uuid` y `attributes`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Lista de todos los grupos de atributos (vista simple)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar un único grupo de atributos (vista detallada)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Crear un grupo de atributos" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Eliminar un grupo de atributos" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Listar todos los valores de atributos (vista simple)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar un único valor de atributo (vista detallada)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Crear un valor de atributo" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Borrar un valor de atributo" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Crear una categoría" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Eliminar una categoría" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Precio de compra en el momento del pedido" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +376,19 @@ msgstr "" "finaliza utilizando el saldo del usuario; Si se utiliza `force_payment`, se " "inicia una transacción." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -396,11 +396,23 @@ msgstr "" "Añade un producto a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Añade una lista de productos a un pedido utilizando el `product_uuid` y los " +"`attributes` proporcionados." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -408,84 +420,96 @@ msgstr "" "Elimina un producto de un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Elimina una lista de productos de un pedido utilizando el `product_uuid` y " +"los `attributes` proporcionados." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Eliminar un producto de la lista de deseos" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Añadir muchos productos a la lista de deseos" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -505,61 +529,61 @@ msgstr "" "`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "UUID (exacto) del producto" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Nombre del producto" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 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:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(exacto) Categoría UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 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:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Precio mínimo de las acciones" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Precio máximo de las acciones" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exacto) Sólo productos activos" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Marca" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantidad mínima de existencias" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(exacto) Babosa del producto" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exacto) Digital frente a físico" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -567,69 +591,69 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Crear un producto" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Eliminar un producto" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Enumerar todas las direcciones" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Recuperar una única dirección" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Crear una nueva dirección" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Borrar una dirección" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Actualizar una dirección completa" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Actualizar parcialmente una dirección" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Autocompletar direcciones" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la cantidad de resultados, 1 < límite < 10, por defecto: 5" @@ -637,89 +661,102 @@ msgstr "limita la cantidad de resultados, 1 < límite < 10, por defecto: 5" msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Clave que hay que buscar o introducir en la caché" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Datos a almacenar en caché" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Tiempo de espera en segundos para poner los datos en la caché" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Datos en caché" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Datos JSON camelizados de la URL solicitada" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Sólo se permiten URL que empiecen por http(s)://." -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Añadir un producto al pedido" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Eliminar todos los productos del pedido" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Comprar un pedido" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Realizar una acción en una lista de productos del pedido" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Quitar/Agregar" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "La acción debe ser \"añadir\" o \"eliminar\"." + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Añadir un producto al pedido" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista de deseos {wishlist_uuid} no encontrada" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Comprar un pedido" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -727,42 +764,42 @@ msgstr "" "Por favor, envíe los atributos como una cadena formateada como " "attr1=valor1,attr2=valor2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Cadena de dirección original proporcionada por el usuario" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "El límite debe estar entre 1 y 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona a las mil maravillas" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Atributos" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Atributos agrupados" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categorías" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Marcas" @@ -770,8 +807,8 @@ msgstr "Marcas" msgid "category image url" msgstr "Categorías" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Porcentaje de recargo" @@ -787,50 +824,50 @@ msgstr "" "Precios mínimo y máximo de los productos de esta categoría, si están " "disponibles." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Vendedores" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitud (coordenada Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitud (coordenada X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Cómo" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está " "configurado." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Representa la opinión de un usuario." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notificaciones" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Descargar url para este producto de pedido si procede" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Una lista de los productos del pedido" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Dirección de facturación" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -838,47 +875,47 @@ msgstr "" "Dirección de envío para este pedido, dejar en blanco si es la misma que la " "de facturación o si no procede" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Precio total de este pedido" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Cantidad total de productos del pedido" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "¿Están todos los productos en el pedido digital" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "URL de la imagen" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Imágenes del producto" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Categoría" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Comentarios" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -886,31 +923,31 @@ msgstr "Grupos de atributos" msgid "quantity" msgstr "Cantidad" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Número de reacciones" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Productos" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Códigos promocionales" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Productos a la venta" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promociones" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Vendedor" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -918,478 +955,482 @@ msgstr "Vendedor" msgid "product" msgstr "Producto" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Productos deseados" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Listas de deseos" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Productos con etiqueta" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Etiquetas del producto" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Nombre del proyecto" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Correo electrónico de la empresa" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Nombre de la empresa" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Dirección de la empresa" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Teléfono de la empresa" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a veces debe utilizarse en lugar del valor del usuario host" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Correo electrónico del usuario anfitrión" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Importe máximo de pago" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Importe mínimo de pago" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configuración" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Código de idioma" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Nombre de la lengua" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Bandera de idioma, si existe :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Resultados de la búsqueda de productos" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Resultados de la búsqueda de productos" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Padre de este grupo" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Grupo de atributos padre" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Nombre del grupo de atributos" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Grupo de atributos" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Categoría de este atributo" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Grupo de este atributo" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Cadena" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Entero" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Flotador" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Booleano" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Matriz" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Objeto" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Tipo del valor del atributo" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Tipo de valor" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Nombre de este atributo" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Nombre del atributo" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Atributo" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Atributo de este valor" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Producto asociado" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "El valor específico de este atributo" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Cargar una imagen que represente esta categoría" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Categoría imagen" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Definir un porcentaje de recargo para los productos de esta categoría" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Padre de esta categoría para formar una estructura jerárquica" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Categoría de padres" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Nombre de la categoría" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Indique un nombre para esta categoría" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Añadir una descripción detallada para esta categoría" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Descripción de la categoría" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Nombre de esta marca" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Marca" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Cargar un logotipo que represente a esta marca" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Marca pequeña imagen" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Sube un logotipo grande que represente a esta marca" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Gran imagen de marca" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Añadir una descripción detallada de la marca" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Descripción de la marca" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Categorías opcionales a las que se asocia esta marca" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categorías" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Categoría a la que pertenece este producto" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Si lo desea, puede asociar este producto a una marca" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Etiquetas que ayudan a describir o agrupar este producto" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Etiquetas del producto" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indica si este producto se entrega digitalmente" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "¿Es digital el producto?" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Proporcionar un nombre que identifique claramente el producto" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Nombre del producto" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Añada una descripción detallada del producto" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Descripción del producto" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Número de pieza de este producto" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Número de pieza" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Almacena las credenciales y los puntos finales necesarios para la " "comunicación API del proveedor" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Información de autenticación" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definir el margen de beneficio para los productos recuperados de este " "proveedor" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Porcentaje de margen del vendedor" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Nombre de este vendedor" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Nombre del vendedor" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Comentarios de los usuarios sobre su experiencia con el producto" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Comentarios" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Hace referencia al producto específico de un pedido sobre el que trata esta " "opinión" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Producto relacionado con el pedido" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Valoración del producto asignada por el usuario" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Valoración del producto" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Comentarios" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "La dirección de facturación utilizada para este pedido" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "La dirección de envío utilizada para este pedido" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Dirección de envío" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Estado actual del pedido en su ciclo de vida" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Estado del pedido" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "Estructura JSON de las notificaciones para mostrar a los usuarios, en la " "interfaz de administración se utiliza la vista de tabla." -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "Representación JSON de los atributos de la orden para esta orden" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "El usuario que realizó el pedido" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Usuario" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Fecha de finalización de la orden" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Comprar tiempo" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Un identificador legible por el ser humano para la orden" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "ID legible por humanos" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Pida" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "No se pueden añadir productos inactivos al pedido" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} no existe: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} no existe con la consulta <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promocode no existe" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "La dirección no existe" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Valor de fuerza no válido" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "No se puede comprar un pedido vacío." -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Fondos insuficientes para completar el pedido" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1397,187 +1438,190 @@ 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:735 -msgid "invalid payment method" -msgstr "Método de pago no válido" +#: core/models.py:742 +#, 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:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Precio de compra en el momento del pedido" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarios internos para los administradores sobre este producto solicitado" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Comentarios internos" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Notificaciones a los usuarios" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "Representación JSON de los atributos de este elemento" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Atributos ordenados del producto" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Referencia al pedido principal que contiene este producto" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Orden de los padres" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "El producto específico asociado a esta línea de pedido" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Cantidad de este producto específico en el pedido" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Cantidad de productos" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Estado actual de este producto en el pedido" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Estado de la línea de productos" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Identificador interno de la etiqueta del producto" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Nombre de la etiqueta" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Nombre fácil de usar para la etiqueta del producto" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Etiqueta del producto" -#: core/models.py:919 +#: core/models.py:936 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:920 +#: core/models.py:937 msgid "image alt text" msgstr "Texto alternativo de la imagen" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Cargar el archivo de imagen para este producto" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Imagen del producto" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Determina el orden de visualización de las imágenes" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Prioridad de visualización" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "El producto que representa esta imagen" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Imágenes de productos" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:968 +#: core/models.py:985 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:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Importe fijo del descuento" -#: core/models.py:975 +#: core/models.py:992 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:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Porcentaje de descuento" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Fecha de caducidad del promocode" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Hora de fin de validez" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Fecha a partir de la cual es válido este promocode" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Hora de inicio de validez" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Marca de tiempo de uso" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Usuario asignado a este promocode si procede" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Usuario asignado" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Promo code" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1585,184 +1629,192 @@ msgstr "" "Sólo debe definirse un tipo de descuento (importe o porcentaje), pero no " "ambos ni ninguno." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "El código promocional ya ha sido utilizado" -#: core/models.py:1044 +#: core/models.py:1061 #, 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:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Porcentaje de descuento para los productos seleccionados" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Porcentaje de descuento" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Proporcione un nombre único para esta promoción" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Nombre de la promoción" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Descripción de la promoción" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Seleccione los productos incluidos en esta promoción" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Productos incluidos" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promoción" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "El vendedor que suministra este producto dispone de" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Proveedor asociado" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Precio final al cliente después de márgenes" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Precio de venta" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "El producto asociado a esta entrada en stock" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "El precio pagado al vendedor por este producto" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Precio de compra al vendedor" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Cantidad disponible del producto en stock" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Cantidad en stock" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU asignada por el proveedor para identificar el producto" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU del vendedor" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Archivo digital asociado a esta acción, si procede" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Archivo digital" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Entradas en existencias" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Productos que el usuario ha marcado como deseados" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Usuario propietario de esta lista de deseos" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Propietario de Wishlist" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Lista de deseos" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Descargar" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Descargas" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documental" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Sin resolver" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Dirección del cliente" + +#: core/models.py:1270 +msgid "address line" +msgstr "Dirección" + +#: core/models.py:1272 msgid "street" msgstr "Calle" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Distrito" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Ciudad" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Región" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Promo code" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "País" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocalización Punto(Longitud, Latitud)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Respuesta JSON completa del geocodificador para esta dirección" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Respuesta JSON almacenada del servicio de geocodificación" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Dirección" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Direcciones" @@ -2000,7 +2052,7 @@ msgstr "Sólo puede descargar el activo digital una vez" msgid "favicon not found" msgstr "favicon no encontrado" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 e9d8957f..78c51994 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 ae15aa02..5267eed1 100644 --- a/core/locale/fr_FR/LC_MESSAGES/django.po +++ b/core/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Activer les %(verbose_name_plural)s sélectionnés" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Désactiver les %(verbose_name_plural)s sélectionnés" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Valeur de l'attribut" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Valeurs des attributs" @@ -79,19 +79,19 @@ msgstr "Nom" msgid "image" msgstr "Image" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Stocks" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Informations de base" msgid "important dates" msgstr "Important Dates" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Commander un produit" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Commander des produits" @@ -123,7 +123,7 @@ msgstr "Commander des produits" msgid "is business" msgstr "Est l'entreprise" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Config" @@ -175,7 +175,7 @@ msgstr "Momental" msgid "successful" msgstr "Réussite" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache I/O" @@ -199,7 +199,7 @@ msgstr "Obtenir les paramètres exposables de l'application" msgid "send a message to the support team" msgstr "Envoyer un message à l'équipe d'assistance" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Demander une URL CORSée. Seul https est autorisé." @@ -220,158 +220,158 @@ msgstr "" "Acheter une commande en tant qu'entreprise, en utilisant les `produits` " "fournis avec `product_uuid` et `attributs`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Liste de tous les groupes d'attributs (vue simple)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 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:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Créer un groupe d'attributs" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Supprimer un groupe d'attributs" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 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:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Liste de toutes les valeurs d'attributs (vue simple)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 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:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Créer une valeur d'attribut" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Supprimer une valeur d'attribut" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Créer une catégorie" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Supprimer une catégorie" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 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:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 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:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Prix d'achat au moment de la commande" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +381,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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -401,11 +401,25 @@ msgstr "" "Ajoute un produit à une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Ajoute une liste de produits à une commande en utilisant le `product_uuid` " +"et les `attributs` fournis." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -413,85 +427,99 @@ msgstr "" "Supprime un produit d'une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Supprime une liste de produits d'une commande en utilisant le `product_uuid`" +" et les `attributs` fournis." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 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:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Supprimer un produit de la liste de souhaits" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Ajouter plusieurs produits à la liste de souhaits" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -511,59 +539,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "UUID (exact) du produit" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Nom du produit" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(liste) Noms de catégories, insensibles à la casse" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "UUID (exact) de la catégorie" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Noms d'étiquettes, insensibles à la casse" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Prix minimum de l'action" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Prix maximum de l'action" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exact) Uniquement les produits actifs" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Nom de marque" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantité minimale en stock" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exact) Numérique ou physique" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -571,69 +599,69 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Créer un produit" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 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:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Supprimer un produit" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Liste de toutes les adresses" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Récupérer une seule adresse" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Créer une nouvelle adresse" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Supprimer une adresse" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Mise à jour d'une adresse entière" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Mise à jour partielle d'une adresse" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Saisie automatique des adresses" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limite la quantité de résultats, 1 < limite < 10, par défaut : 5" @@ -641,91 +669,104 @@ msgstr "limite la quantité de résultats, 1 < limite < 10, par défaut : 5" msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Clé à rechercher ou à insérer dans la cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Données à stocker dans la mémoire cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Délai d'attente en secondes pour placer les données dans le cache" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Données mises en cache" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Données JSON camélisées provenant de l'URL demandée" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Seuls les URL commençant par http(s):// sont autorisés." -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Ajouter un produit à la commande" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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é" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Supprimer tous les produits de la commande" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Acheter une commande" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Veuillez fournir soit order_uuid, soit order_hr_id - les deux s'excluent " "mutuellement !" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 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}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Effectuer une action sur une liste de produits dans la commande" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Supprimer/Ajouter" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "L'action doit être soit \"ajouter\", soit \"supprimer\" !" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Ajouter un produit à la commande" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} introuvable" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Acheter une commande" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -733,42 +774,42 @@ msgstr "" "Veuillez envoyer les attributs sous la forme d'une chaîne formatée comme " "attr1=valeur1,attr2=valeur2." -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Chaîne d'adresse originale fournie par l'utilisateur" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "La limite doit être comprise entre 1 et 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fonctionne comme un charme" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Attributs" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Attributs groupés" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Catégories" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Marques" @@ -776,8 +817,8 @@ msgstr "Marques" msgid "category image url" msgstr "Catégories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Markup Percentage" @@ -794,48 +835,48 @@ msgstr "" "Prix minimum et maximum pour les produits de cette catégorie, s'ils sont " "disponibles." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Vendeurs" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordonnée Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitude (coordonnée X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valeur d'évaluation de 1 à 10 inclus, ou 0 si elle n'est pas définie." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Représente le retour d'information d'un utilisateur." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "URL de téléchargement pour ce produit de la commande, le cas échéant" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Une liste des produits commandés dans cette commande" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Adresse de facturation" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -843,47 +884,47 @@ msgstr "" "Adresse d'expédition pour cette commande, laisser vide si elle est identique" " à l'adresse de facturation ou si elle n'est pas applicable" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Prix total de la commande" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Quantité totale de produits dans la commande" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Tous les produits de la commande sont-ils numériques ?" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Commandes" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Images du produit" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Catégorie" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Retour d'information" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Marque" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -891,31 +932,31 @@ msgstr "Groupes d'attributs" msgid "quantity" msgstr "Quantité" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Nombre de retours d'information" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produits" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Produits en vente" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Vendeur" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -923,485 +964,489 @@ msgstr "Vendeur" msgid "product" msgstr "Produit" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Produits en liste de souhaits" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Liste de souhaits" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Produits marqués" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Étiquettes du produit" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Nom du projet" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Courriel de l'entreprise" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Nom de l'entreprise" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Adresse de l'entreprise" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Numéro de téléphone de l'entreprise" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', parfois il doit être utilisé à la place de la valeur de " "l'utilisateur de l'hôte" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Utilisateur de l'hôte de messagerie" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Montant maximum du paiement" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Montant minimum pour le paiement" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Code langue" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Nom de la langue" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Drapeau linguistique, s'il existe :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Résultats de la recherche de produits" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Résultats de la recherche de produits" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Parent de ce groupe" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Groupe d'attributs parent" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Nom du groupe d'attributs" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Groupe d'attributs" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Catégorie de cet attribut" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Groupe de cet attribut" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Chaîne" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Entier" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Flotteur" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Booléen" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Tableau" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Objet" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Type de la valeur de l'attribut" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Type de valeur" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Nom de cet attribut" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Nom de l'attribut" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attribut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attribut de cette valeur" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Produit associé" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "La valeur spécifique de cet attribut" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Télécharger une image représentant cette catégorie" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Image de catégorie" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "" "Définir un pourcentage de majoration pour les produits de cette catégorie" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Parent de cette catégorie pour former une structure hiérarchique" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Catégorie de parents" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Nom de la catégorie" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Donnez un nom à cette catégorie" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Ajouter une description détaillée pour cette catégorie" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Description de la catégorie" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Nom de cette marque" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Nom de marque" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Télécharger un logo représentant cette marque" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Petite image de marque" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Télécharger un grand logo représentant cette marque" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Une grande image de marque" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Ajouter une description détaillée de la marque" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Description de la marque" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Catégories facultatives auxquelles cette marque est associée" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Catégories" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Catégorie à laquelle appartient ce produit" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Possibilité d'associer ce produit à une marque" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Étiquettes permettant de décrire ou de regrouper ce produit" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Étiquettes du produit" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indique si ce produit est livré numériquement" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Le produit est-il numérique ?" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Fournir un nom d'identification clair pour le produit" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Nom du produit" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Ajouter une description détaillée du produit" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Description du produit" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Numéro de pièce pour ce produit" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Numéro de pièce" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stocke les informations d'identification et les points d'extrémité " "nécessaires à la communication avec l'API du fournisseur." -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informations sur l'authentification" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" "Définir la majoration pour les produits récupérés auprès de ce fournisseur" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Pourcentage de marge du vendeur" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Nom de ce vendeur" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Nom du vendeur" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Commentaires des utilisateurs sur leur expérience du produit" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Commentaires" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Fait référence au produit spécifique d'une commande sur lequel porte le " "retour d'information." -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Produit de commande apparenté" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Note attribuée par l'utilisateur au produit" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Evaluation du produit" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Retour d'information" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "L'adresse de facturation utilisée pour cette commande" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Code promo optionnel appliqué à cette commande" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Code promo appliqué" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "L'adresse de livraison utilisée pour cette commande" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Adresse de livraison" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Statut actuel de la commande dans son cycle de vie" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Statut de la commande" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "Structure JSON des notifications à afficher aux utilisateurs ; dans " "l'interface d'administration, la vue en tableau est utilisée." -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "Représentation JSON des attributs de cette commande" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "L'utilisateur qui a passé la commande" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Utilisateur" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "L'heure à laquelle la commande a été finalisée." -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Temps d'achat" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Un identifiant lisible par l'homme pour la commande" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "ID lisible par l'homme" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Commande" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Vous ne pouvez pas ajouter des produits inactifs à la commande" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} n'existe pas : {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} n'existe pas avec la requête <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Le code promotionnel n'existe pas" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "L'adresse n'existe pas" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Valeur de force non valide" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Vous ne pouvez pas acheter une commande vide !" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Insuffisance de fonds pour compléter la commande" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1410,189 +1455,193 @@ msgstr "" "informations suivantes : nom du client, courriel du client, numéro de " "téléphone du client" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Méthode de paiement non valide" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Méthode de paiement non valide : {payment_method} de " +"{available_payment_methods} !" -#: core/models.py:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Prix d'achat au moment de la commande" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" "Commentaires internes pour les administrateurs sur ce produit commandé" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Commentaires internes" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Notifications aux utilisateurs" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "Représentation JSON des attributs de cet élément" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Attributs du produit ordonnés" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Référence à l'ordre parent qui contient ce produit" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Ordonnance parentale" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Le produit spécifique associé à cette ligne de commande" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Quantité de ce produit spécifique dans la commande" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Quantité de produits" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Statut actuel de ce produit dans la commande" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Statut de la ligne de produits" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Identifiant interne de l'étiquette du produit" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Nom du jour" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Nom convivial pour l'étiquette du produit" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Étiquette du produit" -#: core/models.py:919 +#: core/models.py:936 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:920 +#: core/models.py:937 msgid "image alt text" msgstr "Texte alt de l'image" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Télécharger le fichier image pour ce produit" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Image du produit" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Détermine l'ordre d'affichage des images" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Priorité à l'affichage" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Le produit que cette image représente" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Images du produit" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Identifiant du code promotionnel" -#: core/models.py:968 +#: core/models.py:985 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:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Montant de l'escompte fixe" -#: core/models.py:975 +#: core/models.py:992 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:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Pourcentage de réduction" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Date d'expiration du code promotionnel" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Heure de fin de validité" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Date à partir de laquelle ce code promotionnel est valable" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Heure de début de validité" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Horodatage de l'utilisation" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Utilisateur assigné à ce code promo, le cas échéant" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Utilisateur assigné" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Code promo" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Codes promotionnels" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1600,186 +1649,194 @@ msgstr "" "Un seul type de remise doit être défini (montant ou pourcentage), mais pas " "les deux ni aucun des deux." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Le code promotionnel a déjà été utilisé" -#: core/models.py:1044 +#: core/models.py:1061 #, 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:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Pourcentage de réduction pour les produits sélectionnés" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Pourcentage de réduction" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Donnez un nom unique à cette promotion" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Nom de la promotion" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Sélectionnez les produits inclus dans cette promotion" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Produits inclus" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promotion" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Le vendeur qui fournit ce stock de produits" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Vendeur associé" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Prix final pour le client après majoration" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Prix de vente" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Le produit associé à cette entrée de stock" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "Le prix payé au vendeur pour ce produit" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Prix d'achat du vendeur" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Quantité disponible du produit en stock" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Quantité en stock" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU attribué par le fournisseur pour identifier le produit" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "UGS du vendeur" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Fichier numérique associé à ce stock, le cas échéant" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Fichier numérique" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Entrées de stock" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Produits que l'utilisateur a marqués comme souhaités" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Utilisateur qui possède cette liste de souhaits" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Propriétaire de la liste de souhaits" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Liste de souhaits" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Télécharger" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Téléchargements" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Non résolu" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Ligne d'adresse du client" + +#: core/models.py:1270 +msgid "address line" +msgstr "Ligne d'adresse" + +#: core/models.py:1272 msgid "street" msgstr "Rue" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "District" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Ville" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Région" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Code postal" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Pays" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Point de géolocalisation (longitude, latitude)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Réponse JSON complète du géocodeur pour cette adresse" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Réponse JSON stockée du service de géocodage" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adresse" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adresses" @@ -2020,7 +2077,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:497 +#: core/viewsets.py:589 #, 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 5f0b5087..8b4925db 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -60,12 +60,12 @@ msgstr "" msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "" @@ -78,19 +78,19 @@ msgstr "" msgid "image" msgstr "" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -110,11 +110,11 @@ msgstr "" msgid "important dates" msgstr "" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "" @@ -122,7 +122,7 @@ msgstr "" msgid "is business" msgstr "" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "" @@ -174,7 +174,7 @@ msgstr "" msgid "successful" msgstr "" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "" @@ -196,7 +196,7 @@ msgstr "" msgid "send a message to the support team" msgstr "" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "" @@ -214,239 +214,259 @@ msgid "" "`product_uuid` and `attributes`." msgstr "" -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: core/docs/drf/viewsets.py:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +msgid "add a list of products to order, quantities will not count" +msgstr "" + +#: core/docs/drf/viewsets.py:202 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:209 -msgid "list all wishlists (simple view)" -msgstr "" - -#: core/docs/drf/viewsets.py:210 -msgid "for non-staff users, only their own wishlists are returned." +#: core/docs/drf/viewsets.py:213 +msgid "remove product from order, quantities will not count" msgstr "" #: core/docs/drf/viewsets.py:214 -msgid "retrieve a single wishlist (detailed view)" +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" msgstr "" -#: core/docs/drf/viewsets.py:218 -msgid "create an wishlist" -msgstr "" - -#: core/docs/drf/viewsets.py:219 -msgid "Doesn't work for non-staff users." +#: core/docs/drf/viewsets.py:222 +msgid "list all wishlists (simple view)" msgstr "" #: core/docs/drf/viewsets.py:223 -msgid "delete an wishlist" +msgid "for non-staff users, only their own wishlists are returned." msgstr "" #: core/docs/drf/viewsets.py:227 -msgid "rewrite an existing wishlist saving non-editables" +msgid "retrieve a single wishlist (detailed view)" msgstr "" #: core/docs/drf/viewsets.py:231 -msgid "rewrite some fields of an existing wishlist saving non-editables" +msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:235 -msgid "add product to wishlist" +#: core/docs/drf/viewsets.py:232 +msgid "Doesn't work for non-staff users." msgstr "" #: core/docs/drf/viewsets.py:236 -msgid "adds a product to an wishlist using the provided `product_uuid`" +msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:241 -msgid "remove product from wishlist" +#: core/docs/drf/viewsets.py:240 +msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:242 -msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "" - -#: core/docs/drf/viewsets.py:247 -msgid "add many products to wishlist" +#: core/docs/drf/viewsets.py:244 +msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" #: core/docs/drf/viewsets.py:248 -msgid "adds many products to an wishlist using the provided `product_uuids`" +msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:253 -msgid "remove many products from wishlist" +#: core/docs/drf/viewsets.py:249 +msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" #: core/docs/drf/viewsets.py:254 +msgid "remove product from wishlist" +msgstr "" + +#: core/docs/drf/viewsets.py:255 +msgid "removes a product from an wishlist using the provided `product_uuid`" +msgstr "" + +#: core/docs/drf/viewsets.py:260 +msgid "add many products to wishlist" +msgstr "" + +#: core/docs/drf/viewsets.py:261 +msgid "adds many products to an wishlist using the provided `product_uuids`" +msgstr "" + +#: core/docs/drf/viewsets.py:266 +msgid "remove many products from wishlist" +msgstr "" + +#: core/docs/drf/viewsets.py:267 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -463,124 +483,124 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: core/docs/drf/viewsets.py:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" @@ -588,129 +608,142 @@ msgstr "" msgid "no search term provided." msgstr "" -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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 "" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "" @@ -718,8 +751,8 @@ msgstr "" msgid "category image url" msgstr "" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "" @@ -731,94 +764,94 @@ msgstr "" msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -826,31 +859,31 @@ msgstr "" msgid "quantity" msgstr "" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -858,829 +891,843 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:459 -msgid "project name" +#: core/graphene/object_types.py:451 +msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:460 -msgid "company email" -msgstr "" - -#: core/graphene/object_types.py:461 -msgid "company name" +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" msgstr "" #: core/graphene/object_types.py:462 -msgid "company address" +msgid "project name" msgstr "" #: core/graphene/object_types.py:463 -msgid "company phone number" +msgid "company email" msgstr "" #: core/graphene/object_types.py:464 -msgid "email from, sometimes it must be used instead of host user value" +msgid "company name" msgstr "" #: core/graphene/object_types.py:465 -msgid "email host user" +msgid "company address" msgstr "" #: core/graphene/object_types.py:466 -msgid "maximum amount for payment" +msgid "company phone number" msgstr "" #: core/graphene/object_types.py:467 -msgid "minimum amount for payment" +msgid "email from, sometimes it must be used instead of host user value" +msgstr "" + +#: core/graphene/object_types.py:468 +msgid "email host user" +msgstr "" + +#: core/graphene/object_types.py:469 +msgid "maximum amount for payment" msgstr "" #: core/graphene/object_types.py:470 +msgid "minimum amount for payment" +msgstr "" + +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 core/models.py:1123 msgid "associated product" msgstr "" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "" -#: core/models.py:423 +#: core/models.py:424 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "" -#: core/models.py:527 +#: core/models.py:531 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:551 +#: core/models.py:555 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 core/models.py:1194 +#: core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:677 +#: core/models.py:683 msgid "invalid force value" msgstr "" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:735 -msgid "invalid payment method" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:788 +#: core/models.py:805 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "" -#: core/models.py:960 +#: core/models.py:977 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "" -#: core/models.py:993 +#: core/models.py:1010 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "" -#: core/models.py:1220 +#: core/models.py:1237 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1232 +#: core/models.py:1249 msgid "documentary" msgstr "" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "" -#: core/models.py:1249 -msgid "street" -msgstr "" - -#: core/models.py:1250 -msgid "district" -msgstr "" - -#: core/models.py:1251 -msgid "city" -msgstr "" - -#: core/models.py:1252 -msgid "region" -msgstr "" - -#: core/models.py:1253 -msgid "postal code" -msgstr "" - -#: core/models.py:1254 -msgid "country" -msgstr "" - -#: core/models.py:1257 -msgid "geolocation point: (longitude, latitude)" -msgstr "" - -#: core/models.py:1260 -msgid "full JSON response from geocoder for this address" -msgstr "" - -#: core/models.py:1262 -msgid "stored JSON response from the geocoding service" -msgstr "" - #: core/models.py:1269 -msgid "address" +msgid "address line for the customer" msgstr "" #: core/models.py:1270 +msgid "address line" +msgstr "" + +#: core/models.py:1272 +msgid "street" +msgstr "" + +#: core/models.py:1273 +msgid "district" +msgstr "" + +#: core/models.py:1274 +msgid "city" +msgstr "" + +#: core/models.py:1275 +msgid "region" +msgstr "" + +#: core/models.py:1276 +msgid "postal code" +msgstr "" + +#: core/models.py:1277 +msgid "country" +msgstr "" + +#: core/models.py:1280 +msgid "geolocation point: (longitude, latitude)" +msgstr "" + +#: core/models.py:1283 +msgid "full JSON response from geocoder for this address" +msgstr "" + +#: core/models.py:1285 +msgid "stored JSON response from the geocoding service" +msgstr "" + +#: core/models.py:1292 +msgid "address" +msgstr "" + +#: core/models.py:1293 msgid "addresses" msgstr "" @@ -1905,7 +1952,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 5e29509b..cc449044 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 352cc2dc..f1062655 100644 --- a/core/locale/it_IT/LC_MESSAGES/django.po +++ b/core/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Attivare il %(verbose_name_plural)s selezionato" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Disattivare il %(verbose_name_plural)s selezionato" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Valore dell'attributo" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Valori degli attributi" @@ -79,19 +79,19 @@ msgstr "Nome" msgid "image" msgstr "Immagine" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Immagini" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Le scorte" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Informazioni di base" msgid "important dates" msgstr "Date importanti" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Ordina il prodotto" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Ordinare i prodotti" @@ -123,7 +123,7 @@ msgstr "Ordinare i prodotti" msgid "is business" msgstr "È Business" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Configurazione" @@ -175,7 +175,7 @@ msgstr "Momentale" msgid "successful" msgstr "Successo" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "I/O della cache" @@ -199,7 +199,7 @@ msgstr "Ottenere i parametri esponibili dell'applicazione" msgid "send a message to the support team" msgstr "Inviate un messaggio al team di assistenza" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Richiedere un URL CORSed. È consentito solo https." @@ -220,159 +220,159 @@ msgstr "" "Acquistare un ordine come azienda, utilizzando i `prodotti` forniti con " "`product_uuid` e `attributi`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Elenco di tutti i gruppi di attributi (vista semplice)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperare un singolo gruppo di attributi (vista dettagliata)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Creare un gruppo di attributi" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Cancellare un gruppo di attributi" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Elenco di tutti i valori degli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperare il valore di un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Creare un valore di attributo" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Cancellare il valore di un attributo" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Creare una categoria" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Eliminare una categoria" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 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:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +382,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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -402,11 +402,25 @@ msgstr "" "Aggiunge un prodotto a un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Aggiunge un elenco di prodotti a un ordine, utilizzando il `product_uuid` e " +"gli `attributi` forniti." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -414,84 +428,97 @@ msgstr "" "Rimuove un prodotto da un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Rimuove un elenco di prodotti da un ordine utilizzando il `product_uuid` e " +"gli `attributi` forniti." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 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:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Rimuovere un prodotto dalla lista dei desideri" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Aggiungere molti prodotti alla lista dei desideri" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -511,60 +538,60 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(esatto) UUID del prodotto" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Nome del prodotto" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "" "(elenco) Nomi di categoria, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(esatto) UUID della categoria" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(elenco) Nomi di tag, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Prezzo minimo delle azioni" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Prezzo massimo del titolo" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(esatto) Solo prodotti attivi" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Nome del marchio" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantità minima di scorte" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(esatto) Prodotto slug" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(esatto) Digitale e fisico" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -572,69 +599,69 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Creare un prodotto" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Riscrivere un prodotto esistente, preservando i campi non modificabili" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Eliminare un prodotto" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Elenco di tutti gli indirizzi" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Recuperare un singolo indirizzo" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Creare un nuovo indirizzo" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Cancellare un indirizzo" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Aggiornare un intero indirizzo" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Aggiornare parzialmente un indirizzo" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Inserimento automatico dell'indirizzo" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la quantità di risultati, 1 < limite < 10, default: 5" @@ -642,90 +669,103 @@ msgstr "limita la quantità di risultati, 1 < limite < 10, default: 5" msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Chiave da cercare o da inserire nella cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Data to store in cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout in secondi per l'inserimento dei dati nella cache" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Dati in cache" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Dati JSON camelizzati dall'URL richiesto" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Sono consentiti solo gli URL che iniziano con http(s)://" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Aggiungere un prodotto all'ordine" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Rimuovere tutti i prodotti dall'ordine" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Acquistare un ordine" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Eseguire un'azione su un elenco di prodotti nell'ordine" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Rimuovi/Aggiungi" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "L'azione deve essere \"aggiungere\" o \"rimuovere\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista dei desideri {wishlist_uuid} non trovata" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Acquistare un ordine" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -733,42 +773,42 @@ msgstr "" "Inviare gli attributi come stringa formattata come " "attr1=valore1,attr2=valore2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Stringa di indirizzo originale fornita dall'utente" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Il limite deve essere compreso tra 1 e 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch: funziona a meraviglia" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Attributi" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Attributi raggruppati" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categorie" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Marche" @@ -776,8 +816,8 @@ msgstr "Marche" msgid "category image url" msgstr "Categorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Percentuale di markup" @@ -793,48 +833,48 @@ msgid "" msgstr "" "Prezzi minimi e massimi per i prodotti di questa categoria, se disponibili." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Venditori" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordinata Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordinata X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Come" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valore di valutazione da 1 a 10, incluso, o 0 se non impostato." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Rappresenta il feedback di un utente." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notifiche" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "URL di download per il prodotto dell'ordine, se applicabile" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Un elenco di prodotti ordinati in questo ordine" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Indirizzo di fatturazione" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -842,47 +882,47 @@ msgstr "" "Indirizzo di spedizione per questo ordine, lasciare in bianco se è uguale " "all'indirizzo di fatturazione o se non è applicabile" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Prezzo totale dell'ordine" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Quantità totale di prodotti in ordine" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Tutti i prodotti sono presenti nell'ordine digitale" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Ordini" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "URL immagine" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Immagini del prodotto" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Feedback" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Marchio" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -890,31 +930,31 @@ msgstr "Gruppi di attributi" msgid "quantity" msgstr "Quantità" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Numero di feedback" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Prodotti" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Codici promozionali" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Prodotti in vendita" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promozioni" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Venditore" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -922,478 +962,482 @@ msgstr "Venditore" msgid "product" msgstr "Prodotto" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Prodotti desiderati" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Liste dei desideri" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Prodotti contrassegnati" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Tag del prodotto" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Nome del progetto" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Email aziendale" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Nome della società" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Indirizzo dell'azienda" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Numero di telefono dell'azienda" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a volte deve essere usato al posto del valore dell'utente host" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Utente host dell'e-mail" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Importo massimo per il pagamento" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Importo minimo per il pagamento" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configurazione" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Codice lingua" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Nome della lingua" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Bandiera della lingua, se esiste :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Risultati della ricerca dei prodotti" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Risultati della ricerca dei prodotti" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Genitore di questo gruppo" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Gruppo di attributi padre" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Nome del gruppo di attributi" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Gruppo di attributi" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Categoria di questo attributo" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Gruppo di questo attributo" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Stringa" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Intero" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Galleggiante" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Booleano" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Oggetto" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Tipo di valore dell'attributo" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Tipo di valore" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Nome dell'attributo" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Nome dell'attributo" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attributo" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attributo di questo valore" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Prodotto associato" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Il valore specifico per questo attributo" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Caricare un'immagine che rappresenti questa categoria" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Categoria immagine" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "" "Definire una percentuale di ricarico per i prodotti di questa categoria" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Genitore di questa categoria per formare una struttura gerarchica" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Categoria di genitori" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Nome della categoria" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Indicare un nome per questa categoria" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Aggiungere una descrizione dettagliata per questa categoria" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Descrizione della categoria" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Nome del marchio" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Nome del marchio" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Caricare un logo che rappresenti questo marchio" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Immagine piccola del marchio" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Caricare un grande logo che rappresenti questo marchio" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Grande immagine del marchio" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Aggiungere una descrizione dettagliata del marchio" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Descrizione del marchio" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Categorie opzionali a cui questo marchio è associato" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categorie" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Categoria a cui appartiene questo prodotto" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Associare facoltativamente questo prodotto a un marchio" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tag che aiutano a descrivere o raggruppare questo prodotto" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Tag del prodotto" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indica se il prodotto è consegnato in formato digitale" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Il prodotto è digitale" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Fornire un nome identificativo chiaro per il prodotto" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Nome del prodotto" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Aggiungere una descrizione dettagliata del prodotto" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Descrizione del prodotto" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Numero di parte per questo prodotto" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Numero di parte" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Memorizza le credenziali e gli endpoint necessari per la comunicazione API " "del fornitore." -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informazioni sull'autenticazione" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Definire il markup per i prodotti recuperati da questo fornitore" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Percentuale di ricarico del fornitore" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Nome del fornitore" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Nome del fornitore" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Commenti degli utenti sulla loro esperienza con il prodotto" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Commenti di feedback" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Riferisce il prodotto specifico in un ordine di cui si tratta il feedback." -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Prodotto correlato all'ordine" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Valutazione del prodotto assegnata dall'utente" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Valutazione del prodotto" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "L'indirizzo di fatturazione utilizzato per questo ordine" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Codice promozionale opzionale applicato a questo ordine" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Codice promozionale applicato" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "L'indirizzo di spedizione utilizzato per questo ordine" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Indirizzo di spedizione" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Stato attuale dell'ordine nel suo ciclo di vita" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Stato dell'ordine" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "Struttura JSON delle notifiche da mostrare agli utenti; nell'interfaccia " "utente dell'amministratore viene utilizzata la visualizzazione a tabella." -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "Rappresentazione JSON degli attributi dell'ordine per questo ordine" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "L'utente che ha effettuato l'ordine" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Utente" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Il timestamp del momento in cui l'ordine è stato finalizzato" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Acquista tempo" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Un identificatore leggibile dall'uomo per l'ordine" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "ID leggibile dall'uomo" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Ordine" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Non è possibile aggiungere all'ordine prodotti inattivi" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} non esiste: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} non esiste con la query <{query}>." -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Il codice promozionale non esiste" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "L'indirizzo non esiste" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Valore di forza non valido" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Non è possibile acquistare un ordine vuoto!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Fondi insufficienti per completare l'ordine" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1402,188 +1446,192 @@ msgstr "" "seguenti informazioni: nome del cliente, e-mail del cliente, numero di " "telefono del cliente" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Metodo di pagamento non valido" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Metodo di pagamento non valido: {payment_method} da " +"{available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Commenti interni per gli amministratori su questo prodotto ordinato" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Commenti interni" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Notifiche degli utenti" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "Rappresentazione JSON degli attributi di questo elemento" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Attributi del prodotto ordinati" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Riferimento all'ordine padre che contiene questo prodotto" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Ordine dei genitori" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Il prodotto specifico associato a questa riga d'ordine" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Quantità di questo prodotto specifico nell'ordine" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Quantità di prodotto" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Stato attuale di questo prodotto nell'ordine" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Stato della linea di prodotti" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Identificatore interno dell'etichetta del prodotto" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Nome del tag" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Nome intuitivo per l'etichetta del prodotto" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Nome del tag" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Etichetta del prodotto" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "" "Fornire un testo alternativo per l'immagine ai fini dell'accessibilità." -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Testo alt dell'immagine" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Caricare il file immagine per questo prodotto" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Immagine del prodotto" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Determina l'ordine di visualizzazione delle immagini" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Priorità del display" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Il prodotto che questa immagine rappresenta" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Immagini del prodotto" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Identificatore del codice promozionale" -#: core/models.py:968 +#: core/models.py:985 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:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Importo fisso dello sconto" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Sconto percentuale applicato se l'importo fisso non viene utilizzato" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Sconto percentuale" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Data di scadenza del codice promozionale" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Tempo di validità finale" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Data a partire dalla quale il codice promozionale è valido" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Ora di inizio validità" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Timestamp d'uso" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Utente assegnato a questo codice promozionale, se applicabile" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Utente assegnato" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Codice promozionale" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Codici promozionali" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1591,184 +1639,192 @@ msgstr "" "È necessario definire un solo tipo di sconto (importo o percentuale), ma non" " entrambi o nessuno." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Il codice promozionale è già stato utilizzato" -#: core/models.py:1044 +#: core/models.py:1061 #, 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:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Percentuale di sconto per i prodotti selezionati" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Percentuale di sconto" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Fornite un nome unico per questa promozione" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Nome della promozione" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Descrizione della promozione" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Selezionare i prodotti inclusi in questa promozione" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Prodotti inclusi" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promozione" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Il venditore che fornisce questo stock di prodotti" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Venditore associato" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Prezzo finale al cliente dopo i ricarichi" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Prezzo di vendita" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Il prodotto associato a questa voce di magazzino" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "Il prezzo pagato al venditore per questo prodotto" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Prezzo di acquisto del fornitore" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Quantità disponibile del prodotto in magazzino" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Quantità in magazzino" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU assegnato dal fornitore per identificare il prodotto" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU del venditore" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "File digitale associato a questo stock, se applicabile" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "File digitale" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Voci di magazzino" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Prodotti che l'utente ha contrassegnato come desiderati" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Utente che possiede questa wishlist" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Proprietario della lista dei desideri" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Lista dei desideri" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Scaricare" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Scaricamento" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentario" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentari" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Non risolto" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Indirizzo del cliente" + +#: core/models.py:1270 +msgid "address line" +msgstr "Linea di indirizzo" + +#: core/models.py:1272 msgid "street" msgstr "Via" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Distretto" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Città" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Regione" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Codice postale" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Paese" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Punto di geolocalizzazione(Longitudine, Latitudine)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Risposta JSON completa di geocoder per questo indirizzo" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Risposta JSON memorizzata dal servizio di geocodifica" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Indirizzo" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Indirizzi" @@ -2007,7 +2063,7 @@ msgstr "È possibile scaricare l'asset digitale una sola volta" msgid "favicon not found" msgstr "favicon non trovata" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 e0d5f5fa..33a1017d 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 e3955f36..0f3e8cf9 100644 --- a/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/core/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -57,12 +57,12 @@ msgstr "選択した %(verbose_name_plural)s をアクティブにする。" msgid "deactivate selected %(verbose_name_plural)s" msgstr "選択された %(verbose_name_plural)s を非アクティブにする。" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "属性値" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "属性値" @@ -75,19 +75,19 @@ msgstr "名称" msgid "image" msgstr "画像" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "画像" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "在庫" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "株式" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -107,11 +107,11 @@ msgstr "基本情報" msgid "important dates" msgstr "重要な日程" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "商品のご注文" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "商品のご注文" @@ -119,7 +119,7 @@ msgstr "商品のご注文" msgid "is business" msgstr "ビジネス" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "コンフィグ" @@ -171,7 +171,7 @@ msgstr "モメンタル" msgid "successful" msgstr "成功" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "キャッシュI/O" @@ -195,7 +195,7 @@ msgstr "アプリケーションの公開可能なパラメータを取得する msgid "send a message to the support team" msgstr "サポートチームにメッセージを送る" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "CORSされたURLを要求する。httpsのみ許可。" @@ -213,141 +213,141 @@ msgid "" "`product_uuid` and `attributes`." msgstr "提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスとして注文を購入する。" -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "すべての属性グループをリストアップ(シンプルビュー)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "単一の属性グループを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "属性グループの作成" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "属性グループの削除" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "すべての属性値をリストアップ(シンプルビュー)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "単一の属性値を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "属性値の作成" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "属性値の削除" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" -#: core/docs/drf/viewsets.py:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "カテゴリーを作成する" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "カテゴリーの削除" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 msgid "rewrite some fields of an existing category saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: core/docs/drf/viewsets.py:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 msgid "for non-staff users, only their own orders are returned." msgstr "スタッフ以外のユーザーについては、自分の注文のみが返却される。" -#: core/docs/drf/viewsets.py:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 msgid "rewrite some fields of an existing order saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: core/docs/drf/viewsets.py:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "注文時の購入価格" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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,100 +356,120 @@ msgstr "" "注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " "が使用された場合、トランザクションが開始されます。" -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "アカウントを作成せずに注文を購入する" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "は、未登録ユーザーの注文購入を確定します。" -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +msgid "add a list of products to order, quantities will not count" +msgstr "数量はカウントされません。" + +#: core/docs/drf/viewsets.py:202 +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 msgid "remove product from order" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +msgid "remove product from order, quantities will not count" +msgstr "注文から商品を削除すると、数量はカウントされません。" + +#: core/docs/drf/viewsets.py:214 +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 msgid "list all wishlists (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 msgid "for non-staff users, only their own wishlists are returned." msgstr "スタッフ以外のユーザーには、自分のウィッシュリストのみが返されます。" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストに商品を追加する。" -#: core/docs/drf/viewsets.py:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "ウィッシュリストから商品を削除する" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" -#: core/docs/drf/viewsets.py:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "ウィッシュリストに多くの商品を追加する" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" -#: core/docs/drf/viewsets.py:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -469,59 +489,59 @@ msgstr "" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" "b64-description=icontains-aGVhdC1jb2xk`。" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(正確には)製品UUID" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(アイコン) 製品名" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(リスト)カテゴリー名、大文字と小文字は区別しない" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(正確には)カテゴリーUUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(リスト) タグ名、大文字と小文字は区別されない" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(最低株価" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(最大株価" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(正確には)アクティブ製品のみ" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(商品名" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(最低在庫量" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(正確には)製品スラッグ" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(正確には)デジタルとフィジカル" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -529,61 +549,61 @@ msgstr "" "カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" "**許可:** uuid, rating, name, slug, created, modified, price, random" -#: core/docs/drf/viewsets.py:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "製品を作る" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "製品を削除する" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "全住所のリスト" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "単一アドレスの取得" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "新しいアドレスを作成する" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "アドレスの削除" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "アドレス全体の更新" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "アドレスの一部更新" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "オートコンプリート住所入力" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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" @@ -591,7 +611,7 @@ 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "結果を制限する, 1 < limit < 10, デフォルト: 5" @@ -599,129 +619,142 @@ msgstr "結果を制限する, 1 < limit < 10, デフォルト: 5" msgid "no search term provided." msgstr "検索語はありません。" -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "キャッシュを探すキー、またはキャッシュにセットするキー" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "キャッシュに保存するデータ" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "キャッシュにデータをセットするタイムアウト時間(秒" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "キャッシュ・データ" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "リクエストされたURLからキャメル化されたJSONデータ" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://で始まるURLのみが許可されます。" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "注文に商品を追加する" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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}が見つかりません" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "注文からすべての商品を削除する" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "注文する" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "注文商品のリストに対してアクションを実行する" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "削除/追加" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "アクションは \"add \"か \"remove \"のどちらかでなければならない!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "注文に商品を追加する" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "ウィッシュリスト{wishlist_uuid}が見つかりません。" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "注文する" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "ユーザーが提供したオリジナルのアドレス文字列" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} は存在しません:{uuid} は存在しません。" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "上限は1から10の間でなければならない" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 魅力のように動作" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "属性" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "グループ化された属性" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "属性のグループ" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "カテゴリー" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "ブランド" @@ -729,8 +762,8 @@ msgstr "ブランド" msgid "category image url" msgstr "カテゴリー" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "マークアップ率" @@ -743,94 +776,94 @@ msgid "" "minimum and maximum prices for products in this category, if available." msgstr "このカテゴリーの商品の最低価格と最高価格がある場合。" -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "ベンダー" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "緯度(Y座標)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "経度(X座標)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "どのように" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1から10までの評価値(設定されていない場合は0)。" -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "ユーザーからのフィードバックを表す。" -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "お知らせ" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "該当する場合は、この注文商品のダウンロードURLを入力してください。" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "注文商品のリスト" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "請求先住所" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "請求先住所と同じ場合、または該当しない場合は空白にしてください。" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "この注文の合計金額" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "注文商品の総数量" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "ご注文の商品はすべてデジタルですか?" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "受注状況" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "画像URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "製品画像" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "カテゴリー" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "フィードバック" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "ブランド" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "属性グループ" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -838,31 +871,31 @@ msgstr "属性グループ" msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "フィードバック数" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "製品紹介" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "プロモコード" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "販売商品" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "プロモーション" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "ベンダー" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -870,831 +903,845 @@ msgstr "ベンダー" msgid "product" msgstr "製品" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "ウィッシュリスト掲載商品" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "ウィッシュリスト" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "タグ別アーカイブ" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "商品タグ" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "プロジェクト名" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "会社Eメール" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "会社名" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "会社住所" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "会社電話番号" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from' は、ホストユーザの値の代わりに使用されることがあります。" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "メールホストユーザー" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "支払限度額" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "最低支払額" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "構成" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "言語コード" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "言語名" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "言語フラグがある場合 :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "サポートされている言語のリストを取得する" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "製品検索結果" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "製品検索結果" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "このグループの親" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "親属性グループ" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "属性グループ名" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "属性グループ" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "この属性のカテゴリー" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "この属性のグループ" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "ストリング" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "整数" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "フロート" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "ブーリアン" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "配列" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "対象" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "属性値のタイプ" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "値の種類" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "この属性の名前" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "属性名" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "属性" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "この値の属性" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "関連製品" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "この属性の具体的な値" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "このカテゴリーを表す画像をアップロードする" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "カテゴリーイメージ" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "このカテゴリの商品のマークアップ率を定義する" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "階層構造を形成するこのカテゴリの親" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "親カテゴリー" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "カテゴリー名" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "このカテゴリの名前を入力してください。" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "このカテゴリの詳細説明を追加する" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "カテゴリー説明" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "ブランド名" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "ブランド名" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "このブランドを代表するロゴをアップロードする" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "小さなブランドイメージ" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "このブランドを象徴する大きなロゴをアップロードする" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "大きなブランドイメージ" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "ブランドの詳細な説明を加える" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "ブランド説明" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "このブランドが関連するオプション・カテゴリー" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "カテゴリー" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "この製品が属するカテゴリ" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "オプションでこの製品をブランドと関連付ける" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "この商品の説明やグループ分けに役立つタグ" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "商品タグ" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "この製品がデジタル配信されるかどうかを示す" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "製品はデジタルか" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "製品の明確な識別名を提供する" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "商品名" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "商品の詳細説明を追加する" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "商品説明" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "この製品の品番" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "品番" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "ベンダーのAPI通信に必要な認証情報とエンドポイントを保存する。" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "認証情報" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "このベンダーから取得した商品のマークアップを定義する。" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "ベンダーのマークアップ率" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "このベンダーの名前" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "ベンダー名" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "ユーザーから寄せられた製品使用体験に関するコメント" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "フィードバック・コメント" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "このフィードバックが対象としている注文の特定の製品を参照する。" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "関連注文商品" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "ユーザーによる製品の評価" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "製品評価" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "フィードバック" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "この注文に使用される請求先住所" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "この注文に適用されるプロモコード" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "プロモーションコード適用" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "この注文に使用された配送先住所" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "配送先住所" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "ライフサイクルにおける現在の注文状況" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "注文状況" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "この注文の注文属性のJSON表現" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "注文を行ったユーザー" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "ユーザー" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "注文が確定したタイムスタンプ" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "時間を買う" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "オーダーの人間が読み取り可能な識別子。" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "人間が読めるID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "オーダー" -#: core/models.py:527 +#: core/models.py:531 msgid "a user must have only one pending order at a time" msgstr "ユーザーは一度に1つの未決注文しか持つことができません!" -#: core/models.py:551 +#: core/models.py:555 msgid "you cannot add products to an order that is not a pending one" msgstr "保留中の注文以外の注文に商品を追加することはできません。" -#: core/models.py:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "アクティブでない商品を注文に追加することはできません。" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name}が存在しません:{product_uuid}が存在しません。" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 msgid "you cannot remove products from an order that is not a pending one" msgstr "保留中の注文以外の注文から商品を削除することはできません。" -#: core/models.py:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "クエリ<{query}>で{name}が存在しません。" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "プロモコードが存在しない" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "配送先住所が指定された現物商品のみ購入可能!" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "アドレスが存在しない" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "現在ご購入いただけません。数分後にもう一度お試しください。" -#: core/models.py:677 +#: core/models.py:683 msgid "invalid force value" msgstr "無効なフォース値" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "空注文はできません!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "注文を完了するための資金不足" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "無効な支払い方法" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "支払方法が無効です:{available_payment_methods}からの{payment_method}が無効です!" -#: core/models.py:788 +#: core/models.py:805 msgid "the price paid by the customer for this product at purchase time" msgstr "この商品の購入時に顧客が支払った価格" -#: core/models.py:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "注文時の購入価格" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "この注文商品に関する管理者への内部コメント" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "社内コメント" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "ユーザー通知" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "このアイテムの属性のJSON表現" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "製品属性の順序" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "この商品を含む親注文への参照" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "親注文" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "この注文ラインに関連する特定の製品" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "注文に含まれる特定の商品の数量" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "製品数量" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "この商品の現在のご注文状況" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "製品ラインの状況" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "商品タグの内部タグ識別子" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "タグ名" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "商品タグのユーザーフレンドリーな名前" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "タグ表示名" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "商品タグ" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "アクセシビリティのために、画像に代替テキストを提供する。" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "画像のaltテキスト" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "この商品の画像ファイルをアップロードする" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "商品画像" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "画像の表示順を決める" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "表示優先度" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "この画像が表す製品" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "商品画像" -#: core/models.py:960 +#: core/models.py:977 msgid "unique code used by a user to redeem a discount" msgstr "ユーザーが割引を利用する際に使用する固有のコード" -#: core/models.py:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "プロモコード識別子" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "パーセントを使用しない場合に適用される固定割引額" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "固定割引額" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "定額を使用しない場合に適用される割引率" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "割引率" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "プロモコードの有効期限が切れるタイムスタンプ" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "終了有効時間" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "このプロモコードが有効なタイムスタンプ" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "開始有効時間" -#: core/models.py:993 +#: core/models.py:1010 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "プロモコードが使用されたタイムスタンプ、未使用の場合は空白" -#: core/models.py:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "使用タイムスタンプ" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "該当する場合、このプロモコードに割り当てられたユーザー" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "担当ユーザー" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "プロモコード" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "プロモコード" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "プロモコードはすでに使用されています" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "プロモコード {self.uuid} の割引タイプが無効です。" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "選択した商品の割引率" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "割引率" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "このプロモーションのユニークな名前を入力してください。" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "プロモーション名" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "プロモーション内容" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "キャンペーン対象商品をお選びください。" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "含まれる製品" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "プロモーション" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "この製品の在庫を供給しているベンダー" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "関連ベンダー" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "マークアップ後の顧客への最終価格" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "販売価格" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "このストックエントリーに関連する製品" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "この製品に対してベンダーに支払われた価格" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "ベンダーの購入価格" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "在庫数" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "在庫数" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "製品を識別するためにベンダーが割り当てたSKU" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "ベンダーのSKU" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "この銘柄に関連するデジタルファイル(該当する場合" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "デジタルファイル" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "ストックエントリー" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "ユーザーが欲しいとマークした商品" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "このウィッシュリストを所有しているユーザー" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "ウィッシュリストのオーナー" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "ウィッシュリスト" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "ダウンロード" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "ダウンロード" -#: core/models.py:1220 +#: core/models.py:1237 msgid "you can not download a digital asset for a non-finished order" msgstr "未完成の注文のデジタル資産をダウンロードすることはできません。" -#: core/models.py:1232 +#: core/models.py:1249 msgid "documentary" msgstr "ドキュメンタリー" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "ドキュメンタリー" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "未解決" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "お客様の住所" + +#: core/models.py:1270 +msgid "address line" +msgstr "住所" + +#: core/models.py:1272 msgid "street" msgstr "ストリート" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "地区" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "都市" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "地域" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "郵便番号" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "国名" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "ジオロケーションポイント(経度、緯度)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "この住所に対するジオコーダーからの完全なJSON応答" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "ジオコーディング・サービスからの保存されたJSONレスポンス" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "住所" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "住所" @@ -1919,7 +1966,7 @@ msgstr "デジタルアセットのダウンロードは1回限りです。" msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 5f0b5087..8b4925db 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -60,12 +60,12 @@ msgstr "" msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "" @@ -78,19 +78,19 @@ msgstr "" msgid "image" msgstr "" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -110,11 +110,11 @@ msgstr "" msgid "important dates" msgstr "" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "" @@ -122,7 +122,7 @@ msgstr "" msgid "is business" msgstr "" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "" @@ -174,7 +174,7 @@ msgstr "" msgid "successful" msgstr "" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "" @@ -196,7 +196,7 @@ msgstr "" msgid "send a message to the support team" msgstr "" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "" @@ -214,239 +214,259 @@ msgid "" "`product_uuid` and `attributes`." msgstr "" -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: core/docs/drf/viewsets.py:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +msgid "add a list of products to order, quantities will not count" +msgstr "" + +#: core/docs/drf/viewsets.py:202 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:209 -msgid "list all wishlists (simple view)" -msgstr "" - -#: core/docs/drf/viewsets.py:210 -msgid "for non-staff users, only their own wishlists are returned." +#: core/docs/drf/viewsets.py:213 +msgid "remove product from order, quantities will not count" msgstr "" #: core/docs/drf/viewsets.py:214 -msgid "retrieve a single wishlist (detailed view)" +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" msgstr "" -#: core/docs/drf/viewsets.py:218 -msgid "create an wishlist" -msgstr "" - -#: core/docs/drf/viewsets.py:219 -msgid "Doesn't work for non-staff users." +#: core/docs/drf/viewsets.py:222 +msgid "list all wishlists (simple view)" msgstr "" #: core/docs/drf/viewsets.py:223 -msgid "delete an wishlist" +msgid "for non-staff users, only their own wishlists are returned." msgstr "" #: core/docs/drf/viewsets.py:227 -msgid "rewrite an existing wishlist saving non-editables" +msgid "retrieve a single wishlist (detailed view)" msgstr "" #: core/docs/drf/viewsets.py:231 -msgid "rewrite some fields of an existing wishlist saving non-editables" +msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:235 -msgid "add product to wishlist" +#: core/docs/drf/viewsets.py:232 +msgid "Doesn't work for non-staff users." msgstr "" #: core/docs/drf/viewsets.py:236 -msgid "adds a product to an wishlist using the provided `product_uuid`" +msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:241 -msgid "remove product from wishlist" +#: core/docs/drf/viewsets.py:240 +msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:242 -msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "" - -#: core/docs/drf/viewsets.py:247 -msgid "add many products to wishlist" +#: core/docs/drf/viewsets.py:244 +msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" #: core/docs/drf/viewsets.py:248 -msgid "adds many products to an wishlist using the provided `product_uuids`" +msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:253 -msgid "remove many products from wishlist" +#: core/docs/drf/viewsets.py:249 +msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" #: core/docs/drf/viewsets.py:254 +msgid "remove product from wishlist" +msgstr "" + +#: core/docs/drf/viewsets.py:255 +msgid "removes a product from an wishlist using the provided `product_uuid`" +msgstr "" + +#: core/docs/drf/viewsets.py:260 +msgid "add many products to wishlist" +msgstr "" + +#: core/docs/drf/viewsets.py:261 +msgid "adds many products to an wishlist using the provided `product_uuids`" +msgstr "" + +#: core/docs/drf/viewsets.py:266 +msgid "remove many products from wishlist" +msgstr "" + +#: core/docs/drf/viewsets.py:267 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -463,124 +483,124 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: core/docs/drf/viewsets.py:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" @@ -588,129 +608,142 @@ msgstr "" msgid "no search term provided." msgstr "" -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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 "" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "" @@ -718,8 +751,8 @@ msgstr "" msgid "category image url" msgstr "" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "" @@ -731,94 +764,94 @@ msgstr "" msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -826,31 +859,31 @@ msgstr "" msgid "quantity" msgstr "" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -858,829 +891,843 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:459 -msgid "project name" +#: core/graphene/object_types.py:451 +msgid "tagged products" msgstr "" -#: core/graphene/object_types.py:460 -msgid "company email" -msgstr "" - -#: core/graphene/object_types.py:461 -msgid "company name" +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" msgstr "" #: core/graphene/object_types.py:462 -msgid "company address" +msgid "project name" msgstr "" #: core/graphene/object_types.py:463 -msgid "company phone number" +msgid "company email" msgstr "" #: core/graphene/object_types.py:464 -msgid "email from, sometimes it must be used instead of host user value" +msgid "company name" msgstr "" #: core/graphene/object_types.py:465 -msgid "email host user" +msgid "company address" msgstr "" #: core/graphene/object_types.py:466 -msgid "maximum amount for payment" +msgid "company phone number" msgstr "" #: core/graphene/object_types.py:467 -msgid "minimum amount for payment" +msgid "email from, sometimes it must be used instead of host user value" +msgstr "" + +#: core/graphene/object_types.py:468 +msgid "email host user" +msgstr "" + +#: core/graphene/object_types.py:469 +msgid "maximum amount for payment" msgstr "" #: core/graphene/object_types.py:470 +msgid "minimum amount for payment" +msgstr "" + +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 core/models.py:1123 msgid "associated product" msgstr "" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "" -#: core/models.py:423 +#: core/models.py:424 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "" -#: core/models.py:527 +#: core/models.py:531 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:551 +#: core/models.py:555 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 core/models.py:1194 +#: core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:677 +#: core/models.py:683 msgid "invalid force value" msgstr "" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:735 -msgid "invalid payment method" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -#: core/models.py:788 +#: core/models.py:805 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "" -#: core/models.py:960 +#: core/models.py:977 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "" -#: core/models.py:993 +#: core/models.py:1010 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "" -#: core/models.py:1220 +#: core/models.py:1237 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1232 +#: core/models.py:1249 msgid "documentary" msgstr "" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "" -#: core/models.py:1249 -msgid "street" -msgstr "" - -#: core/models.py:1250 -msgid "district" -msgstr "" - -#: core/models.py:1251 -msgid "city" -msgstr "" - -#: core/models.py:1252 -msgid "region" -msgstr "" - -#: core/models.py:1253 -msgid "postal code" -msgstr "" - -#: core/models.py:1254 -msgid "country" -msgstr "" - -#: core/models.py:1257 -msgid "geolocation point: (longitude, latitude)" -msgstr "" - -#: core/models.py:1260 -msgid "full JSON response from geocoder for this address" -msgstr "" - -#: core/models.py:1262 -msgid "stored JSON response from the geocoding service" -msgstr "" - #: core/models.py:1269 -msgid "address" +msgid "address line for the customer" msgstr "" #: core/models.py:1270 +msgid "address line" +msgstr "" + +#: core/models.py:1272 +msgid "street" +msgstr "" + +#: core/models.py:1273 +msgid "district" +msgstr "" + +#: core/models.py:1274 +msgid "city" +msgstr "" + +#: core/models.py:1275 +msgid "region" +msgstr "" + +#: core/models.py:1276 +msgid "postal code" +msgstr "" + +#: core/models.py:1277 +msgid "country" +msgstr "" + +#: core/models.py:1280 +msgid "geolocation point: (longitude, latitude)" +msgstr "" + +#: core/models.py:1283 +msgid "full JSON response from geocoder for this address" +msgstr "" + +#: core/models.py:1285 +msgid "stored JSON response from the geocoding service" +msgstr "" + +#: core/models.py:1292 +msgid "address" +msgstr "" + +#: core/models.py:1293 msgid "addresses" msgstr "" @@ -1905,7 +1952,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 710fbbdc..347a3d31 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 a5f6b935..eb534c88 100644 --- a/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/core/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -59,12 +59,12 @@ msgstr "Activeer geselecteerde %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactiveer geselecteerde %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Attribuut Waarde" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Attribuutwaarden" @@ -77,19 +77,19 @@ msgstr "Naam" msgid "image" msgstr "Afbeelding" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Afbeeldingen" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Voorraad" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Aandelen" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -109,11 +109,11 @@ msgstr "Basisinformatie" msgid "important dates" msgstr "Belangrijke data" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Product bestellen" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Producten bestellen" @@ -121,7 +121,7 @@ msgstr "Producten bestellen" msgid "is business" msgstr "Is zakelijk" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Config" @@ -173,7 +173,7 @@ msgstr "Momental" msgid "successful" msgstr "Succesvol" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache I/O" @@ -197,7 +197,7 @@ msgstr "Verkrijg de blootstelbare parameters van de applicatie" msgid "send a message to the support team" msgstr "Stuur een bericht naar het ondersteuningsteam" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Vraag een CORSed URL op. Alleen https toegestaan." @@ -218,158 +218,158 @@ msgstr "" "Koop een bestelling in als een bedrijf, met behulp van de meegeleverde " "`producten` met `product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Alle attribuutgroepen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Een enkele groep kenmerken ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Een attribuutgroep maken" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Een attribuutgroep verwijderen" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Een bestaande attribuutgroep herschrijven en niet-wijzigbare attributen " "opslaan" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Alle attribuutwaarden weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Een waarde voor een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Een attribuutwaarde maken" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Een attribuutwaarde verwijderen" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Een categorie maken" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Een categorie verwijderen" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Aankoopprijs bij bestelling" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +379,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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -401,11 +401,25 @@ msgstr "" "Voegt een product toe aan een bestelling met de opgegeven `product_uuid` en " "`attributen`." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +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 msgid "remove product from order" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -413,85 +427,97 @@ msgstr "" "Verwijdert een product uit een bestelling met behulp van de opgegeven " "`product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Verwijdert een lijst met producten uit een bestelling met behulp van de " +"opgegeven `product_uuid` en `attributen`." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Een product uit het verlanglijstje verwijderen" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Veel producten toevoegen aan het verlanglijstje" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -511,59 +537,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(exacte) UUID van product" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(pictogrammen) Productnaam" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(lijst) Categorienamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(exacte) UUID van categorie" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(lijst) Labelnamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Minimale aandelenprijs" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maximale aandelenprijs" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exact) Alleen actieve producten" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Merknaam" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimumvoorraad" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(exacte) productnaam" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exact) Digitaal vs. fysiek" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -571,70 +597,70 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Een product maken" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 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:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Een product verwijderen" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Vermeld alle adressen" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Een enkel adres ophalen" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Een nieuw adres maken" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Een adres verwijderen" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Een heel adres bijwerken" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Een adres gedeeltelijk bijwerken" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Automatische adresinvoer" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "beperkt de hoeveelheid resultaten, 1 < limiet < 10, standaard: 5" @@ -642,130 +668,143 @@ msgstr "beperkt de hoeveelheid resultaten, 1 < limiet < 10, standaard: 5" msgid "no search term provided." msgstr "Geen zoekterm opgegeven." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Sleutel om te zoeken of te plaatsen in de cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Gegevens om op te slaan in de cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Time-out in seconden om de gegevens in de cache te plaatsen" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Gecachte gegevens" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-gegevens van de opgevraagde URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Een product aan de bestelling toevoegen" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Alle producten uit de bestelling verwijderen" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Een bestelling kopen" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Een actie uitvoeren op een lijst met producten in de bestelling" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Verwijderen/toevoegen" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "De actie moet \"toevoegen\" of \"verwijderen\" zijn!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Een product aan de bestelling toevoegen" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Verlanglijst {wishlist_uuid} niet gevonden" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Een bestelling kopen" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "" "Stuur de attributen als de string opgemaakt als attr1=waarde1,attr2=waarde2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Originele adresstring geleverd door de gebruiker" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Limiet moet tussen 1 en 10 liggen" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - werkt als een charme" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Attributen" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Gegroepeerde kenmerken" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Groepen van kenmerken" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categorieën" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Merken" @@ -773,8 +812,8 @@ msgstr "Merken" msgid "category image url" msgstr "Categorieën" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Opwaarderingspercentage" @@ -791,48 +830,48 @@ msgstr "" "Minimale en maximale prijzen voor producten in deze categorie, indien " "beschikbaar." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Verkopers" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Breedtegraad (Y-coördinaat)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Lengtegraad (X-coördinaat)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Hoe" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Waarderingswaarde van 1 tot en met 10, of 0 indien niet ingesteld." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Vertegenwoordigt feedback van een gebruiker." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Meldingen" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Download url voor dit bestelproduct indien van toepassing" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Een lijst met bestelde producten in deze bestelling" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Factuuradres" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -840,47 +879,47 @@ msgstr "" "Verzendadres voor deze bestelling, leeg laten als dit hetzelfde is als het " "factuuradres of als dit niet van toepassing is" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Totale prijs van deze bestelling" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Totale hoeveelheid producten in bestelling" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Zijn alle producten in de bestelling digitaal" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Bestellingen" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Afbeelding URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Afbeeldingen van het product" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Reacties" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Merk" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Attribuutgroepen" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -888,31 +927,31 @@ msgstr "Attribuutgroepen" msgid "quantity" msgstr "Hoeveelheid" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Aantal terugkoppelingen" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Producten" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Producten te koop" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promoties" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Verkoper" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -920,480 +959,484 @@ msgstr "Verkoper" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Gewenste producten" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Verlanglijst" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Getagde producten" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Product tags" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Naam project" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Bedrijf E-mail" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Bedrijfsnaam" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Adres" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Telefoonnummer bedrijf" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "e-mail van', soms moet deze worden gebruikt in plaats van de " "hostgebruikerswaarde" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Gebruiker e-mail hosten" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Maximumbedrag voor betaling" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Minimumbedrag voor betaling" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configuratie" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Taalcode" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Naam van de taal" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Taalvlag, indien aanwezig :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Producten zoekresultaten" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Zoekresultaten" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Ouder van deze groep" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Ouderattribuutgroep" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Naam attribuutgroep" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Attribuutgroep" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Categorie van dit kenmerk" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Groep van dit kenmerk" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "String" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Integer" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Vlotter" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Booleaans" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Object" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Type waarde van het kenmerk" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Waardetype" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Naam van dit kenmerk" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Naam attribuut" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Attribuut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Attribuut van deze waarde" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Bijbehorend product" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "De specifieke waarde voor dit kenmerk" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Upload een afbeelding die deze categorie vertegenwoordigt" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Categorie afbeelding" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Definieer een toeslagpercentage voor producten in deze categorie" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Ouder van deze categorie om een hiërarchische structuur te vormen" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Oudercategorie" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Naam categorie" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Geef deze categorie een naam" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Voeg een gedetailleerde beschrijving toe voor deze categorie" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Categorie beschrijving" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Naam van dit merk" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Merknaam" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Upload een logo dat dit merk vertegenwoordigt" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Klein merkimago" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Upload een groot logo dat dit merk vertegenwoordigt" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Groot merkimago" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Een gedetailleerde beschrijving van het merk toevoegen" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Merknaam" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Optionele categorieën waarmee dit merk wordt geassocieerd" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categorieën" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Categorie waartoe dit product behoort" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Dit product optioneel koppelen aan een merk" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tags die dit product helpen beschrijven of groeperen" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Product tags" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Geeft aan of dit product digitaal wordt geleverd" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Is product digitaal" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Zorg voor een duidelijke identificerende naam voor het product" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Naam product" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Voeg een gedetailleerde beschrijving van het product toe" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Productbeschrijving" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Onderdeelnummer voor dit product" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Onderdeelnummer" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Slaat referenties en eindpunten op die vereist zijn voor API-communicatie " "van de verkoper" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Authenticatie-info" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieer de opmaak voor producten die zijn opgehaald bij deze leverancier" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Verkoper winstpercentage" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Naam van deze verkoper" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Naam verkoper" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Opmerkingen van gebruikers over hun ervaring met het product" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Reacties" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Verwijst naar het specifieke product in een bestelling waar deze feedback " "over gaat" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Gerelateerd product bestellen" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Door de gebruiker toegekende waardering voor het product" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Productbeoordeling" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Het factuuradres dat voor deze bestelling is gebruikt" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Optionele promotiecode toegepast op deze bestelling" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Kortingscode toegepast" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Het verzendadres dat voor deze bestelling is gebruikt" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Verzendadres" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Huidige status van de order in zijn levenscyclus" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Bestelstatus" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON-structuur van meldingen om weer te geven aan gebruikers, in admin UI " "wordt de tabelweergave gebruikt" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON-weergave van bestelattributen voor deze bestelling" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "De gebruiker die de bestelling heeft geplaatst" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Gebruiker" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "De tijdstempel waarop de bestelling is afgerond" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Tijd kopen" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Een menselijk leesbare identificatiecode voor de bestelling" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "menselijk leesbare ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Bestel" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} bestaat niet: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} bestaat niet met query <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Promocode bestaat niet" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "Je kunt alleen fysieke producten kopen met opgegeven verzendadres!" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Adres bestaat niet" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Ongeldige krachtwaarde" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Je kunt geen lege bestelling kopen!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Onvoldoende fondsen om de bestelling te voltooien" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1401,188 +1444,192 @@ msgstr "" "u niet kunt kopen zonder registratie, geef dan de volgende informatie: " "klantnaam, e-mail klant, telefoonnummer klant" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Ongeldige betaalmethode" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Ongeldige betalingsmethode: {payment_method} van " +"{available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Aankoopprijs bij bestelling" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "Interne opmerkingen voor beheerders over dit bestelde product" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Interne opmerkingen" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Meldingen van gebruikers" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON weergave van de attributen van dit item" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Geordende producteigenschappen" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Verwijzing naar de bovenliggende bestelling die dit product bevat" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Ouderlijk bevel" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Het specifieke product dat bij deze bestelregel hoort" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Hoeveelheid van dit specifieke product in de bestelling" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Hoeveelheid product" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Huidige status van dit product in de bestelling" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Status productlijn" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Interne tagidentifier voor de producttag" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Tag naam" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Gebruiksvriendelijke naam voor de producttag" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Tag weergavenaam" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Productlabel" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "Geef alternatieve tekst voor de afbeelding voor toegankelijkheid" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Alt-tekst afbeelding" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Upload het afbeeldingsbestand voor dit product" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Product afbeelding" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Bepaalt de volgorde waarin afbeeldingen worden weergegeven" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Prioriteit weergeven" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Het product dat deze afbeelding vertegenwoordigt" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Product afbeeldingen" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Promo code identificatie" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "" "Vast kortingsbedrag dat wordt toegepast als percentage niet wordt gebruikt" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Vast kortingsbedrag" -#: core/models.py:975 +#: core/models.py:992 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:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Kortingspercentage" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Tijdstempel wanneer de promocode verloopt" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Geldigheidsduur einde" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Tijdstempel vanaf wanneer deze promocode geldig is" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Begin geldigheidsduur" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Gebruik tijdstempel" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Gebruiker toegewezen aan deze promocode indien van toepassing" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Toegewezen gebruiker" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Kortingscode" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Actiecodes" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1590,185 +1637,193 @@ msgstr "" "Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," " maar niet beide of geen van beide." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Promocode is al gebruikt" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ongeldig kortingstype voor promocode {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Kortingspercentage voor de geselecteerde producten" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Kortingspercentage" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Geef deze promotie een unieke naam" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Naam promotie" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Promotie beschrijving" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Selecteer welke producten onder deze promotie vallen" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Meegeleverde producten" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promotie" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "De verkoper die dit product levert" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Geassocieerde verkoper" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Eindprijs voor de klant na winstmarges" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Verkoopprijs" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Het product dat bij deze voorraadvermelding hoort" -#: core/models.py:1113 +#: core/models.py:1130 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:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Aankoopprijs verkoper" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Beschikbare hoeveelheid van het product in voorraad" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Hoeveelheid op voorraad" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Door de verkoper toegewezen SKU om het product te identificeren" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "Verkoper SKU" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Digitaal bestand gekoppeld aan deze voorraad indien van toepassing" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Digitaal bestand" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Voorraadboekingen" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Producten die de gebruiker als gewenst heeft gemarkeerd" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Gebruiker die eigenaar is van deze verlanglijst" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Eigenaar verlanglijstje" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Verlanglijst" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Downloaden" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Downloads" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Onopgelost" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Adresregel voor de klant" + +#: core/models.py:1270 +msgid "address line" +msgstr "Adresregel" + +#: core/models.py:1272 msgid "street" msgstr "Straat" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "District" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Stad" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Regio" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Postcode" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Land" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocatie Punt (lengtegraad, breedtegraad)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Volledig JSON-antwoord van geocoder voor dit adres" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Opgeslagen JSON-antwoord van de geocoderingsservice" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adres" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adressen" @@ -2007,7 +2062,7 @@ msgstr "U kunt het digitale goed maar één keer downloaden" msgid "favicon not found" msgstr "favicon niet gevonden" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 f932adc6..d845ae90 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 e2965c15..b505b9bf 100644 --- a/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/core/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Aktywuj wybrane %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezaktywacja wybranych %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Wartość atrybutu" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Wartości atrybutów" @@ -79,19 +79,19 @@ msgstr "Nazwa" msgid "image" msgstr "Obraz" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Obrazy" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stan magazynowy" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Akcje" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Podstawowe informacje" msgid "important dates" msgstr "Ważne daty" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Zamów produkt" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Zamawianie produktów" @@ -123,7 +123,7 @@ msgstr "Zamawianie produktów" msgid "is business" msgstr "Czy biznes" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Konfiguracja" @@ -175,7 +175,7 @@ msgstr "Momental" msgid "successful" msgstr "Udany" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Pamięć podręczna we/wy" @@ -199,7 +199,7 @@ msgstr "Uzyskaj dostępne parametry aplikacji" msgid "send a message to the support team" msgstr "Wyślij wiadomość do zespołu wsparcia" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Żądanie adresu URL CORSed. Dozwolony jest tylko protokół https." @@ -219,158 +219,158 @@ msgstr "" "Kup zamówienie jako firma, używając dostarczonych `products` z " "`product_uuid` i `attributes`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Lista wszystkich grup atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Pobieranie pojedynczej grupy atrybutów (widok szczegółowy)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Tworzenie grupy atrybutów" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Usuwanie grupy atrybutów" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Lista wszystkich wartości atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Pobieranie wartości pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Tworzenie wartości atrybutu" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Usuwanie wartości atrybutu" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Utwórz kategorię" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Usuwanie kategorii" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Cena zakupu w momencie zamówienia" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +380,19 @@ msgstr "" "finalizowany przy użyciu salda użytkownika; Jeśli użyto `force_payment`, " "transakcja jest inicjowana." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "zakup zamówienia bez tworzenia konta" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizuje zakup zamówienia dla niezarejestrowanego użytkownika." -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -400,11 +400,23 @@ msgstr "" "Dodaje produkt do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Dodaje listę produktów do zamówienia przy użyciu podanych `product_uuid` i " +"`attributes`." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -412,81 +424,93 @@ msgstr "" "Usuwa produkt z zamówienia przy użyciu podanego `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Usuwa listę produktów z zamówienia przy użyciu podanych `product_uuid` i " +"`attributes`." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Usunięcie produktu z listy życzeń" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Dodaj wiele produktów do listy życzeń" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -506,59 +530,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(dokładny) UUID produktu" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(ikony) Nazwa produktu" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(lista) Nazwy kategorii, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(dokładny) UUID kategorii" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(lista) Nazwy tagów, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Minimalna cena akcji" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Maksymalna cena akcji" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(dokładnie) Tylko aktywne produkty" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Nazwa marki" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimalna ilość zapasów" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(dokładny) Ślimak produktu" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(dokładnie) Cyfrowe vs. fizyczne" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -566,69 +590,69 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Tworzenie produktu" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Usuń produkt" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Lista wszystkich adresów" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Pobieranie pojedynczego adresu" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Utwórz nowy adres" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Usuwanie adresu" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Aktualizacja całego adresu" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Częściowa aktualizacja adresu" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Wprowadzanie adresu w trybie autouzupełniania" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ogranicza ilość wyników, 1 < limit < 10, domyślnie: 5" @@ -636,88 +660,101 @@ msgstr "ogranicza ilość wyników, 1 < limit < 10, domyślnie: 5" msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Klucz do wyszukania lub ustawienia w pamięci podręcznej" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Dane do przechowywania w pamięci podręcznej" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Limit czasu w sekundach na wprowadzenie danych do pamięci podręcznej" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Dane w pamięci podręcznej" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Kamelizowane dane JSON z żądanego adresu URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Dodawanie produktu do zamówienia" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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}" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Usuń wszystkie produkty z zamówienia" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Kup zamówienie" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Wykonanie akcji na liście produktów w zamówieniu" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Usuń/Dodaj" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Akcją musi być \"dodaj\" lub \"usuń\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Dodawanie produktu do zamówienia" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista życzeń {wishlist_uuid} nie została znaleziona" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Kup zamówienie" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -725,42 +762,42 @@ msgstr "" "Prześlij atrybuty jako ciąg znaków sformatowany w następujący sposób: " "attr1=value1,attr2=value2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Oryginalny ciąg adresu podany przez użytkownika" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Limit musi wynosić od 1 do 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - działa jak urok" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Atrybuty" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Atrybuty pogrupowane" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Marki" @@ -768,8 +805,8 @@ msgstr "Marki" msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Procentowy narzut" @@ -784,48 +821,48 @@ msgid "" msgstr "" "Minimalne i maksymalne ceny produktów w tej kategorii, jeśli są dostępne." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Sprzedawcy" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Szerokość geograficzna (współrzędna Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Długość geograficzna (współrzędna X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Jak" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Wartość oceny od 1 do 10 włącznie lub 0, jeśli nie jest ustawiona." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Reprezentuje informacje zwrotne od użytkownika." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Powiadomienia" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Adres URL pobierania dla tego produktu zamówienia, jeśli dotyczy" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Lista zamówionych produktów w tym zamówieniu" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Adres rozliczeniowy" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -833,47 +870,47 @@ msgstr "" "Adres wysyłki dla tego zamówienia, pozostaw pusty, jeśli jest taki sam jak " "adres rozliczeniowy lub jeśli nie dotyczy" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Całkowita cena tego zamówienia" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Całkowita ilość produktów w zamówieniu" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Czy wszystkie produkty w zamówieniu są cyfrowe?" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Zamówienia" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "Adres URL obrazu" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Zdjęcia produktu" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Kategoria" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Informacje zwrotne" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Marka" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -881,31 +918,31 @@ msgstr "Grupy atrybutów" msgid "quantity" msgstr "Ilość" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Liczba informacji zwrotnych" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Produkty w sprzedaży" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promocje" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Sprzedawca" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -913,478 +950,482 @@ msgstr "Sprzedawca" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Produkty z listy życzeń" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Listy życzeń" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Produkty Tagged" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Tagi produktu" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Nazwa projektu" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Firmowy adres e-mail" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Nazwa firmy" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Adres firmy" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Numer telefonu firmy" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Użytkownik hosta poczty e-mail" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Maksymalna kwota płatności" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Minimalna kwota płatności" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Konfiguracja" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Kod języka" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Nazwa języka" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Flaga języka, jeśli istnieje :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Wyniki wyszukiwania produktów" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Wyniki wyszukiwania produktów" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Rodzic tej grupy" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Grupa atrybutów nadrzędnych" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Nazwa grupy atrybutów" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Grupa atrybutów" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Kategoria tego atrybutu" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Grupa tego atrybutu" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "String" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Integer" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Pływak" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Wartość logiczna" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Tablica" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Obiekt" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Typ wartości atrybutu" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Typ wartości" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Nazwa tego atrybutu" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Nazwa atrybutu" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Atrybut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Atrybut tej wartości" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Produkt powiązany" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Konkretna wartość dla tego atrybutu" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Prześlij obraz reprezentujący tę kategorię" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Obraz kategorii" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Zdefiniuj procentowy narzut dla produktów w tej kategorii." -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Rodzic tej kategorii w celu utworzenia struktury hierarchicznej" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Kategoria nadrzędna" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Nazwa kategorii" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Podaj nazwę dla tej kategorii" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Dodaj szczegółowy opis dla tej kategorii" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Opis kategorii" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Nazwa tej marki" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Nazwa marki" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Prześlij logo reprezentujące tę markę" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Mały wizerunek marki" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Prześlij duże logo reprezentujące tę markę" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Duży wizerunek marki" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Dodaj szczegółowy opis marki" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Opis marki" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Opcjonalne kategorie, z którymi powiązana jest ta marka" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Kategorie" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Kategoria, do której należy ten produkt" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Opcjonalnie można powiązać ten produkt z marką" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tagi, które pomagają opisać lub pogrupować ten produkt" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Tagi produktu" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Wskazuje, czy produkt jest dostarczany cyfrowo." -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Czy produkt jest cyfrowy?" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Wyraźna nazwa identyfikująca produkt" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Nazwa produktu" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Dodaj szczegółowy opis produktu" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Opis produktu" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Numer części dla tego produktu" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Numer części" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Przechowuje dane uwierzytelniające i punkty końcowe wymagane do komunikacji " "API dostawcy." -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informacje o uwierzytelnianiu" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Definiowanie znaczników dla produktów pobranych od tego dostawcy" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Procentowa marża sprzedawcy" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Nazwa tego sprzedawcy" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Nazwa sprzedawcy" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Komentarze użytkowników na temat ich doświadczeń z produktem" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Komentarze zwrotne" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Odnosi się do konkretnego produktu w zamówieniu, którego dotyczy ta " "informacja zwrotna." -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Powiązany produkt zamówienia" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Ocena produktu przypisana przez użytkownika" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Ocena produktu" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Informacje zwrotne" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Adres rozliczeniowy użyty dla tego zamówienia" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Opcjonalny kod promocyjny zastosowany do tego zamówienia" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Zastosowany kod promocyjny" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Adres wysyłki użyty dla tego zamówienia" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Adres wysyłki" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Aktualny status zamówienia w jego cyklu życia" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Status zamówienia" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "Struktura JSON powiadomień do wyświetlenia użytkownikom, w interfejsie " "administratora używany jest widok tabeli" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "Reprezentacja JSON atrybutów zamówienia dla tego zamówienia" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "Użytkownik, który złożył zamówienie" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Użytkownik" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Znacznik czasu, kiedy zamówienie zostało sfinalizowane" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Kup czas" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Czytelny dla człowieka identyfikator zamówienia" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "Identyfikator czytelny dla człowieka" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Zamówienie" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Nie można dodać nieaktywnych produktów do zamówienia" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nie istnieje: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nie istnieje z zapytaniem <{query}>." -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Kod promocyjny nie istnieje" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Adres nie istnieje" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Nieprawidłowa wartość siły" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Nie można kupić pustego zamówienia!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Niewystarczające środki do zrealizowania zamówienia" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1393,188 +1434,192 @@ msgstr "" "informacje: imię i nazwisko klienta, adres e-mail klienta, numer telefonu " "klienta." -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Nieprawidłowa metoda płatności" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Nieprawidłowa metoda płatności: {payment_method} z " +"{available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Cena zakupu w momencie zamówienia" -#: core/models.py:794 +#: core/models.py:811 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:795 +#: core/models.py:812 msgid "internal comments" msgstr "Uwagi wewnętrzne" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Powiadomienia użytkownika" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "Reprezentacja JSON atrybutów tego elementu" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Zamówione atrybuty produktu" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Odniesienie do zamówienia nadrzędnego zawierającego ten produkt" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Zamówienie nadrzędne" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Konkretny produkt powiązany z tą linią zamówienia" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Ilość tego konkretnego produktu w zamówieniu" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Ilość produktu" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Aktualny status tego produktu w zamówieniu" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Status linii produktów" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Wewnętrzny identyfikator tagu produktu" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Nazwa tagu" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Przyjazna dla użytkownika nazwa etykiety produktu" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Etykieta produktu" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "" "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Tekst alternatywny obrazu" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Prześlij plik obrazu dla tego produktu" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Obraz produktu" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Określa kolejność wyświetlania obrazów" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Priorytet wyświetlania" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Produkt, który przedstawia ten obraz" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Zdjęcia produktów" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Identyfikator kodu promocyjnego" -#: core/models.py:968 +#: core/models.py:985 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:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Stała kwota rabatu" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Rabat procentowy stosowany w przypadku niewykorzystania stałej kwoty" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Rabat procentowy" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Znacznik czasu wygaśnięcia kodu promocyjnego" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Końcowy czas ważności" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Znacznik czasu, od którego ten kod promocyjny jest ważny" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Czas rozpoczęcia ważności" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Znacznik czasu użycia" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Użytkownik przypisany do tego kodu promocyjnego, jeśli dotyczy" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Przypisany użytkownik" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Kod promocyjny" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Kody promocyjne" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1582,184 +1627,192 @@ msgstr "" "Należy zdefiniować tylko jeden rodzaj rabatu (kwotowy lub procentowy), ale " "nie oba lub żaden z nich." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Kod promocyjny został już wykorzystany" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}." -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Rabat procentowy na wybrane produkty" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Procent rabatu" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Podaj unikalną nazwę tej promocji" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Nazwa promocji" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Opis promocji" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Wybierz produkty objęte promocją" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Dołączone produkty" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promocja" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Sprzedawca dostarczający ten produkt" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Powiązany sprzedawca" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Ostateczna cena dla klienta po uwzględnieniu marży" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Cena sprzedaży" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Produkt powiązany z tym wpisem magazynowym" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "Cena zapłacona sprzedawcy za ten produkt" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Cena zakupu przez sprzedawcę" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Dostępna ilość produktu w magazynie" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Ilość w magazynie" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Jednostki SKU przypisane przez dostawcę w celu identyfikacji produktu" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU sprzedawcy" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Plik cyfrowy powiązany z tymi zapasami, jeśli dotyczy" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Plik cyfrowy" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Zapisy magazynowe" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Produkty, które użytkownik oznaczył jako poszukiwane" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Użytkownik posiadający tę listę życzeń" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Właściciel listy życzeń" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Lista życzeń" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Pobierz" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Pliki do pobrania" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Film dokumentalny" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Filmy dokumentalne" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Nierozwiązany" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Linia adresu dla klienta" + +#: core/models.py:1270 +msgid "address line" +msgstr "Linia adresowa" + +#: core/models.py:1272 msgid "street" msgstr "ul." -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Okręg" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Miasto" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Region" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Kod pocztowy" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Kraj" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Pełna odpowiedź JSON z geokodera dla tego adresu" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Przechowywana odpowiedź JSON z usługi geokodowania" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adres" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adresy" @@ -1998,7 +2051,7 @@ msgstr "Zasób cyfrowy można pobrać tylko raz" msgid "favicon not found" msgstr "nie znaleziono favicon" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 1c340886..0e2318d3 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 fcb88ad0..05c7f150 100644 --- a/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/core/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Ativar %(verbose_name_plural)s selecionados" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desativar %(verbose_name_plural)s selecionados" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Valor do atributo" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Valores de atributos" @@ -79,19 +79,19 @@ msgstr "Nome" msgid "image" msgstr "Imagem" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Imagens" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Estoque" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Ações" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Informações básicas" msgid "important dates" msgstr "Datas importantes" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Pedido de produto" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Solicitar produtos" @@ -123,7 +123,7 @@ msgstr "Solicitar produtos" msgid "is business" msgstr "É um negócio" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Configuração" @@ -175,7 +175,7 @@ msgstr "Momental" msgid "successful" msgstr "Bem-sucedido" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "E/S do cache" @@ -199,7 +199,7 @@ msgstr "Obter os parâmetros expostos do aplicativo" msgid "send a message to the support team" msgstr "Envie uma mensagem para a equipe de suporte" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Solicite um URL com CORS. Somente https é permitido." @@ -220,149 +220,149 @@ msgstr "" "Compre um pedido como uma empresa, usando os `products` fornecidos com " "`product_uuid` e `attributes`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Listar todos os grupos de atributos (visualização simples)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar um único grupo de atributos (visualização detalhada)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Criar um grupo de atributos" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Excluir um grupo de atributos" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Listar todos os valores de atributos (visualização simples)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar um único valor de atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Criar um valor de atributo" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Excluir um valor de atributo" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Criar uma categoria" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Excluir uma categoria" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 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:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Preço de compra no momento do pedido" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +372,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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -392,11 +392,25 @@ msgstr "" "Adiciona um produto a um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Adiciona uma lista de produtos a um pedido usando o `product_uuid` e os " +"`attributes` fornecidos." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -404,81 +418,93 @@ msgstr "" "Remove um produto de um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Remove uma lista de produtos de um pedido usando o `product_uuid` e os " +"`attributes` fornecidos." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 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:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Remover um produto da lista de desejos" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Adicionar muitos produtos à lista de desejos" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -498,60 +524,60 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "UUID (exato) do produto" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Nome do produto" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 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:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(exato) UUID da categoria" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 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:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Preço mínimo das ações" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Preço máximo da ação" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exato) Somente produtos ativos" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Nome da marca" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantidade mínima em estoque" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(exato) Slug do produto" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exato) Digital vs. físico" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -559,69 +585,69 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Criar um produto" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 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:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Excluir um produto" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Listar todos os endereços" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Recuperar um único endereço" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Criar um novo endereço" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Excluir um endereço" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Atualizar um endereço inteiro" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Atualizar parcialmente um endereço" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Entrada de endereço com preenchimento automático" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita a quantidade de resultados, 1 < limite < 10, padrão: 5" @@ -629,130 +655,143 @@ msgstr "limita a quantidade de resultados, 1 < limite < 10, padrão: 5" msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Chave para procurar ou colocar no cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Dados a serem armazenados no cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Tempo limite em segundos para definir os dados para o cache" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Dados em cache" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Dados JSON camelizados da URL solicitada" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Somente URLs que começam com http(s):// são permitidos" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Adicionar um produto ao pedido" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Remover todos os produtos do pedido" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Comprar um pedido" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 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:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Executar uma ação em uma lista de produtos no pedido" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Remover/Adicionar" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "A ação deve ser \"adicionar\" ou \"remover\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Adicionar um produto ao pedido" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista de desejos {wishlist_uuid} não encontrada" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Comprar um pedido" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "" "Envie os atributos como uma string formatada como attr1=value1,attr2=value2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Cadeia de endereços original fornecida pelo usuário" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "O limite deve estar entre 1 e 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona muito bem" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Atributos" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Atributos agrupados" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categorias" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Marcas" @@ -760,8 +799,8 @@ msgstr "Marcas" msgid "category image url" msgstr "Categorias" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Porcentagem de marcação" @@ -775,49 +814,49 @@ msgid "" "minimum and maximum prices for products in this category, if available." msgstr "Preços mínimo e máximo dos produtos dessa categoria, se disponíveis." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordenada Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitude (coordenada X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Como fazer" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Valor de classificação de 1 a 10, inclusive, ou 0 se não estiver definido." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Representa o feedback de um usuário." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notificações" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "URL de download para este produto do pedido, se aplicável" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Uma lista dos produtos solicitados nesse pedido" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Endereço de cobrança" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -825,47 +864,47 @@ msgstr "" "Endereço de entrega para este pedido, deixe em branco se for o mesmo que o " "endereço de cobrança ou se não for aplicável" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Preço total deste pedido" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Quantidade total de produtos no pedido" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Todos os produtos estão no pedido digital?" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "URL da imagem" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Imagens do produto" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -873,31 +912,31 @@ msgstr "Grupos de atributos" msgid "quantity" msgstr "Quantidade" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Número de feedbacks" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produtos" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Códigos promocionais" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Produtos à venda" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promoções" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -905,478 +944,482 @@ msgstr "Vendor" msgid "product" msgstr "Produto" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Produtos da lista de desejos" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Listas de desejos" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Produtos marcados" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Etiquetas do produto" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Nome do projeto" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "E-mail da empresa" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Nome da empresa" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Endereço da empresa" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Número de telefone da empresa" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', às vezes ele deve ser usado em vez do valor do usuário do host" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Usuário do host de e-mail" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Valor máximo para pagamento" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Valor mínimo para pagamento" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configuração" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Código do idioma" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Nome do idioma" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Sinalizador de idioma, se houver :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Obter uma lista de idiomas suportados" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Resultados da pesquisa de produtos" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Resultados da pesquisa de produtos" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Pai deste grupo" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Grupo de atributos pai" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Nome do grupo de atributos" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Grupo de atributos" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Categoria desse atributo" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Grupo desse atributo" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Cordas" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Inteiro" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Flutuação" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Booleano" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Matriz" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Objeto" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Tipo do valor do atributo" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Tipo de valor" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Nome desse atributo" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Nome do atributo" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Atributo" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Atributo desse valor" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Produto associado" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "O valor específico para esse atributo" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Faça upload de uma imagem que represente essa categoria" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Imagem da categoria" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Definir uma porcentagem de majoração para os produtos dessa categoria" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Pai dessa categoria para formar uma estrutura hierárquica" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Categoria dos pais" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Nome da categoria" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Forneça um nome para essa categoria" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Adicione uma descrição detalhada para essa categoria" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Descrição da categoria" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Nome da marca" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Nome da marca" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Faça upload de um logotipo que represente essa marca" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Imagem pequena da marca" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Faça upload de um logotipo grande que represente essa marca" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Imagem de marca grande" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Adicione uma descrição detalhada da marca" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Descrição da marca" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Categorias opcionais às quais essa marca está associada" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categorias" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Categoria à qual este produto pertence" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Opcionalmente, associe esse produto a uma marca" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Tags que ajudam a descrever ou agrupar este produto" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Etiquetas do produto" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indica se esse produto é entregue digitalmente" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "O produto é digital" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Fornecer um nome de identificação claro para o produto" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Nome do produto" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Adicione uma descrição detalhada do produto" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Descrição do produto" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Número de peça para este produto" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Número da peça" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Armazena as credenciais e os pontos de extremidade necessários para a " "comunicação da API do fornecedor" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informações de autenticação" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Definir a marcação para produtos recuperados desse fornecedor" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Porcentagem da margem de lucro do fornecedor" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Nome do fornecedor" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Nome do fornecedor" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "" "Comentários fornecidos pelo usuário sobre sua experiência com o produto" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Comentários de feedback" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Faz referência ao produto específico em um pedido sobre o qual se trata esse" " feedback" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Produto de pedido relacionado" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Classificação atribuída pelo usuário ao produto" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Avaliação do produto" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "O endereço de cobrança usado para esse pedido" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "O endereço de entrega usado para esse pedido" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Endereço de entrega" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Status atual do pedido em seu ciclo de vida" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Status do pedido" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "Estrutura JSON de notificações a serem exibidas aos usuários; na interface " "do usuário do administrador, é usada a visualização de tabela" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "Representação JSON dos atributos do pedido para esse pedido" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "O usuário que fez o pedido" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Usuário" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "O registro de data e hora em que o pedido foi finalizado" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Tempo de compra" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Um identificador legível por humanos para o pedido" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "ID legível por humanos" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Pedido" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Não é possível adicionar produtos inativos ao pedido" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} não existe: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} não existe com a consulta <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "O código promocional não existe" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "O endereço não existe" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Valor de força inválido" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Você não pode comprar um pedido vazio!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Fundos insuficientes para concluir o pedido" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1384,188 +1427,192 @@ 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:735 -msgid "invalid payment method" -msgstr "Método de pagamento inválido" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Método de pagamento inválido: {payment_method} de " +"{available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Preço de compra no momento do pedido" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" "Comentários internos para administradores sobre este produto encomendado" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Comentários internos" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Notificações do usuário" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "Representação JSON dos atributos desse item" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Atributos ordenados do produto" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Referência ao pedido pai que contém esse produto" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Ordem dos pais" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "O produto específico associado a essa linha de pedido" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Quantidade desse produto específico no pedido" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Quantidade do produto" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Status atual desse produto no pedido" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Status da linha de produtos" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Identificador de tag interno para a tag do produto" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Nome da etiqueta" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Nome de fácil utilização para a etiqueta do produto" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Nome de exibição da tag" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Etiqueta do produto" -#: core/models.py:919 +#: core/models.py:936 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:920 +#: core/models.py:937 msgid "image alt text" msgstr "Texto alternativo da imagem" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Faça o upload do arquivo de imagem para este produto" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Imagem do produto" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Determina a ordem em que as imagens são exibidas" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Prioridade de exibição" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "O produto que esta imagem representa" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Imagens do produto" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Identificador de código promocional" -#: core/models.py:968 +#: core/models.py:985 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:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Valor do desconto fixo" -#: core/models.py:975 +#: core/models.py:992 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:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Desconto percentual" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Registro de data e hora em que o código promocional expira" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Tempo de validade final" -#: core/models.py:987 +#: core/models.py:1004 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:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Hora de início da validade" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Registro de data e hora de uso" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Usuário atribuído a esse código promocional, se aplicável" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Usuário atribuído" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Código promocional" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Códigos promocionais" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1573,186 +1620,194 @@ msgstr "" "Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" " ambos ou nenhum." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "O código promocional já foi usado" -#: core/models.py:1044 +#: core/models.py:1061 #, 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:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Desconto percentual para os produtos selecionados" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Porcentagem de desconto" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Forneça um nome exclusivo para essa promoção" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Nome da promoção" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Descrição da promoção" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Selecione quais produtos estão incluídos nessa promoção" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Produtos incluídos" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promoção" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "O fornecedor que fornece esse estoque de produtos" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Fornecedor associado" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Preço final para o cliente após as marcações" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Preço de venda" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "O produto associado a essa entrada em estoque" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "O preço pago ao fornecedor por esse produto" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Preço de compra do fornecedor" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Quantidade disponível do produto em estoque" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Quantidade em estoque" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuído pelo fornecedor para identificar o produto" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU do fornecedor" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Arquivo digital associado a esse estoque, se aplicável" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Arquivo digital" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Entradas de estoque" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Produtos que o usuário marcou como desejados" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Usuário que possui esta lista de desejos" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Proprietário da lista de desejos" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Lista de desejos" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Baixar" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Downloads" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentário" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentários" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Não resolvido" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Linha de endereço do cliente" + +#: core/models.py:1270 +msgid "address line" +msgstr "Linha de endereço" + +#: core/models.py:1272 msgid "street" msgstr "Rua" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Distrito" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Cidade" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Região" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Código postal" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "País" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Ponto de geolocalização (Longitude, Latitude)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Resposta JSON completa do geocodificador para este endereço" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Resposta JSON armazenada do serviço de geocodificação" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Endereço" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Endereços" @@ -1988,7 +2043,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:497 +#: core/viewsets.py:589 #, 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 208df4c6..8be419ed 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 fa4ff1bf..ed46f60f 100644 --- a/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/core/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Activați %(verbose_name_plural)s selectate" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezactivați %(verbose_name_plural)s selectate" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Atribut Valoare" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Valori ale atributului" @@ -79,19 +79,19 @@ msgstr "Nume și prenume" msgid "image" msgstr "Imagine" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Imagini" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Stoc" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Stocuri" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Informații de bază" msgid "important dates" msgstr "Date importante" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Comanda Produs" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Comandați produse" @@ -123,7 +123,7 @@ msgstr "Comandați produse" msgid "is business" msgstr "Este o afacere" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Configurare" @@ -175,7 +175,7 @@ msgstr "Momental" msgid "successful" msgstr "De succes" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Cache I/O" @@ -199,7 +199,7 @@ msgstr "Obțineți parametrii expunibili ai aplicației" msgid "send a message to the support team" msgstr "Trimiteți un mesaj echipei de asistență" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Solicitați un URL CORSed. Numai https este permis." @@ -221,156 +221,156 @@ msgstr "" "Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid`" " și `attributes` furnizate." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Lista tuturor grupurilor de atribute (vizualizare simplă)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperarea unui singur grup de atribute (vedere detaliată)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Crearea unui grup de atribute" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Ștergerea unui grup de atribute" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 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:57 +#: core/docs/drf/viewsets.py:58 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:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 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:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Lista tuturor valorilor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperarea valorii unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Crearea unei valori de atribut" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Ștergerea unei valori de atribut" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 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:111 +#: core/docs/drf/viewsets.py:112 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:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Creați o categorie" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Ștergeți o categorie" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 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:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 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:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 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:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 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:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Prețul de achiziție la momentul comenzii" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +380,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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 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:186 +#: core/docs/drf/viewsets.py:187 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:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -400,11 +400,23 @@ msgstr "" "Adaugă un produs la o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +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 +msgid "" +"adds a list of products to an order using the provided `product_uuid` and " +"`attributes`." +msgstr "" +"Adaugă o listă de produse la o comandă folosind `product_uuid` și " +"`attributes` furnizate." + +#: core/docs/drf/viewsets.py:207 msgid "remove product from order" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -412,82 +424,95 @@ msgstr "" "Elimină un produs dintr-o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +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 +msgid "" +"removes a list of products from an order using the provided `product_uuid` " +"and `attributes`" +msgstr "" +"Îndepărtează o listă de produse dintr-o comandă folosind `product_uuid` și " +"`attributes` furnizate." + +#: core/docs/drf/viewsets.py:222 msgid "list all wishlists (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 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:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 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:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 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:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 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:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Eliminați un produs din lista de dorințe" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 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:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Adăugați mai multe produse la lista de dorințe" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 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:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 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:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -507,59 +532,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(exact) UUID al produsului" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(icontains) Denumirea produsului" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(listă) Numele categoriilor, fără deosebire de majuscule" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(exact) UUID al categoriei" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(listă) Nume de etichete, fără diferențiere de majuscule" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Prețul minim al acțiunilor" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Prețul maxim al acțiunilor" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(exact) Numai produse active" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Denumire comercială" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantitatea minimă de stoc" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(exact) Limbajul produsului" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. fizic" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -567,64 +592,64 @@ 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:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Creați un produs" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 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:412 +#: core/docs/drf/viewsets.py:425 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:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Ștergeți un produs" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Enumerați toate adresele" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Recuperarea unei singure adrese" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Creați o adresă nouă" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Ștergeți o adresă" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Actualizarea unei adrese întregi" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Actualizarea parțială a unei adrese" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Autocompletare adresă de intrare" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 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" @@ -632,7 +657,7 @@ 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:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limitează cantitatea de rezultate, 1 < limit < 10, implicit: 5" @@ -640,89 +665,102 @@ msgstr "limitează cantitatea de rezultate, 1 < limit < 10, implicit: 5" msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Cheie care trebuie căutată sau introdusă în cache" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Date de stocat în cache" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Timeout în secunde pentru a seta datele în cache" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Date în cache" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Date JSON Camelizate de la URL-ul solicitat" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Sunt permise numai URL-urile care încep cu http(s)://" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Adăugați un produs la comandă" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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ă" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Eliminați toate produsele din comandă" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Cumpărați o comandă" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Efectuați o acțiune asupra unei liste de produse din comandă" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Eliminare/adăugare" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Acțiunea trebuie să fie fie \"adăugare\" sau \"eliminare\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Adăugați un produs la comandă" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista dorințelor {wishlist_uuid} nu a fost găsită" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Cumpărați o comandă" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -730,42 +768,42 @@ msgstr "" "Vă rugăm să trimiteți atributele sub formă de șir format ca attr1=valoare1, " "attr2=valoare2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Șirul de adrese original furnizat de utilizator" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Limita trebuie să fie între 1 și 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funcționează ca un farmec" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Atribute" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Atribute grupate" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Categorii" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Mărci" @@ -773,8 +811,8 @@ msgstr "Mărci" msgid "category image url" msgstr "Categorii" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Procentul de majorare" @@ -791,48 +829,48 @@ msgstr "" "Prețurile minime și maxime pentru produsele din această categorie, dacă sunt" " disponibile." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Furnizori" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordonata Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordonata X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Cum să" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valoare nominală de la 1 la 10, inclusiv, sau 0 dacă nu este setată." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Reprezintă feedback de la un utilizator." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Notificări" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "URL de descărcare pentru acest produs de comandă, dacă este cazul" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "O listă a produselor comandate în această comandă" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Adresa de facturare" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -840,47 +878,47 @@ msgstr "" "Adresa de expediere pentru această comandă, lăsați în alb dacă este aceeași " "cu adresa de facturare sau dacă nu se aplică" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Prețul total al acestei comenzi" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Cantitatea totală de produse din comandă" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Sunt toate produsele din comanda digitală" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Ordine" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "URL imagine" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Imagini ale produsului" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Feedback-uri" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -888,31 +926,31 @@ msgstr "Grupuri de atribute" msgid "quantity" msgstr "Cantitate" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Numărul de reacții" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Produse" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Coduri promoționale" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Produse scoase la vânzare" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Promoții" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Furnizor" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -920,482 +958,486 @@ msgstr "Furnizor" msgid "product" msgstr "Produs" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Produse dorite" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Liste de dorințe" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Produse etichetate" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Etichete de produs" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Numele proiectului" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Email companie" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Numele companiei" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Adresa companiei" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Numărul de telefon al companiei" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "\"e-mail de la\", uneori trebuie să fie utilizat în locul valorii " "utilizatorului gazdă" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Utilizator gazdă e-mail" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Suma maximă pentru plată" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Suma minimă pentru plată" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Configurație" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Codul limbii" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Numele limbii" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Indicatorul de limbă, dacă există :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Rezultate căutare produse" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Rezultate căutare produse" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Părinte al acestui grup" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Grup de atribute părinte" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Numele grupului de atribute" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Grup de atribute" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Categoria acestui atribut" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Grupul acestui atribut" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Șir de caractere" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Număr întreg" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Float" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Boolean" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Array" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Obiect" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Tipul valorii atributului" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Tipul de valoare" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Denumirea acestui atribut" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Numele atributului" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Atribut" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Atributul acestei valori" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Produs asociat" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Valoarea specifică pentru acest atribut" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Încărcați o imagine care reprezintă această categorie" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Categorie imagine" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "" "Definiți un procent de majorare pentru produsele din această categorie" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Părinte al acestei categorii pentru a forma o structură ierarhică" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Categoria de părinți" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Numele categoriei" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Furnizați un nume pentru această categorie" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Adăugați o descriere detaliată pentru această categorie" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Descriere categorie" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Denumirea acestui brand" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Nume de marcă" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Încărcați un logo care reprezintă acest brand" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Brand imagine mică" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Încărcați un logo mare care reprezintă acest brand" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Imagine de marcă mare" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Adăugați o descriere detaliată a mărcii" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Descrierea mărcii" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Categorii opționale cu care acest brand este asociat" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Categorii" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Categoria din care face parte acest produs" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "Opțional, asociați acest produs cu un brand" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Etichete care ajută la descrierea sau gruparea acestui produs" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Etichete de produs" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Indică dacă acest produs este livrat digital" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Produsul este digital" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Furnizați o denumire clară de identificare a produsului" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Denumirea produsului" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Adăugați o descriere detaliată a produsului" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Descrierea produsului" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Numărul piesei pentru acest produs" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Numărul piesei" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stochează acreditările și punctele finale necesare pentru comunicarea API a " "furnizorului" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Informații privind autentificarea" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definirea marjei de profit pentru produsele preluate de la acest furnizor" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Procentul de majorare al furnizorului" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Numele acestui vânzător" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Numele furnizorului" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "" "Comentarii furnizate de utilizatori cu privire la experiența lor cu produsul" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Comentarii de feedback" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Face referire la produsul specific dintr-o comandă despre care este vorba în" " acest feedback" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Produs aferent comenzii" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Rating atribuit de utilizator pentru produs" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Evaluarea produsului" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Feedback" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Adresa de facturare utilizată pentru această comandă" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Cod promoțional opțional aplicat la această comandă" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Cod promoțional aplicat" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Adresa de expediere utilizată pentru această comandă" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Adresa de expediere" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Stadiul actual al comenzii în ciclul său de viață" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Stadiul comenzii" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "Structura JSON a notificărilor care urmează să fie afișate utilizatorilor, " "în interfața de administrare este utilizată vizualizarea tabelară" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "Reprezentarea JSON a atributelor comenzii pentru această comandă" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "Utilizatorul care a plasat comanda" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Utilizator" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Momentul în care comanda a fost finalizată" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Cumpărați timp" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Un identificator ușor de citit pentru comandă" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "ID lizibil de către om" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Comandă" -#: core/models.py:527 +#: core/models.py:531 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:551 +#: core/models.py:555 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:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Nu puteți adăuga produse inactive la comandă" -#: core/models.py:573 +#: core/models.py:577 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:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nu există: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 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:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nu există cu interogarea <{query}>" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Codul promoțional nu există" -#: core/models.py:643 +#: core/models.py:650 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:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Adresa nu există" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 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:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Valoare forță invalidă" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Nu puteți achiziționa o comandă goală!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Insuficiența fondurilor pentru finalizarea comenzii" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1403,186 +1445,190 @@ 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:735 -msgid "invalid payment method" -msgstr "Metodă de plată invalidă" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Metodă de plată invalidă: {payment_method} de la " +"{available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 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:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Prețul de achiziție la momentul comenzii" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarii interne pentru administratori cu privire la acest produs comandat" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Observații interne" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Notificări pentru utilizatori" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "Reprezentarea JSON a atributelor acestui element" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Atribute de produs ordonate" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Trimitere la comanda mamă care conține acest produs" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Ordinul părinților" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Produsul specific asociat cu această linie de comandă" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Cantitatea acestui produs specific din comandă" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Cantitatea produsului" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Starea actuală a acestui produs în comandă" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Starea liniei de produse" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Identificator intern de etichetă pentru eticheta produsului" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Nume etichetă" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Nume ușor de utilizat pentru eticheta produsului" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Nume afișare etichetă" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Etichetă produs" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "Furnizați text alternativ pentru imagine pentru accesibilitate" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Textul alt al imaginii" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Încărcați fișierul de imagine pentru acest produs" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Imaginea produsului" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Determină ordinea în care sunt afișate imaginile" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Prioritatea afișării" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Produsul pe care îl reprezintă această imagine" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Imagini ale produsului" -#: core/models.py:960 +#: core/models.py:977 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:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Cod promoțional de identificare" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "Valoarea fixă a reducerii aplicate dacă procentul nu este utilizat" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Valoarea fixă a reducerii" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentul de reducere aplicat dacă suma fixă nu este utilizată" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Reducere procentuală" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Data la care expiră codul promoțional" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Timpul final de valabilitate" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Timestamp de la care acest cod promoțional este valabil" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Ora de începere a valabilității" -#: core/models.py:993 +#: core/models.py:1010 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:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Timestamp de utilizare" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Utilizatorul atribuit acestui cod promoțional, dacă este cazul" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Utilizator atribuit" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Cod promoțional" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Coduri promoționale" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1590,184 +1636,192 @@ msgstr "" "Trebuie definit un singur tip de reducere (sumă sau procent), dar nu ambele " "sau niciuna." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Codul promoțional a fost deja utilizat" -#: core/models.py:1044 +#: core/models.py:1061 #, 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:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Procentul de reducere pentru produsele selectate" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Procent de reducere" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Furnizați un nume unic pentru această promoție" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Numele promoției" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Descrierea promoției" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Selectați ce produse sunt incluse în această promoție" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Produse incluse" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Promovare" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Furnizorul care furnizează acest stoc de produse" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Furnizor asociat" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Prețul final pentru client după majorări" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Prețul de vânzare" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Produsul asociat cu această intrare în stoc" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "Prețul plătit vânzătorului pentru acest produs" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Prețul de achiziție al furnizorului" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Cantitatea disponibilă a produsului în stoc" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Cantitate în stoc" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuit de furnizor pentru identificarea produsului" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU al furnizorului" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Fișier digital asociat cu acest stoc, dacă este cazul" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Fișier digital" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Intrări pe stoc" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Produse pe care utilizatorul le-a marcat ca fiind dorite" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Utilizatorul care deține această listă de dorințe" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Proprietarul listei de dorințe" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Lista dorințelor" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Descărcare" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Descărcări" -#: core/models.py:1220 +#: core/models.py:1237 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:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Documentar" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Documentare" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Nerezolvat" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Linia de adresă pentru client" + +#: core/models.py:1270 +msgid "address line" +msgstr "Linia de adresă" + +#: core/models.py:1272 msgid "street" msgstr "Strada" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Districtul" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Oraș" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Regiunea" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Cod poștal" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Țara" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Punct de geolocație (longitudine, latitudine)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Răspuns JSON complet de la geocoder pentru această adresă" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Răspuns JSON stocat de la serviciul de geocodare" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Adresă" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Adrese" @@ -2005,7 +2059,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:497 +#: core/viewsets.py:589 #, 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 a3ff4d50..e77a3faa 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 5ade21f8..d16079e2 100644 --- a/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/core/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -61,12 +61,12 @@ msgstr "Активировать выбранные %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "Деактивировать выбранные %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "Значение атрибута" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "Значения атрибутов" @@ -79,19 +79,19 @@ msgstr "Имя" msgid "image" msgstr "Изображение" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "Изображения" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "Наличие" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "Наличия" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -111,11 +111,11 @@ msgstr "Основная информация" msgid "important dates" msgstr "Важные даты" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "Заказать товар" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "Заказать товары" @@ -123,7 +123,7 @@ msgstr "Заказать товары" msgid "is business" msgstr "Бизнес" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "Конфигурация" @@ -175,7 +175,7 @@ msgstr "Momental" msgid "successful" msgstr "Успешный" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "Ввод/вывод кэша" @@ -199,7 +199,7 @@ msgstr "Получите параметры приложения, которые msgid "send a message to the support team" msgstr "Отправьте сообщение в службу поддержки" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "Запросите URL-адрес с поддержкой CORS. Допускается только https." @@ -220,159 +220,159 @@ msgstr "" "Приобретите заказ как бизнес, используя предоставленные `продукты` с " "`product_uuid` и `attributes`." -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "Список всех групп атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "Получение одной группы атрибутов (подробный просмотр)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "Создайте группу атрибутов" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "Удаление группы атрибутов" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Переписать существующую группу атрибутов с сохранением нередактируемых " "элементов" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "Список всех значений атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "Получение значения одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "Создание значения атрибута" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "Удалить значение атрибута" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Перезапись существующего значения атрибута с сохранением нередактируемых " "значений" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" -#: core/docs/drf/viewsets.py:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "Список всех категорий (простой вид)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "Создайте категорию" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "Удалить категорию" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "Список всех категорий (простой вид)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 msgid "for non-staff users, only their own orders are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные заказы." -#: core/docs/drf/viewsets.py:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "Покупная цена на момент заказа" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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 +382,19 @@ msgstr "" "завершается с использованием баланса пользователя; если используется " "`force_payment`, инициируется транзакция." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "приобретение заказа без создания учетной записи" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "завершает покупку заказа для незарегистрированного пользователя." -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -402,11 +402,23 @@ msgstr "" "Добавляет товар в заказ, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +msgid "add a list of products to order, quantities will not count" +msgstr "Добавьте список продуктов для заказа, количество не учитывается" + +#: core/docs/drf/viewsets.py:202 +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 msgid "remove product from order" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -414,82 +426,94 @@ msgstr "" "Удаляет товар из заказа, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +msgid "remove product from order, quantities will not count" +msgstr "Удалите продукт из заказа, количество не будет учитываться" + +#: core/docs/drf/viewsets.py:214 +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 msgid "list all wishlists (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные списки желаний." -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Добавляет товар в список желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "Удалить продукт из списка желаний" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Удаляет продукт из списка желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "Добавьте много товаров в список желаний" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Добавляет множество товаров в список желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -509,59 +533,59 @@ msgstr "" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(точный) UUID продукта" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(иконки) Название продукта" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(список) Названия категорий, без учета регистра" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(точный) UUID категории" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(список) Имена тегов, нечувствительные к регистру" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) Минимальная цена акции" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) Максимальная цена акции" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(точно) Только активные продукты" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) Торговое название" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) Минимальное количество на складе" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(точный) Артикул" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(точно) Цифровые и физические" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -569,69 +593,69 @@ msgstr "" "Список полей для сортировки, разделенных запятыми. Для сортировки по убыванию используйте префикс `-`. \n" "**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, random" -#: core/docs/drf/viewsets.py:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "Создать продукт" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "Удалить продукт" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "Перечислите все адреса" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "Получение одного адреса" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "Создайте новый адрес" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "Удалить адрес" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "Обновление всего адреса" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "Частичное обновление адреса" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "Автозаполнение ввода адреса" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Строка запроса сырых данных, пожалуйста, дополните ее данными с конечной " "точки geo-IP" -#: core/docs/drf/viewsets.py:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ограничивает количество результатов, 1 < limit < 10, по умолчанию: 5" @@ -639,90 +663,103 @@ msgstr "ограничивает количество результатов, 1 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "Ключ, который нужно найти в тайнике или вложить в него" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "Данные для хранения в кэше" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "Тайм-аут в секундах для занесения данных в кэш" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "Кэшированные данные" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-данные из запрашиваемого URL" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "Добавить товар в заказ" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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} не найден" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "Удалить все товары из заказа" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "Купить заказ" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Пожалуйста, укажите либо order_uuid, либо order_hr_id - взаимоисключающие " "варианты!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "Выполните действие над списком товаров в заказе" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "Удалить/добавить" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "Действие должно быть либо \"добавить\", либо \"удалить\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "Добавить товар в заказ" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Список желаний {wishlist_uuid} не найден" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "Купить заказ" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" @@ -730,42 +767,42 @@ msgstr "" "Пожалуйста, отправьте атрибуты в виде строки, отформатированной как " "attr1=value1,attr2=value2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "Оригинальная строка адреса, предоставленная пользователем" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "Предел должен быть от 1 до 10" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - работает как шарм" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "Атрибуты" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "Сгруппированные атрибуты" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "Категории" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "Бренды" @@ -773,8 +810,8 @@ msgstr "Бренды" msgid "category image url" msgstr "Категории" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "Процент наценки" @@ -790,49 +827,49 @@ msgstr "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "Поставщики" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "Широта (координата Y)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "Долгота (координата X)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "Как" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Значение рейтинга от 1 до 10, включительно, или 0, если он не установлен." -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "Представляет собой отзыв пользователя." -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "Уведомления" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "Если применимо, загрузите url для этого продукта заказа" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "Список товаров, заказанных в этом заказе" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "Адрес для выставления счетов" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -840,47 +877,47 @@ msgstr "" "Адрес доставки для данного заказа, оставьте пустым, если он совпадает с " "адресом выставления счета или не применяется" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "Общая стоимость этого заказа" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "Общее количество продуктов в заказе" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "Все ли товары в заказе представлены в цифровом виде" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "Заказы" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "URL-адрес изображения" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "Изображения продукта" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "Категория" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "Отзывы" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "Бренд" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -888,31 +925,31 @@ msgstr "Группы атрибутов" msgid "quantity" msgstr "Количество" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "Количество отзывов" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "Продукция" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "Промокоды" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "Продукты в продаже" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "Акции" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "Поставщик" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -920,477 +957,481 @@ msgstr "Поставщик" msgid "product" msgstr "Продукт" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "Продукты из списка желаний" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "Списки желаний" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "Tagged products" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "Теги товара" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "Название проекта" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "Электронная почта компании" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "Название компании" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "Адрес компании" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "Номер телефона компании" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', иногда его нужно использовать вместо значения пользователя " "хоста." -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "Пользователь узла электронной почты" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "Максимальная сумма для оплаты" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "Минимальная сумма для оплаты" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "Конфигурация" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "Код языка" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "Название языка" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "Языковой флаг, если он существует :)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "Получите список поддерживаемых языков" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "Результаты поиска товаров" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "Результаты поиска товаров" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "Родитель этой группы" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "Родительская группа атрибутов" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "Имя группы атрибутов" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "Группа атрибутов" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "Категория этого атрибута" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "Группа этого атрибута" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "Строка" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "Целое число" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "Поплавок" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "Булево" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "Массив" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "Объект" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "Тип значения атрибута" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "Тип значения" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "Имя этого атрибута" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "Имя атрибута" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "Атрибут" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "Атрибут этого значения" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "Сопутствующий товар" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "Конкретное значение для этого атрибута" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "Загрузите изображение, представляющее эту категорию" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "Изображение категории" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "Определите процент наценки для товаров в этой категории" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "Родитель данной категории для формирования иерархической структуры" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "Родительская категория" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "Название категории" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "Укажите название этой категории" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "Добавьте подробное описание для этой категории" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "Описание категории" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "Название этой марки" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "Название бренда" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "Загрузите логотип, представляющий этот бренд" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "Маленький образ бренда" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "Загрузите большой логотип, представляющий этот бренд" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "Большой имидж бренда" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "Добавьте подробное описание бренда" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "Описание бренда" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "Дополнительные категории, с которыми ассоциируется этот бренд" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "Категории" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "Категория, к которой относится этот продукт" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "По желанию ассоциируйте этот продукт с брендом" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "Теги, которые помогают описать или сгруппировать этот продукт" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "Теги товара" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "Указывает, поставляется ли этот продукт в цифровом виде" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "Является ли продукт цифровым" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "Обеспечьте четкое идентификационное название продукта" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "Название продукта" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "Добавьте подробное описание продукта" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "Описание товара" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "Парт. номер для данного товара" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "Парт. номер" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" " поставщика." -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "Информация об аутентификации" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "Определите наценку для товаров, полученных от этого продавца" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "Процент наценки поставщика" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "Имя этого продавца" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "Название поставщика" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "Комментарии пользователей об их опыте использования продукта" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "Комментарии к отзывам" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "Сопутствующий товар для заказа" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "Присвоенный пользователем рейтинг продукта" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "Рейтинг продукции" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "Обратная связь" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "Адрес для выставления счетов, используемый для данного заказа" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "Дополнительный промокод, применяемый к этому заказу" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "Примененный промокод" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "Адрес доставки, используемый для данного заказа" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "Адрес доставки" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "Текущий статус заказа в его жизненном цикле" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "Статус заказа" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "" "JSON-структура уведомлений для отображения пользователям, в административном" " интерфейсе используется табличный вид" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "JSON-представление атрибутов заказа для этого заказа" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "Пользователь, разместивший заказ" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "Пользователь" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "Временная метка, когда заказ был завершен" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "Время покупки" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "Человекочитаемый идентификатор для заказа" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "человекочитаемый идентификатор" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "Заказать" -#: core/models.py:527 +#: core/models.py:531 msgid "a user must have only one pending order at a time" msgstr "Пользователь может одновременно иметь только один отложенный ордер!" -#: core/models.py:551 +#: core/models.py:555 msgid "you cannot add products to an order that is not a pending one" msgstr "Вы не можете добавить товары в заказ, который не является отложенным." -#: core/models.py:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "Вы не можете добавить неактивные товары в заказ" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} не существует: {product_uuid}" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Вы не можете удалить товары из заказа, который не является отложенным." -#: core/models.py:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} не существует в запросе <{query}>." -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "Промокод не существует" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "" "Вы можете купить физические товары только с указанным адресом доставки!" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "Адрес не существует" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "В данный момент вы не можете совершить покупку, пожалуйста, повторите " "попытку через несколько минут." -#: core/models.py:677 +#: core/models.py:683 msgid "invalid force value" msgstr "Недопустимое значение силы" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "Вы не можете приобрести пустой заказ!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "Недостаточно средств для выполнения заказа" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1398,189 +1439,192 @@ msgstr "" "Вы не можете купить без регистрации, пожалуйста, предоставьте следующую " "информацию: имя клиента, электронная почта клиента, номер телефона клиента" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "Неверный метод оплаты" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "" +"Неверный способ оплаты: {payment_method} от {available_payment_methods}!" -#: core/models.py:788 +#: core/models.py:805 msgid "the price paid by the customer for this product at purchase time" msgstr "Цена, уплаченная клиентом за данный продукт на момент покупки" -#: core/models.py:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "Покупная цена на момент заказа" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "" "Внутренние комментарии для администраторов об этом заказанном продукте" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "Внутренние комментарии" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "Уведомления пользователей" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "JSON-представление атрибутов этого элемента" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "Атрибуты заказанного продукта" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "Ссылка на родительский заказ, содержащий данный продукт" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "Родительский приказ" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "Конкретный продукт, связанный с этой линией заказа" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "Количество данного товара в заказе" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "Количество продукта" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "Текущий статус этого продукта в заказе" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "Состояние продуктовой линейки" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "Внутренний идентификатор тега для тега продукта" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "Название тега" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "Удобное название для метки продукта" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "Отображаемое имя тега" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "Метка продукта" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "" "Предоставьте альтернативный текст для изображения, чтобы обеспечить " "доступность" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "Альтовый текст изображения" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "Загрузите файл изображения для этого продукта" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "Изображение продукта" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "Определяет порядок отображения изображений" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "Приоритет отображения" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "Продукт, который представлен на этом изображении" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "Изображения продуктов" -#: core/models.py:960 +#: core/models.py:977 msgid "unique code used by a user to redeem a discount" msgstr "Уникальный код, используемый пользователем для получения скидки" -#: core/models.py:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "Идентификатор промо-кода" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "Фиксированная сумма скидки, применяемая, если процент не используется" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "Фиксированная сумма скидки" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Процентная скидка, применяемая, если фиксированная сумма не используется" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "Процентная скидка" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "Временная метка, когда истекает срок действия промокода" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "Время окончания срока действия" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "Время, с которого действует этот промокод" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "Время начала действия" -#: core/models.py:993 +#: core/models.py:1010 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Временная метка, когда был использован промокод, пустая, если он еще не " "использовался" -#: core/models.py:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "Временная метка использования" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "Пользователь, назначенный на этот промокод, если применимо" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "Назначенный пользователь" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "Промокод" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "Промокоды" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1588,184 +1632,192 @@ msgstr "" "Следует определить только один тип скидки (сумма или процент), но не оба или" " ни один из них." -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "Промокоды" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Неверный тип скидки для промокода {self.uuid}" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "Процентная скидка на выбранные продукты" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "Процент скидки" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "Укажите уникальное имя для этой акции" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "Название акции" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "Описание акции" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "Выберите, какие продукты участвуют в этой акции" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "Включенные продукты" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "Продвижение" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "Поставщик, поставляющий данный товар на склад" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "Ассоциированный поставщик" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "Окончательная цена для покупателя после наценок" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "Цена продажи" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "Продукт, связанный с этой складской записью" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "Цена, уплаченная продавцу за этот продукт" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "Цена покупки у поставщика" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "Доступное количество продукта на складе" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "Количество на складе" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "Присвоенный поставщиком SKU для идентификации продукта" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "SKU поставщика" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "Цифровой файл, связанный с этой акцией, если применимо" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "Цифровой файл" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "Проводки по запасам" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "Продукты, которые пользователь отметил как желаемые" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "Пользователь, владеющий этим списком желаний" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "Владелец вишлиста" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "Список желаний" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "Скачать" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "Скачать" -#: core/models.py:1220 +#: core/models.py:1237 msgid "you can not download a digital asset for a non-finished order" msgstr "Вы не можете загрузить цифровой актив для незавершенного заказа" -#: core/models.py:1232 +#: core/models.py:1249 msgid "documentary" msgstr "Документальный фильм" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "Документальные фильмы" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "Неразрешенные" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "Адресная строка для клиента" + +#: core/models.py:1270 +msgid "address line" +msgstr "Адресная строка" + +#: core/models.py:1272 msgid "street" msgstr "Улица" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "Округ" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "Город" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "Регион" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "Почтовый индекс" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "Страна" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "Геолокационная точка(долгота, широта)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "Полный JSON-ответ от геокодера для этого адреса" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "Сохраненный JSON-ответ от сервиса геокодирования" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "Адрес" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "Адреса" @@ -2004,7 +2056,7 @@ msgstr "Вы можете загрузить цифровой актив тол msgid "favicon not found" msgstr "favicon не найден" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, 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 4ac39e3e..20d6397f 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 45cb607c..0cf557e3 100644 --- a/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/core/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -57,12 +57,12 @@ msgstr "激活选定的 %(verbose_name_plural)s" msgid "deactivate selected %(verbose_name_plural)s" msgstr "停用选定的 %(verbose_name_plural)s" -#: core/admin.py:66 core/graphene/object_types.py:391 -#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:383 +#: core/graphene/object_types.py:390 core/models.py:149 core/models.py:157 msgid "attribute value" msgstr "属性值" -#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:36 core/models.py:158 msgid "attribute values" msgstr "属性值" @@ -75,19 +75,19 @@ msgstr "名称" msgid "image" msgstr "图片" -#: core/admin.py:155 core/graphene/object_types.py:344 +#: core/admin.py:155 core/graphene/object_types.py:336 msgid "images" msgstr "图片" -#: core/admin.py:162 core/models.py:1139 +#: core/admin.py:162 core/models.py:1156 msgid "stock" msgstr "库存" -#: core/admin.py:163 core/graphene/object_types.py:445 +#: core/admin.py:163 core/graphene/object_types.py:437 msgid "stocks" msgstr "股票" -#: core/admin.py:192 core/graphene/object_types.py:348 +#: core/admin.py:192 core/graphene/object_types.py:340 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -107,11 +107,11 @@ msgstr "基本信息" msgid "important dates" msgstr "重要日期" -#: core/admin.py:253 core/models.py:846 +#: core/admin.py:253 core/models.py:863 msgid "order product" msgstr "订购产品" -#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 +#: core/admin.py:254 core/graphene/object_types.py:262 core/models.py:864 msgid "order products" msgstr "订购产品" @@ -119,7 +119,7 @@ msgstr "订购产品" msgid "is business" msgstr "Is Business" -#: core/admin.py:396 +#: core/admin.py:397 msgid "config" msgstr "配置" @@ -171,7 +171,7 @@ msgstr "时刻" msgid "successful" msgstr "成功" -#: core/docs/drf/views.py:17 core/graphene/mutations.py:28 +#: core/docs/drf/views.py:17 core/graphene/mutations.py:35 msgid "cache I/O" msgstr "缓存输入/输出" @@ -195,7 +195,7 @@ msgstr "获取应用程序的可公开参数" msgid "send a message to the support team" msgstr "向支持团队发送信息" -#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:54 msgid "request a CORSed URL" msgstr "请求 CORSed URL。只允许使用 https。" @@ -213,241 +213,261 @@ msgid "" "`product_uuid` and `attributes`." msgstr "使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订单。" -#: core/docs/drf/viewsets.py:37 +#: core/docs/drf/viewsets.py:38 msgid "list all attribute groups (simple view)" msgstr "列出所有属性组(简单视图)" -#: core/docs/drf/viewsets.py:41 +#: core/docs/drf/viewsets.py:42 msgid "retrieve a single attribute group (detailed view)" msgstr "检索单个属性组(详细视图)" -#: core/docs/drf/viewsets.py:45 +#: core/docs/drf/viewsets.py:46 msgid "create an attribute group" msgstr "创建属性组" -#: core/docs/drf/viewsets.py:49 +#: core/docs/drf/viewsets.py:50 msgid "delete an attribute group" msgstr "删除属性组" -#: core/docs/drf/viewsets.py:53 +#: core/docs/drf/viewsets.py:54 msgid "rewrite an existing attribute group saving non-editables" msgstr "重写保存不可编辑的现有属性组" -#: core/docs/drf/viewsets.py:57 +#: core/docs/drf/viewsets.py:58 msgid "" "rewrite some fields of an existing attribute group saving non-editables" msgstr "重写现有属性组的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:64 +#: core/docs/drf/viewsets.py:65 msgid "list all attributes (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:68 +#: core/docs/drf/viewsets.py:69 msgid "retrieve a single attribute (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:72 +#: core/docs/drf/viewsets.py:73 msgid "create an attribute" msgstr "创建属性" -#: core/docs/drf/viewsets.py:76 +#: core/docs/drf/viewsets.py:77 msgid "delete an attribute" msgstr "删除属性" -#: core/docs/drf/viewsets.py:80 +#: core/docs/drf/viewsets.py:81 msgid "rewrite an existing attribute saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:84 +#: core/docs/drf/viewsets.py:85 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:91 +#: core/docs/drf/viewsets.py:92 msgid "list all attribute values (simple view)" msgstr "列出所有属性值(简单视图)" -#: core/docs/drf/viewsets.py:95 +#: core/docs/drf/viewsets.py:96 msgid "retrieve a single attribute value (detailed view)" msgstr "读取单个属性值(详细视图)" -#: core/docs/drf/viewsets.py:99 +#: core/docs/drf/viewsets.py:100 msgid "create an attribute value" msgstr "创建属性值" -#: core/docs/drf/viewsets.py:103 +#: core/docs/drf/viewsets.py:104 msgid "delete an attribute value" msgstr "删除属性值" -#: core/docs/drf/viewsets.py:107 +#: core/docs/drf/viewsets.py:108 msgid "rewrite an existing attribute value saving non-editables" msgstr "重写现有属性值,保存不可编辑属性" -#: core/docs/drf/viewsets.py:111 +#: core/docs/drf/viewsets.py:112 msgid "" "rewrite some fields of an existing attribute value saving non-editables" msgstr "重写现有属性值的某些字段,保存不可编辑的属性值" -#: core/docs/drf/viewsets.py:118 +#: core/docs/drf/viewsets.py:119 msgid "list all categories (simple view)" msgstr "列出所有类别(简单视图)" -#: core/docs/drf/viewsets.py:122 +#: core/docs/drf/viewsets.py:123 msgid "retrieve a single category (detailed view)" msgstr "检索单个类别(详细视图)" -#: core/docs/drf/viewsets.py:126 +#: core/docs/drf/viewsets.py:127 msgid "create a category" msgstr "创建类别" -#: core/docs/drf/viewsets.py:130 +#: core/docs/drf/viewsets.py:131 msgid "delete a category" msgstr "删除类别" -#: core/docs/drf/viewsets.py:134 +#: core/docs/drf/viewsets.py:135 msgid "rewrite an existing category saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: core/docs/drf/viewsets.py:138 +#: core/docs/drf/viewsets.py:139 msgid "rewrite some fields of an existing category saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: core/docs/drf/viewsets.py:145 +#: core/docs/drf/viewsets.py:146 msgid "list all orders (simple view)" msgstr "列出所有类别(简单视图)" -#: core/docs/drf/viewsets.py:146 +#: core/docs/drf/viewsets.py:147 msgid "for non-staff users, only their own orders are returned." msgstr "对于非工作人员用户,只有他们自己的订单才会被退回。" -#: core/docs/drf/viewsets.py:150 +#: core/docs/drf/viewsets.py:151 msgid "retrieve a single order (detailed view)" msgstr "检索单个类别(详细视图)" -#: core/docs/drf/viewsets.py:154 +#: core/docs/drf/viewsets.py:155 msgid "create an order" msgstr "创建属性" -#: core/docs/drf/viewsets.py:155 +#: core/docs/drf/viewsets.py:156 msgid "doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:159 +#: core/docs/drf/viewsets.py:160 msgid "delete an order" msgstr "删除属性" -#: core/docs/drf/viewsets.py:163 +#: core/docs/drf/viewsets.py:164 msgid "rewrite an existing order saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: core/docs/drf/viewsets.py:167 +#: core/docs/drf/viewsets.py:168 msgid "rewrite some fields of an existing order saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: core/docs/drf/viewsets.py:171 +#: core/docs/drf/viewsets.py:172 msgid "purchase an order" msgstr "订购时的购买价格" -#: core/docs/drf/viewsets.py:173 +#: core/docs/drf/viewsets.py:174 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:185 core/graphene/mutations.py:226 +#: core/docs/drf/viewsets.py:186 core/graphene/mutations.py:279 msgid "purchase an order without account creation" msgstr "无需创建账户即可购买订单" -#: core/docs/drf/viewsets.py:186 +#: core/docs/drf/viewsets.py:187 msgid "finalizes the order purchase for a non-registered user." msgstr "完成非注册用户的订单购买。" -#: core/docs/drf/viewsets.py:194 +#: core/docs/drf/viewsets.py:195 msgid "add product to order" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:195 +#: core/docs/drf/viewsets.py:196 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品添加到订单中。" -#: core/docs/drf/viewsets.py:200 +#: core/docs/drf/viewsets.py:201 +msgid "add a list of products to order, quantities will not count" +msgstr "添加要订购的产品列表,不计算数量" + +#: core/docs/drf/viewsets.py:202 +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 msgid "remove product from order" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:201 +#: core/docs/drf/viewsets.py:208 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品。" -#: core/docs/drf/viewsets.py:209 +#: core/docs/drf/viewsets.py:213 +msgid "remove product from order, quantities will not count" +msgstr "从订单中删除产品,不计算数量" + +#: core/docs/drf/viewsets.py:214 +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 msgid "list all wishlists (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:210 +#: core/docs/drf/viewsets.py:223 msgid "for non-staff users, only their own wishlists are returned." msgstr "对于非工作人员用户,只返回他们自己的愿望清单。" -#: core/docs/drf/viewsets.py:214 +#: core/docs/drf/viewsets.py:227 msgid "retrieve a single wishlist (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:218 +#: core/docs/drf/viewsets.py:231 msgid "create an wishlist" msgstr "创建属性" -#: core/docs/drf/viewsets.py:219 +#: core/docs/drf/viewsets.py:232 msgid "Doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:223 +#: core/docs/drf/viewsets.py:236 msgid "delete an wishlist" msgstr "删除属性" -#: core/docs/drf/viewsets.py:227 +#: core/docs/drf/viewsets.py:240 msgid "rewrite an existing wishlist saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:231 +#: core/docs/drf/viewsets.py:244 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:235 +#: core/docs/drf/viewsets.py:248 msgid "add product to wishlist" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:236 +#: core/docs/drf/viewsets.py:249 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 将产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:241 +#: core/docs/drf/viewsets.py:254 msgid "remove product from wishlist" msgstr "从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:242 +#: core/docs/drf/viewsets.py:255 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:247 +#: core/docs/drf/viewsets.py:260 msgid "add many products to wishlist" msgstr "将许多产品添加到愿望清单" -#: core/docs/drf/viewsets.py:248 +#: core/docs/drf/viewsets.py:261 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 将许多产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:253 +#: core/docs/drf/viewsets.py:266 msgid "remove many products from wishlist" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:254 +#: core/docs/drf/viewsets.py:267 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: core/docs/drf/viewsets.py:261 +#: core/docs/drf/viewsets.py:274 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -467,59 +487,59 @@ msgstr "" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\"、\"bluetooth\"]`、\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:277 +#: core/docs/drf/viewsets.py:290 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: core/docs/drf/viewsets.py:282 +#: core/docs/drf/viewsets.py:295 msgid "(exact) Product UUID" msgstr "(产品 UUID" -#: core/docs/drf/viewsets.py:288 +#: core/docs/drf/viewsets.py:301 msgid "(icontains) Product name" msgstr "(图示) 产品名称" -#: core/docs/drf/viewsets.py:294 +#: core/docs/drf/viewsets.py:307 msgid "(list) Category names, case-insensitive" msgstr "(列表) 类别名称,不区分大小写" -#: core/docs/drf/viewsets.py:300 +#: core/docs/drf/viewsets.py:313 msgid "(exact) Category UUID" msgstr "(类别 UUID" -#: core/docs/drf/viewsets.py:306 +#: core/docs/drf/viewsets.py:319 msgid "(list) Tag names, case-insensitive" msgstr "(标签名称,不区分大小写" -#: core/docs/drf/viewsets.py:312 +#: core/docs/drf/viewsets.py:325 msgid "(gte) Minimum stock price" msgstr "(gte) 最低股价" -#: core/docs/drf/viewsets.py:318 +#: core/docs/drf/viewsets.py:331 msgid "(lte) Maximum stock price" msgstr "(lte) 最高股价" -#: core/docs/drf/viewsets.py:324 +#: core/docs/drf/viewsets.py:337 msgid "(exact) Only active products" msgstr "(准确)只有活性产品" -#: core/docs/drf/viewsets.py:330 +#: core/docs/drf/viewsets.py:343 msgid "(iexact) Brand name" msgstr "(iexact) 品牌名称" -#: core/docs/drf/viewsets.py:342 +#: core/docs/drf/viewsets.py:355 msgid "(gt) Minimum stock quantity" msgstr "(gt) 最低库存量" -#: core/docs/drf/viewsets.py:348 +#: core/docs/drf/viewsets.py:361 msgid "(exact) Product slug" msgstr "(准确) 产品标题" -#: core/docs/drf/viewsets.py:354 +#: core/docs/drf/viewsets.py:367 msgid "(exact) Digital vs. physical" msgstr "(准确)数字与实物" -#: core/docs/drf/viewsets.py:361 +#: core/docs/drf/viewsets.py:374 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" @@ -527,65 +547,65 @@ msgstr "" "用逗号分隔的要排序的字段列表。前缀为 `-` 表示降序。 \n" "**允许:** uuid、评分、名称、标签、创建、修改、价格、随机" -#: core/docs/drf/viewsets.py:375 +#: core/docs/drf/viewsets.py:388 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 -#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 +#: core/docs/drf/viewsets.py:393 core/docs/drf/viewsets.py:415 +#: core/docs/drf/viewsets.py:430 core/docs/drf/viewsets.py:445 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: core/docs/drf/viewsets.py:390 +#: core/docs/drf/viewsets.py:403 msgid "create a product" msgstr "创建产品" -#: core/docs/drf/viewsets.py:397 +#: core/docs/drf/viewsets.py:410 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: core/docs/drf/viewsets.py:412 +#: core/docs/drf/viewsets.py:425 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" -#: core/docs/drf/viewsets.py:427 +#: core/docs/drf/viewsets.py:440 msgid "delete a product" msgstr "删除产品" -#: core/docs/drf/viewsets.py:445 +#: core/docs/drf/viewsets.py:458 msgid "list all addresses" msgstr "列出所有地址" -#: core/docs/drf/viewsets.py:452 +#: core/docs/drf/viewsets.py:465 msgid "retrieve a single address" msgstr "检索单个地址" -#: core/docs/drf/viewsets.py:459 +#: core/docs/drf/viewsets.py:472 msgid "create a new address" msgstr "创建新地址" -#: core/docs/drf/viewsets.py:467 +#: core/docs/drf/viewsets.py:480 msgid "delete an address" msgstr "删除地址" -#: core/docs/drf/viewsets.py:474 +#: core/docs/drf/viewsets.py:487 msgid "update an entire address" msgstr "更新整个地址" -#: core/docs/drf/viewsets.py:482 +#: core/docs/drf/viewsets.py:495 msgid "partially update an address" msgstr "部分更新地址" -#: core/docs/drf/viewsets.py:490 +#: core/docs/drf/viewsets.py:503 msgid "autocomplete address suggestions" msgstr "自动完成地址输入" -#: core/docs/drf/viewsets.py:495 +#: core/docs/drf/viewsets.py:508 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "原始数据查询字符串,请附加来自地理 IP 端点的数据" -#: core/docs/drf/viewsets.py:501 +#: core/docs/drf/viewsets.py:514 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "限制结果数量,1 < limit < 10,默认:5" @@ -593,129 +613,142 @@ msgstr "限制结果数量,1 < limit < 10,默认:5" msgid "no search term provided." msgstr "未提供搜索条件。" -#: core/graphene/mutations.py:31 +#: core/graphene/mutations.py:38 msgid "key to look for in or set into the cache" msgstr "在缓存中查找或设置的关键字" -#: core/graphene/mutations.py:32 +#: core/graphene/mutations.py:39 msgid "data to store in cache" msgstr "缓存中要存储的数据" -#: core/graphene/mutations.py:35 +#: core/graphene/mutations.py:42 msgid "timeout in seconds to set the data for into the cache" msgstr "将数据设置为缓存的超时(以秒为单位" -#: core/graphene/mutations.py:38 +#: core/graphene/mutations.py:45 msgid "cached data" msgstr "缓存数据" -#: core/graphene/mutations.py:52 +#: core/graphene/mutations.py:59 msgid "camelized JSON data from the requested URL" msgstr "从请求的 URL 中获取驼峰化 JSON 数据" -#: core/graphene/mutations.py:57 core/views.py:169 +#: core/graphene/mutations.py:64 core/views.py:169 msgid "only URLs starting with http(s):// are allowed" msgstr "只允许使用以 http(s):// 开头的 URL" -#: core/graphene/mutations.py:72 +#: core/graphene/mutations.py:79 msgid "add a product to the order" msgstr "在订单中添加产品" -#: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:221 +#: 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}" -#: core/graphene/mutations.py:98 core/graphene/mutations.py:145 +#: core/graphene/mutations.py:105 core/graphene/mutations.py:152 msgid "remove a product from the order" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:124 +#: core/graphene/mutations.py:131 msgid "remove all products from the order" msgstr "从订单中删除所有产品" -#: core/graphene/mutations.py:167 +#: core/graphene/mutations.py:174 msgid "buy an order" msgstr "购买订单" -#: core/graphene/mutations.py:194 +#: core/graphene/mutations.py:201 core/graphene/mutations.py:253 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" -#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 -#: core/graphene/mutations.py:422 core/viewsets.py:261 +#: core/graphene/mutations.py:225 core/graphene/mutations.py:441 +#: core/graphene/mutations.py:475 core/viewsets.py:283 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" -#: core/graphene/mutations.py:272 +#: core/graphene/mutations.py:233 +msgid "perform an action on a list of products in the order" +msgstr "对订单中的产品列表执行操作" + +#: core/graphene/mutations.py:238 +msgid "remove/add" +msgstr "删除/添加" + +#: core/graphene/mutations.py:269 +msgid "action must be either add or remove" +msgstr "操作必须是 \"添加 \"或 \"删除\"!" + +#: core/graphene/mutations.py:325 msgid "add a product to the wishlist" msgstr "在订单中添加产品" -#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 -#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 +#: core/graphene/mutations.py:347 core/graphene/mutations.py:374 +#: core/graphene/mutations.py:401 core/graphene/mutations.py:444 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "未找到愿望清单 {wishlist_uuid}" -#: core/graphene/mutations.py:299 +#: core/graphene/mutations.py:352 msgid "remove a product from the wishlist" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:326 +#: core/graphene/mutations.py:379 msgid "remove all products from the wishlist" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:353 +#: core/graphene/mutations.py:406 msgid "buy all products from the wishlist" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:396 +#: core/graphene/mutations.py:449 msgid "buy a product" msgstr "购买订单" -#: core/graphene/mutations.py:402 +#: core/graphene/mutations.py:455 msgid "" "please send the attributes as the string formatted like " "attr1=value1,attr2=value2" msgstr "请以字符串形式发送属性,格式如 attr1=value1,attr2=value2" -#: core/graphene/mutations.py:485 +#: core/graphene/mutations.py:538 msgid "original address string provided by the user" msgstr "用户提供的原始地址字符串" -#: core/graphene/mutations.py:519 +#: core/graphene/mutations.py:572 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}不存在" -#: core/graphene/mutations.py:532 +#: core/graphene/mutations.py:585 msgid "limit must be between 1 and 10" msgstr "限值必须在 1 和 10 之间" -#: core/graphene/mutations.py:576 +#: core/graphene/mutations.py:629 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 工作起来得心应手" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 -#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 +#: core/graphene/object_types.py:43 core/graphene/object_types.py:245 +#: core/graphene/object_types.py:286 core/models.py:126 core/models.py:489 msgid "attributes" msgstr "属性" -#: core/graphene/object_types.py:55 +#: core/graphene/object_types.py:56 msgid "grouped attributes" msgstr "分组属性" -#: core/graphene/object_types.py:62 +#: core/graphene/object_types.py:63 msgid "groups of attributes" msgstr "属性组" -#: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 +#: core/graphene/object_types.py:76 core/graphene/object_types.py:104 +#: core/graphene/object_types.py:132 core/models.py:90 core/models.py:220 msgid "categories" msgstr "类别" -#: core/graphene/object_types.py:82 core/models.py:266 +#: core/graphene/object_types.py:83 core/models.py:267 msgid "brands" msgstr "品牌" @@ -723,8 +756,8 @@ msgstr "品牌" msgid "category image url" msgstr "类别" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 -#: core/models.py:175 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:195 +#: core/models.py:176 msgid "markup percentage" msgstr "加价百分比" @@ -737,94 +770,94 @@ msgid "" "minimum and maximum prices for products in this category, if available." msgstr "该类别产品的最低和最高价格(如有)。" -#: core/graphene/object_types.py:210 core/models.py:403 +#: core/graphene/object_types.py:202 core/models.py:404 msgid "vendors" msgstr "供应商" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:206 msgid "Latitude (Y coordinate)" msgstr "纬度(Y 坐标)" -#: core/graphene/object_types.py:215 +#: core/graphene/object_types.py:207 msgid "Longitude (X coordinate)" msgstr "经度(X 坐标)" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:233 msgid "comment" msgstr "如何" -#: core/graphene/object_types.py:242 +#: core/graphene/object_types.py:234 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "评级值从 1 到 10(包括 10),如果未设置,则为 0。" -#: core/graphene/object_types.py:249 +#: core/graphene/object_types.py:241 msgid "represents feedback from a user." msgstr "代表用户的反馈意见。" -#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 -#: core/models.py:482 +#: core/graphene/object_types.py:246 core/graphene/object_types.py:287 +#: core/models.py:483 msgid "notifications" msgstr "通知" -#: core/graphene/object_types.py:255 +#: core/graphene/object_types.py:247 msgid "download url for this order product if applicable" msgstr "此订单产品的下载网址(如适用" -#: core/graphene/object_types.py:284 +#: core/graphene/object_types.py:276 msgid "a list of order products in this order" msgstr "该订单中的订单产品列表" -#: core/graphene/object_types.py:286 core/models.py:452 +#: core/graphene/object_types.py:278 core/models.py:453 msgid "billing address" msgstr "账单地址" -#: core/graphene/object_types.py:289 +#: core/graphene/object_types.py:281 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "此订单的送货地址,如果与账单地址相同或不适用,请留空" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:283 msgid "total price of this order" msgstr "订单总价" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:284 msgid "total quantity of products in order" msgstr "订单中产品的总数量" -#: core/graphene/object_types.py:293 +#: core/graphene/object_types.py:285 msgid "are all products in the order digital" msgstr "订单中的所有产品都是数字产品吗?" -#: core/graphene/object_types.py:313 core/models.py:516 +#: core/graphene/object_types.py:305 core/models.py:517 msgid "orders" msgstr "订单" -#: core/graphene/object_types.py:329 +#: core/graphene/object_types.py:321 msgid "image url" msgstr "图片 URL" -#: core/graphene/object_types.py:336 +#: core/graphene/object_types.py:328 msgid "product's images" msgstr "产品图片" -#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 +#: core/graphene/object_types.py:335 core/models.py:219 core/models.py:277 msgid "category" msgstr "类别" -#: core/graphene/object_types.py:345 core/models.py:439 +#: core/graphene/object_types.py:337 core/models.py:440 msgid "feedbacks" msgstr "反馈意见" -#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 +#: core/graphene/object_types.py:338 core/models.py:266 core/models.py:285 msgid "brand" msgstr "品牌" -#: core/graphene/object_types.py:347 core/models.py:79 +#: core/graphene/object_types.py:339 core/models.py:80 msgid "attribute groups" msgstr "属性组" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:341 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -832,31 +865,31 @@ msgstr "属性组" msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:350 +#: core/graphene/object_types.py:342 msgid "number of feedbacks" msgstr "反馈数量" -#: core/graphene/object_types.py:368 core/models.py:328 +#: core/graphene/object_types.py:360 core/models.py:329 msgid "products" msgstr "产品" -#: core/graphene/object_types.py:416 +#: core/graphene/object_types.py:408 msgid "promocodes" msgstr "促销代码" -#: core/graphene/object_types.py:426 +#: core/graphene/object_types.py:418 msgid "products on sale" msgstr "销售产品" -#: core/graphene/object_types.py:433 core/models.py:1080 +#: core/graphene/object_types.py:425 core/models.py:1097 msgid "promotions" msgstr "促销活动" -#: core/graphene/object_types.py:437 core/models.py:402 +#: core/graphene/object_types.py:429 core/models.py:403 msgid "vendor" msgstr "供应商" -#: core/graphene/object_types.py:438 core/models.py:327 +#: core/graphene/object_types.py:430 core/models.py:328 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -864,831 +897,845 @@ msgstr "供应商" msgid "product" msgstr "产品" -#: core/graphene/object_types.py:449 core/models.py:1150 +#: core/graphene/object_types.py:441 core/models.py:1167 msgid "wishlisted products" msgstr "心愿单上的产品" -#: core/graphene/object_types.py:455 core/models.py:1167 +#: core/graphene/object_types.py:447 core/models.py:1184 msgid "wishlists" msgstr "愿望清单" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:451 +msgid "tagged products" +msgstr "标签产品" + +#: core/graphene/object_types.py:458 core/models.py:291 core/models.py:928 +msgid "product tags" +msgstr "产品标签" + +#: core/graphene/object_types.py:462 msgid "project name" msgstr "项目名称" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:463 msgid "company email" msgstr "公司电子邮件" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:464 msgid "company name" msgstr "公司名称" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:465 msgid "company address" msgstr "公司地址" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:466 msgid "company phone number" msgstr "公司电话号码" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:467 msgid "email from, sometimes it must be used instead of host user value" msgstr "电子邮件来自\",有时必须使用它来代替主机用户值" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:468 msgid "email host user" msgstr "电子邮件主机用户" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:469 msgid "maximum amount for payment" msgstr "最高付款额" -#: core/graphene/object_types.py:467 +#: core/graphene/object_types.py:470 msgid "minimum amount for payment" msgstr "最低付款额" -#: core/graphene/object_types.py:470 +#: core/graphene/object_types.py:473 msgid "company configuration" msgstr "配置" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:477 msgid "language code" msgstr "语言代码" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:478 msgid "language name" msgstr "语言名称" -#: core/graphene/object_types.py:476 +#: core/graphene/object_types.py:479 msgid "language flag, if exists :)" msgstr "语言标志(如果有):)" -#: core/graphene/object_types.py:479 +#: core/graphene/object_types.py:482 msgid "supported languages" msgstr "获取支持的语言列表" -#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 core/graphene/object_types.py:511 +#: core/graphene/object_types.py:512 msgid "products search results" msgstr "产品搜索结果" -#: core/graphene/object_types.py:510 +#: core/graphene/object_types.py:513 msgid "posts search results" msgstr "产品搜索结果" -#: core/models.py:64 +#: core/models.py:65 msgid "parent of this group" msgstr "本组家长" -#: core/models.py:65 +#: core/models.py:66 msgid "parent attribute group" msgstr "父属性组" -#: core/models.py:69 core/models.py:70 +#: core/models.py:70 core/models.py:71 msgid "attribute group's name" msgstr "属性组名称" -#: core/models.py:78 core/models.py:97 +#: core/models.py:79 core/models.py:98 msgid "attribute group" msgstr "属性组" -#: core/models.py:88 +#: core/models.py:89 msgid "category of this attribute" msgstr "该属性的类别" -#: core/models.py:96 +#: core/models.py:97 msgid "group of this attribute" msgstr "该属性的组" -#: core/models.py:102 +#: core/models.py:103 msgid "string" msgstr "字符串" -#: core/models.py:103 +#: core/models.py:104 msgid "integer" msgstr "整数" -#: core/models.py:104 +#: core/models.py:105 msgid "float" msgstr "浮动" -#: core/models.py:105 +#: core/models.py:106 msgid "boolean" msgstr "布尔型" -#: core/models.py:106 +#: core/models.py:107 msgid "array" msgstr "阵列" -#: core/models.py:107 +#: core/models.py:108 msgid "object" msgstr "对象" -#: core/models.py:109 +#: core/models.py:110 msgid "type of the attribute's value" msgstr "属性值的类型" -#: core/models.py:110 +#: core/models.py:111 msgid "value type" msgstr "价值类型" -#: core/models.py:115 +#: core/models.py:116 msgid "name of this attribute" msgstr "该属性的名称" -#: core/models.py:116 +#: core/models.py:117 msgid "attribute's name" msgstr "属性名称" -#: core/models.py:124 core/models.py:136 +#: core/models.py:125 core/models.py:137 #: core/templates/digital_order_delivered_email.html:132 msgid "attribute" msgstr "属性" -#: core/models.py:135 +#: core/models.py:136 msgid "attribute of this value" msgstr "该值的属性" -#: core/models.py:143 +#: core/models.py:144 msgid "the specific product associated with this attribute's value" msgstr "与该属性值相关的特定产品" -#: core/models.py:144 core/models.py:823 core/models.py:937 -#: core/models.py:1106 +#: core/models.py:145 core/models.py:840 core/models.py:954 +#: core/models.py:1123 msgid "associated product" msgstr "相关产品" -#: core/models.py:149 +#: core/models.py:150 msgid "the specific value for this attribute" msgstr "该属性的具体值" -#: core/models.py:166 +#: core/models.py:167 msgid "upload an image representing this category" msgstr "上传代表该类别的图片" -#: core/models.py:169 +#: core/models.py:170 msgid "category image" msgstr "类别 图像" -#: core/models.py:174 +#: core/models.py:175 msgid "define a markup percentage for products in this category" msgstr "定义该类别产品的加价百分比" -#: core/models.py:183 +#: core/models.py:184 msgid "parent of this category to form a hierarchical structure" msgstr "该类别的父类别,形成等级结构" -#: core/models.py:184 +#: core/models.py:185 msgid "parent category" msgstr "父类" -#: core/models.py:189 +#: core/models.py:190 msgid "category name" msgstr "类别名称" -#: core/models.py:190 +#: core/models.py:191 msgid "provide a name for this category" msgstr "提供该类别的名称" -#: core/models.py:197 +#: core/models.py:198 msgid "add a detailed description for this category" msgstr "为该类别添加详细说明" -#: core/models.py:198 +#: core/models.py:199 msgid "category description" msgstr "类别说明" -#: core/models.py:228 +#: core/models.py:229 msgid "name of this brand" msgstr "品牌名称" -#: core/models.py:229 +#: core/models.py:230 msgid "brand name" msgstr "品牌名称" -#: core/models.py:236 +#: core/models.py:237 msgid "upload a logo representing this brand" msgstr "上传代表该品牌的徽标" -#: core/models.py:238 +#: core/models.py:239 msgid "brand small image" msgstr "品牌小形象" -#: core/models.py:244 +#: core/models.py:245 msgid "upload a big logo representing this brand" msgstr "上传代表该品牌的大徽标" -#: core/models.py:246 +#: core/models.py:247 msgid "brand big image" msgstr "品牌大形象" -#: core/models.py:251 +#: core/models.py:252 msgid "add a detailed description of the brand" msgstr "添加品牌的详细描述" -#: core/models.py:252 +#: core/models.py:253 msgid "brand description" msgstr "品牌描述" -#: core/models.py:257 +#: core/models.py:258 msgid "optional categories that this brand is associated with" msgstr "与该品牌相关的可选类别" -#: core/models.py:258 +#: core/models.py:259 msgid "associated categories" msgstr "类别" -#: core/models.py:275 +#: core/models.py:276 msgid "category this product belongs to" msgstr "该产品所属类别" -#: core/models.py:283 +#: core/models.py:284 msgid "optionally associate this product with a brand" msgstr "可选择将该产品与某个品牌联系起来" -#: core/models.py:289 +#: core/models.py:290 msgid "tags that help describe or group this product" msgstr "有助于描述或归类该产品的标签" -#: core/models.py:290 core/models.py:911 -msgid "product tags" -msgstr "产品标签" - -#: core/models.py:294 +#: core/models.py:295 msgid "indicates whether this product is digitally delivered" msgstr "表示该产品是否以数字方式交付" -#: core/models.py:295 +#: core/models.py:296 msgid "is product digital" msgstr "产品是否数字化" -#: core/models.py:301 +#: core/models.py:302 msgid "provide a clear identifying name for the product" msgstr "为产品提供一个明确的标识名称" -#: core/models.py:302 +#: core/models.py:303 msgid "product name" msgstr "产品名称" -#: core/models.py:307 core/models.py:1068 +#: core/models.py:308 core/models.py:1085 msgid "add a detailed description of the product" msgstr "添加产品的详细描述" -#: core/models.py:308 +#: core/models.py:309 msgid "product description" msgstr "产品说明" -#: core/models.py:315 +#: core/models.py:316 msgid "part number for this product" msgstr "该产品的零件编号" -#: core/models.py:316 +#: core/models.py:317 msgid "part number" msgstr "部件编号" -#: core/models.py:380 +#: core/models.py:381 msgid "stores credentials and endpoints required for vendor communication" msgstr "存储供应商应用程序接口通信所需的凭证和端点" -#: core/models.py:381 +#: core/models.py:382 msgid "authentication info" msgstr "认证信息" -#: core/models.py:386 +#: core/models.py:387 msgid "define the markup for products retrieved from this vendor" msgstr "定义从该供应商获取的产品的标记" -#: core/models.py:387 +#: core/models.py:388 msgid "vendor markup percentage" msgstr "供应商加价百分比" -#: core/models.py:391 +#: core/models.py:392 msgid "name of this vendor" msgstr "供应商名称" -#: core/models.py:392 +#: core/models.py:393 msgid "vendor name" msgstr "供应商名称" -#: core/models.py:415 +#: core/models.py:416 msgid "user-provided comments about their experience with the product" msgstr "用户提供的产品使用体验评论" -#: core/models.py:416 +#: core/models.py:417 msgid "feedback comments" msgstr "反馈意见" -#: core/models.py:423 +#: core/models.py:424 msgid "" "references the specific product in an order that this feedback is about" msgstr "引用该反馈意见涉及的订单中的具体产品" -#: core/models.py:424 +#: core/models.py:425 msgid "related order product" msgstr "相关订购产品" -#: core/models.py:429 +#: core/models.py:430 msgid "user-assigned rating for the product" msgstr "用户对产品的评分" -#: core/models.py:430 +#: core/models.py:431 msgid "product rating" msgstr "产品评级" -#: core/models.py:438 +#: core/models.py:439 msgid "feedback" msgstr "反馈意见" -#: core/models.py:451 +#: core/models.py:452 msgid "the billing address used for this order" msgstr "该订单使用的账单地址" -#: core/models.py:459 +#: core/models.py:460 msgid "optional promo code applied to this order" msgstr "此订单可选择使用促销代码" -#: core/models.py:460 +#: core/models.py:461 msgid "applied promo code" msgstr "应用促销代码" -#: core/models.py:468 +#: core/models.py:469 msgid "the shipping address used for this order" msgstr "该订单使用的送货地址" -#: core/models.py:469 +#: core/models.py:470 msgid "shipping address" msgstr "送货地址" -#: core/models.py:475 +#: core/models.py:476 msgid "current status of the order in its lifecycle" msgstr "订单在其生命周期中的当前状态" -#: core/models.py:476 +#: core/models.py:477 msgid "order status" msgstr "订单状态" -#: core/models.py:481 core/models.py:800 +#: core/models.py:482 core/models.py:817 msgid "json structure of notifications to display to users" msgstr "向用户显示的通知的 JSON 结构,在管理用户界面中使用表格视图" -#: core/models.py:487 +#: core/models.py:488 msgid "json representation of order attributes for this order" msgstr "该订单属性的 JSON 表示形式" -#: core/models.py:493 +#: core/models.py:494 msgid "the user who placed the order" msgstr "下订单的用户" -#: core/models.py:494 +#: core/models.py:495 msgid "user" msgstr "用户" -#: core/models.py:500 +#: core/models.py:501 msgid "the timestamp when the order was finalized" msgstr "订单确定的时间戳" -#: core/models.py:501 +#: core/models.py:502 msgid "buy time" msgstr "购买时间" -#: core/models.py:508 +#: core/models.py:509 msgid "a human-readable identifier for the order" msgstr "订单的人工可读标识符" -#: core/models.py:509 +#: core/models.py:510 msgid "human readable id" msgstr "人类可读 ID" -#: core/models.py:515 +#: core/models.py:516 msgid "order" msgstr "订购" -#: core/models.py:527 +#: core/models.py:531 msgid "a user must have only one pending order at a time" msgstr "用户每次只能有一个挂单!" -#: core/models.py:551 +#: core/models.py:555 msgid "you cannot add products to an order that is not a pending one" msgstr "您不能向非待处理订单添加产品" -#: core/models.py:556 +#: core/models.py:560 msgid "you cannot add inactive products to order" msgstr "您不能在订单中添加非活动产品" -#: core/models.py:573 +#: core/models.py:577 msgid "you cannot add more products than available in stock" msgstr "添加的产品数量不能超过现有库存" -#: core/models.py:582 core/models.py:599 core/models.py:623 -#: core/models.py:1177 core/models.py:1189 +#: core/models.py:586 core/models.py:606 core/models.py:630 +#: core/models.py:1194 core/models.py:1206 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} 不存在:{product_uuid} 不存在" -#: core/models.py:586 core/models.py:607 core/models.py:615 +#: core/models.py:590 core/models.py:614 core/models.py:622 msgid "you cannot remove products from an order that is not a pending one" msgstr "您不能从非待处理订单中删除产品" -#: core/models.py:603 +#: core/models.py:610 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "查询 <{query}> 时 {name} 不存在" -#: core/models.py:634 +#: core/models.py:641 msgid "promocode does not exist" msgstr "促销代码不存在" -#: core/models.py:643 +#: core/models.py:650 msgid "you can only buy physical products with shipping address specified" msgstr "您只能购买指定送货地址的实物产品!" -#: core/models.py:662 +#: core/models.py:669 msgid "address does not exist" msgstr "地址不存在" -#: core/models.py:674 core/models.py:715 +#: core/models.py:680 core/models.py:721 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "您现在无法购买,请稍后再试。" -#: core/models.py:677 +#: core/models.py:683 msgid "invalid force value" msgstr "力值无效" -#: core/models.py:682 core/models.py:718 +#: core/models.py:688 core/models.py:724 msgid "you cannot purchase an empty order!" msgstr "您不能购买空单!" -#: core/models.py:697 +#: core/models.py:703 msgid "insufficient funds to complete the order" msgstr "资金不足,无法完成订单" -#: core/models.py:727 +#: core/models.py:733 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "未经注册不能购买,请提供以下信息:客户姓名、客户电子邮件、客户电话号码" -#: core/models.py:735 -msgid "invalid payment method" -msgstr "付款方式无效" +#: core/models.py:742 +#, python-brace-format +msgid "" +"invalid payment method: {payment_method} from {available_payment_methods}" +msgstr "付款方式无效:来自 {available_payment_methods} 的 {payment_method} !" -#: core/models.py:788 +#: core/models.py:805 msgid "the price paid by the customer for this product at purchase time" msgstr "客户购买该产品时支付的价格" -#: core/models.py:789 +#: core/models.py:806 msgid "purchase price at order time" msgstr "订购时的购买价格" -#: core/models.py:794 +#: core/models.py:811 msgid "internal comments for admins about this ordered product" msgstr "管理员对该订购产品的内部评论" -#: core/models.py:795 +#: core/models.py:812 msgid "internal comments" msgstr "内部意见" -#: core/models.py:801 +#: core/models.py:818 msgid "user notifications" msgstr "用户通知" -#: core/models.py:806 +#: core/models.py:823 msgid "json representation of this item's attributes" msgstr "该项属性的 JSON 表示形式" -#: core/models.py:807 +#: core/models.py:824 msgid "ordered product attributes" msgstr "有序的产品属性" -#: core/models.py:812 +#: core/models.py:829 msgid "reference to the parent order that contains this product" msgstr "对包含该产品的父订单的引用" -#: core/models.py:813 +#: core/models.py:830 msgid "parent order" msgstr "父顺序" -#: core/models.py:822 +#: core/models.py:839 msgid "the specific product associated with this order line" msgstr "与该订单项目相关的具体产品" -#: core/models.py:829 +#: core/models.py:846 msgid "quantity of this specific product in the order" msgstr "订单中该特定产品的数量" -#: core/models.py:830 +#: core/models.py:847 msgid "product quantity" msgstr "产品数量" -#: core/models.py:837 +#: core/models.py:854 msgid "current status of this product in the order" msgstr "订单中该产品的当前状态" -#: core/models.py:838 +#: core/models.py:855 msgid "product line status" msgstr "产品系列状态" -#: core/models.py:896 +#: core/models.py:913 msgid "internal tag identifier for the product tag" msgstr "产品标签的内部标签标识符" -#: core/models.py:897 +#: core/models.py:914 msgid "tag name" msgstr "标签名称" -#: core/models.py:901 +#: core/models.py:918 msgid "user-friendly name for the product tag" msgstr "方便用户使用的产品标签名称" -#: core/models.py:902 +#: core/models.py:919 msgid "tag display name" msgstr "标签显示名称" -#: core/models.py:910 +#: core/models.py:927 msgid "product tag" msgstr "产品标签" -#: core/models.py:919 +#: core/models.py:936 msgid "provide alternative text for the image for accessibility" msgstr "为图像提供替代文字,以便于访问" -#: core/models.py:920 +#: core/models.py:937 msgid "image alt text" msgstr "图片 alt 文本" -#: core/models.py:923 +#: core/models.py:940 msgid "upload the image file for this product" msgstr "上传该产品的图片文件" -#: core/models.py:924 core/models.py:949 +#: core/models.py:941 core/models.py:966 msgid "product image" msgstr "产品图片" -#: core/models.py:930 +#: core/models.py:947 msgid "determines the order in which images are displayed" msgstr "确定图像的显示顺序" -#: core/models.py:931 +#: core/models.py:948 msgid "display priority" msgstr "显示优先级" -#: core/models.py:936 +#: core/models.py:953 msgid "the product that this image represents" msgstr "该图片所代表的产品" -#: core/models.py:950 +#: core/models.py:967 msgid "product images" msgstr "产品图片" -#: core/models.py:960 +#: core/models.py:977 msgid "unique code used by a user to redeem a discount" msgstr "用户用于兑换折扣的唯一代码" -#: core/models.py:961 +#: core/models.py:978 msgid "promo code identifier" msgstr "促销代码标识符" -#: core/models.py:968 +#: core/models.py:985 msgid "fixed discount amount applied if percent is not used" msgstr "如果不使用百分比,则使用固定折扣额" -#: core/models.py:969 +#: core/models.py:986 msgid "fixed discount amount" msgstr "固定折扣额" -#: core/models.py:975 +#: core/models.py:992 msgid "percentage discount applied if fixed amount is not used" msgstr "未使用固定金额时适用的折扣百分比" -#: core/models.py:976 +#: core/models.py:993 msgid "percentage discount" msgstr "折扣百分比" -#: core/models.py:981 +#: core/models.py:998 msgid "timestamp when the promocode expires" msgstr "促销代码过期的时间戳" -#: core/models.py:982 +#: core/models.py:999 msgid "end validity time" msgstr "结束有效时间" -#: core/models.py:987 +#: core/models.py:1004 msgid "timestamp from which this promocode is valid" msgstr "该促销代码有效的时间戳" -#: core/models.py:988 +#: core/models.py:1005 msgid "start validity time" msgstr "开始有效时间" -#: core/models.py:993 +#: core/models.py:1010 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "使用促销代码的时间戳,如果尚未使用,则留空" -#: core/models.py:994 +#: core/models.py:1011 msgid "usage timestamp" msgstr "使用时间戳" -#: core/models.py:999 +#: core/models.py:1016 msgid "user assigned to this promocode if applicable" msgstr "分配给此促销代码的用户(如适用" -#: core/models.py:1000 +#: core/models.py:1017 msgid "assigned user" msgstr "指定用户" -#: core/models.py:1007 +#: core/models.py:1024 msgid "promo code" msgstr "促销代码" -#: core/models.py:1008 +#: core/models.py:1025 msgid "promo codes" msgstr "促销代码" -#: core/models.py:1015 +#: core/models.py:1032 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" -#: core/models.py:1030 +#: core/models.py:1047 msgid "promocode already used" msgstr "促销代码已被使用" -#: core/models.py:1044 +#: core/models.py:1061 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "促销代码 {self.uuid} 的折扣类型无效" -#: core/models.py:1056 +#: core/models.py:1073 msgid "percentage discount for the selected products" msgstr "所选产品的折扣百分比" -#: core/models.py:1057 +#: core/models.py:1074 msgid "discount percentage" msgstr "折扣百分比" -#: core/models.py:1062 +#: core/models.py:1079 msgid "provide a unique name for this promotion" msgstr "为该促销活动提供一个独特的名称" -#: core/models.py:1063 +#: core/models.py:1080 msgid "promotion name" msgstr "推广名称" -#: core/models.py:1069 +#: core/models.py:1086 msgid "promotion description" msgstr "促销说明" -#: core/models.py:1074 +#: core/models.py:1091 msgid "select which products are included in this promotion" msgstr "选择促销活动包括哪些产品" -#: core/models.py:1075 +#: core/models.py:1092 msgid "included products" msgstr "包括产品" -#: core/models.py:1079 +#: core/models.py:1096 msgid "promotion" msgstr "促销活动" -#: core/models.py:1094 +#: core/models.py:1111 msgid "the vendor supplying this product stock" msgstr "提供该产品库存的供应商" -#: core/models.py:1095 +#: core/models.py:1112 msgid "associated vendor" msgstr "相关供应商" -#: core/models.py:1099 +#: core/models.py:1116 msgid "final price to the customer after markups" msgstr "加价后给客户的最终价格" -#: core/models.py:1100 +#: core/models.py:1117 msgid "selling price" msgstr "销售价格" -#: core/models.py:1105 +#: core/models.py:1122 msgid "the product associated with this stock entry" msgstr "与该库存条目相关的产品" -#: core/models.py:1113 +#: core/models.py:1130 msgid "the price paid to the vendor for this product" msgstr "为该产品支付给供应商的价格" -#: core/models.py:1114 +#: core/models.py:1131 msgid "vendor purchase price" msgstr "供应商购买价格" -#: core/models.py:1118 +#: core/models.py:1135 msgid "available quantity of the product in stock" msgstr "产品的可用库存量" -#: core/models.py:1119 +#: core/models.py:1136 msgid "quantity in stock" msgstr "库存数量" -#: core/models.py:1123 +#: core/models.py:1140 msgid "vendor-assigned SKU for identifying the product" msgstr "供应商指定的 SKU,用于识别产品" -#: core/models.py:1124 +#: core/models.py:1141 msgid "vendor sku" msgstr "供应商 SKU" -#: core/models.py:1130 +#: core/models.py:1147 msgid "digital file associated with this stock if applicable" msgstr "与该库存相关的数字文件(如适用" -#: core/models.py:1131 +#: core/models.py:1148 msgid "digital file" msgstr "数字文件" -#: core/models.py:1140 +#: core/models.py:1157 msgid "stock entries" msgstr "库存条目" -#: core/models.py:1149 +#: core/models.py:1166 msgid "products that the user has marked as wanted" msgstr "用户标记为想要的产品" -#: core/models.py:1157 +#: core/models.py:1174 msgid "user who owns this wishlist" msgstr "拥有此愿望清单的用户" -#: core/models.py:1158 +#: core/models.py:1175 msgid "wishlist owner" msgstr "心愿单所有者" -#: core/models.py:1166 +#: core/models.py:1183 msgid "wishlist" msgstr "愿望清单" -#: core/models.py:1211 +#: core/models.py:1228 msgid "download" msgstr "下载" -#: core/models.py:1212 +#: core/models.py:1229 msgid "downloads" msgstr "下载" -#: core/models.py:1220 +#: core/models.py:1237 msgid "you can not download a digital asset for a non-finished order" msgstr "您无法下载未完成订单的数字资产" -#: core/models.py:1232 +#: core/models.py:1249 msgid "documentary" msgstr "纪录片" -#: core/models.py:1233 +#: core/models.py:1250 msgid "documentaries" msgstr "纪录片" -#: core/models.py:1243 +#: core/models.py:1260 msgid "unresolved" msgstr "未解决" -#: core/models.py:1249 +#: core/models.py:1269 +msgid "address line for the customer" +msgstr "客户地址栏" + +#: core/models.py:1270 +msgid "address line" +msgstr "地址栏" + +#: core/models.py:1272 msgid "street" msgstr "街道" -#: core/models.py:1250 +#: core/models.py:1273 msgid "district" msgstr "地区" -#: core/models.py:1251 +#: core/models.py:1274 msgid "city" msgstr "城市" -#: core/models.py:1252 +#: core/models.py:1275 msgid "region" msgstr "地区" -#: core/models.py:1253 +#: core/models.py:1276 msgid "postal code" msgstr "邮政编码" -#: core/models.py:1254 +#: core/models.py:1277 msgid "country" msgstr "国家" -#: core/models.py:1257 +#: core/models.py:1280 msgid "geolocation point: (longitude, latitude)" msgstr "地理位置点(经度、纬度)" -#: core/models.py:1260 +#: core/models.py:1283 msgid "full JSON response from geocoder for this address" msgstr "地理编码器对此地址的完整 JSON 响应" -#: core/models.py:1262 +#: core/models.py:1285 msgid "stored JSON response from the geocoding service" msgstr "存储的来自地理编码服务的 JSON 响应" -#: core/models.py:1269 +#: core/models.py:1292 msgid "address" msgstr "地址" -#: core/models.py:1270 +#: core/models.py:1293 msgid "addresses" msgstr "地址" @@ -1913,7 +1960,7 @@ msgstr "您只能下载一次数字资产" msgid "favicon not found" msgstr "未找到 favicon" -#: core/viewsets.py:497 +#: core/viewsets.py:589 #, python-brace-format msgid "Geocoding error: {e}" msgstr "地理编码错误:{e}" diff --git a/core/models.py b/core/models.py index 9b5e416f..dee8a8cc 100644 --- a/core/models.py +++ b/core/models.py @@ -736,9 +736,10 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): ) payment_method = kwargs.get("payment_method") + available_payment_methods = cache.get("payment_methods") - if payment_method not in cache.get("payment_methods"): - raise ValueError(_("invalid payment method")) + if payment_method not in available_payment_methods: + raise ValueError(_(f"invalid payment method: {payment_method} from {available_payment_methods}")) billing_customer_address_uuid = kwargs.get("billing_customer_address") shipping_customer_address_uuid = kwargs.get("shipping_customer_address") diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index 1537b86f..bd873ab7 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -93,8 +93,8 @@ msgstr "حذف مستخدم" #: vibes_auth/docs/drf/viewsets.py:32 msgid "reset a user's password by sending a reset password email" msgstr "" -"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة" -" المرور" +"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة " +"المرور" #: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" @@ -104,7 +104,7 @@ msgstr "التعامل مع تحميل الصورة الرمزية للمستخ msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "كلمات المرور غير متطابقة" @@ -121,50 +121,50 @@ msgstr "رابط التفعيل غير صالح أو أن الحساب مفعل msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "معرّف المستخدم الذي تم ترميزه بـ b64 الذي أحال المستخدم الجديد إلينا." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "كلمة المرور ضعيفة جداً" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "بريد إلكتروني مشوه" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "رقم هاتف مشوّه: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "تنسيق السمة غير صالح: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "رابط التفعيل غير صالح!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "تم تفعيل الحساب بالفعل..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "حدث خطأ ما: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "الرمز غير صالح!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "المنتجات التي شاهدها هذا المستخدم مؤخرًا (بحد أقصى 48)، بترتيب زمني عكسي." @@ -277,23 +277,23 @@ msgstr "الرمز المميز المدرج في القائمة السوداء" msgid "blacklisted tokens" msgstr "الرموز المميزة المدرجة في القائمة السوداء" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "لم يتم العثور على حساب نشط" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "تم إدراج الرمز المميز في القائمة السوداء" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "رمز غير صالح" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "لا توجد مطالبة معرف المستخدم في الرمز المميز" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "المستخدم غير موجود" @@ -416,10 +416,10 @@ msgstr "" msgid "the token is invalid" msgstr "الرمز المميز غير صالح" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "تمت إعادة تعيين كلمة المرور بنجاح!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "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 ed1187f0..e0635ba1 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,7 @@ msgstr "Zpracování nahrávání avataru pro uživatele" msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Hesla se neshodují" @@ -119,50 +119,50 @@ msgstr "Aktivační odkaz je neplatný nebo je účet již aktivován" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Uuid uživatele s kódem b64, který nám nového uživatele doporučil." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Heslo je příliš slabé" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Špatně formulovaný e-mail" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Chybně zadané telefonní číslo: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nesprávný formát atributu: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Aktivační odkaz je neplatný!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Účet byl již aktivován..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Něco se pokazilo: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token je neplatný!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "Produkty, které si tento uživatel prohlížel naposledy (max. 48), seřazené v " "opačném pořadí." @@ -276,23 +276,23 @@ msgstr "Token na černé listině" msgid "blacklisted tokens" msgstr "Tokeny na černé listině" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Nebyl nalezen žádný aktivní účet" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token na černé listině" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Neplatný token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "V tokenu není deklarace uuid uživatele" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Uživatel neexistuje" @@ -376,7 +376,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte následující adresu URL\n" +"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte následující " +"adresu URL\n" " do webového prohlížeče:" #: vibes_auth/templates/user_verification_email.html:101 @@ -415,10 +416,10 @@ msgstr "" msgid "the token is invalid" msgstr "Token je neplatný" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Heslo bylo úspěšně resetováno!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Účet jste již aktivovali..." diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index f6810158..e0587979 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,7 @@ msgstr "Håndter upload af avatar for en bruger" msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Adgangskoderne stemmer ikke overens" @@ -121,50 +121,50 @@ msgstr "Aktiveringslinket er ugyldigt, eller kontoen er allerede aktiveret" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Brugerens b64-kodede uuid, som henviste den nye bruger til os." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Adgangskoden er for svag" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Misdannet e-mail" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misdannet telefonnummer: {phone_number}." -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldigt attributformat: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Aktiveringslinket er ugyldigt!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Kontoen er allerede aktiveret..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Noget gik galt: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token er ugyldig!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "De produkter, som denne bruger har set for nylig (maks. 48), i omvendt " "kronologisk rækkefølge." @@ -278,23 +278,23 @@ msgstr "Sortlistet token" msgid "blacklisted tokens" msgstr "Sortlistede tokens" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Ingen aktiv konto fundet" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token blacklistet" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Ugyldigt token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "Ingen bruger-uuid-krav til stede i token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Brugeren findes ikke" @@ -379,7 +379,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Hvis ovenstående knap ikke virker, bedes du kopiere og indsætte følgende URL\n" +"Hvis ovenstående knap ikke virker, bedes du kopiere og indsætte følgende " +"URL\n" " i din webbrowser:" #: vibes_auth/templates/user_verification_email.html:101 @@ -418,10 +419,10 @@ msgstr "" msgid "the token is invalid" msgstr "Tokenet er ugyldigt" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Adgangskoden er blevet nulstillet med succes!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Du har allerede aktiveret kontoen..." diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index 522183c0..2add1c35 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,7 @@ msgstr "Avatar-Upload für einen Benutzer verwalten" msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwörter stimmen nicht überein" @@ -121,53 +121,53 @@ msgstr "Aktivierungslink ist ungültig oder Konto bereits aktiviert" #: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen" -" hat." +"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen " +"hat." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Das Passwort ist zu schwach" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Fehlerhafte E-Mail" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Fehlerhafte Telefonnummer: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ungültiges Attributformat: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Der Aktivierungslink ist ungültig!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Das Konto wurde bereits aktiviert..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Etwas ist schief gelaufen: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token ist ungültig!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "Die Produkte, die dieser Benutzer zuletzt angesehen hat (maximal 48), in " "umgekehrter chronologischer Reihenfolge." @@ -282,23 +282,23 @@ msgstr "Token auf der schwarzen Liste" msgid "blacklisted tokens" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Kein aktives Konto gefunden" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Ungültiges Token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "Kein Benutzer uuid-Anspruch im Token vorhanden" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -344,8 +344,8 @@ msgstr "" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." msgstr "" -"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese " -"E-Mail." +"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-" +"Mail." #: vibes_auth/templates/user_reset_password_email.html:89 #, python-format @@ -384,7 +384,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die folgende URL und fügen Sie sie in Ihren Browser ein\n" +"Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die " +"folgende URL und fügen Sie sie in Ihren Browser ein\n" " in Ihren Webbrowser ein:" #: vibes_auth/templates/user_verification_email.html:101 @@ -423,10 +424,10 @@ msgstr "" msgid "the token is invalid" msgstr "Das Token ist ungültig" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Das Passwort wurde erfolgreich zurückgesetzt!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Sie haben das 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 d3fe1d5a..ecac6063 100644 --- a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -107,7 +107,7 @@ msgstr "Handle avatar upload for a user" msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwords do not match" @@ -124,50 +124,50 @@ msgstr "Activation link is invalid or account already activated" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "The user's b64-encoded uuid who referred the new user to us." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "The password is too weak" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Malformed email" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Account has been already activated..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token is invalid!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "The products this user has viewed most recently (max 48), in reverse-" "chronological order." @@ -281,23 +281,23 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "User does not exist" @@ -420,11 +420,11 @@ msgstr "" msgid "the token is invalid" msgstr "The token is invalid" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Password has been reset successfully!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "You have already activated the account..." diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 773e1867..16ab1d4e 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,7 @@ msgstr "Handle avatar upload for a user" msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwords do not match" @@ -119,50 +119,50 @@ msgstr "Activation link is invalid or account already activated" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "The user's b64-encoded uuid who referred the new user to us." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "The password is too weak" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Malformed email" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Account has been already activated..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token is invalid!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "The products this user has viewed most recently (max 48), in reverse-" "chronological order." @@ -276,23 +276,23 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "User does not exist" @@ -415,10 +415,10 @@ msgstr "" msgid "the token is invalid" msgstr "The token is invalid" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Password has been reset successfully!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "You have already activated the account..." diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 4d324141..5f5c66f0 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,7 @@ msgstr "Gestionar la subida de avatares de un usuario" msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Las contraseñas no coinciden" @@ -122,50 +122,50 @@ msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "El uuid codificado en b64 del usuario que nos ha remitido al nuevo usuario." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "La contraseña es demasiado débil" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Correo electrónico malformado" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de teléfono malformado: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo no válido: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "El enlace de activación no es válido." -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "La cuenta ya ha sido activada..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Algo salió mal: {e!s}." -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "¡La ficha no es válida!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "Los productos que este usuario ha visto más recientemente (máx. 48), en " "orden cronológico inverso." @@ -279,23 +279,23 @@ msgstr "Ficha en la lista negra" msgid "blacklisted tokens" msgstr "Fichas en la lista negra" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "No se ha encontrado ninguna cuenta activa" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Ficha en la lista negra" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Token no válido" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "El usuario no existe" @@ -418,10 +418,10 @@ msgstr "" msgid "the token is invalid" msgstr "El token no es válido" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "La contraseña se ha restablecido correctamente." -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Ya ha activado la cuenta..." diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index 8b04d783..933f7ce8 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -106,7 +106,7 @@ msgstr "Gérer le téléchargement d'un avatar pour un utilisateur" msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Les mots de passe ne correspondent pas" @@ -125,53 +125,53 @@ msgstr "" "L'uuid b64-encodé de l'utilisateur qui nous a recommandé le nouvel " "utilisateur." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Le mot de passe est trop faible" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Courriel malformé" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numéro de téléphone malformé : {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format d'attribut non valide : {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Le lien d'activation n'est pas valide !" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Le compte a déjà été activé..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Quelque chose a mal tourné : {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Le jeton n'est pas valide !" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" -"Les produits que cet utilisateur a consultés le plus récemment (max 48), par" -" ordre chronologique inverse." +"Les produits que cet utilisateur a consultés le plus récemment (max 48), par " +"ordre chronologique inverse." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -285,24 +285,23 @@ msgstr "Jeton sur liste noire" msgid "blacklisted tokens" msgstr "Jetons sur liste noire" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Aucun compte actif trouvé" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token sur liste noire" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Jeton non valide" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" -msgstr "" -"Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" +msgstr "Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "L'utilisateur n'existe pas" @@ -348,8 +347,7 @@ msgstr "" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." -msgstr "" -"Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel." +msgstr "Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel." #: vibes_auth/templates/user_reset_password_email.html:89 #, python-format @@ -372,8 +370,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account " "by clicking the button below:" msgstr "" -"Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte" -" en cliquant sur le bouton ci-dessous :" +"Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte " +"en cliquant sur le bouton ci-dessous :" #: vibes_auth/templates/user_verification_email.html:95 msgid "" @@ -388,7 +386,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL suivante\n" +"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL " +"suivante\n" " suivante dans votre navigateur web :" #: vibes_auth/templates/user_verification_email.html:101 @@ -427,10 +426,10 @@ msgstr "" msgid "the token is invalid" msgstr "Le jeton n'est pas valide" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Le mot de passe a été réinitialisé avec succès !" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Vous avez déjà activé le compte..." diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index c0b08311..2904516b 100644 --- a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -106,7 +106,7 @@ msgstr "" msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "" @@ -123,43 +123,43 @@ msgstr "" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "" -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "" @@ -278,23 +278,23 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "" @@ -405,10 +405,10 @@ msgstr "" msgid "the token is invalid" msgstr "" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "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 4b16f60e..c91acb60 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,7 @@ msgstr "Gestire il caricamento dell'avatar per un utente" msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Le password non corrispondono" @@ -122,50 +122,50 @@ msgstr "Il link di attivazione non è valido o l'account è già stato attivato. msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "L'uuid b64-encoded dell'utente che ci ha segnalato il nuovo utente." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "La password è troppo debole" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Email malformata" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numero di telefono malformato: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato attributo non valido: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Il link di attivazione non è valido!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "L'account è già stato attivato..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Qualcosa è andato storto: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Il gettone non è valido!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "I prodotti che questo utente ha visualizzato più di recente (max 48), in " "ordine cronologico inverso." @@ -281,23 +281,23 @@ msgstr "Token in lista nera" msgid "blacklisted tokens" msgstr "Gettoni nella lista nera" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Nessun conto attivo trovato" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token nella lista nera" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Token non valido" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "Nessuna richiesta di uuid utente presente nel token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "L'utente non esiste" @@ -420,10 +420,10 @@ msgstr "" msgid "the token is invalid" msgstr "Il token non è valido" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "La password è stata reimpostata con successo!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Avete già attivato l'account..." diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 9b0ec863..6878d6b2 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,7 @@ msgstr "ユーザーのアバターアップロードを処理する" msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "パスワードが一致しない" @@ -113,56 +113,58 @@ msgstr "ユーザーアカウントの有効化" #: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" -msgstr "アクティベーションリンクが無効であるか、アカウントがすでにアクティベーションされています。" +msgstr "" +"アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション" +"されています。" #: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "新規ユーザーを紹介したユーザーのb64エンコードされたuuid。" -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "パスワードが弱すぎる" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}が存在しません:{uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "不正な電子メール" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "不正な電話番号:{phone_number}。" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "無効な属性形式です:{attribute_pair}。" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "アクティベーションリンクが無効です!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "アカウントはすでに有効になっています..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "何かが間違っていた:{e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "トークンが無効です!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "このユーザーが最近閲覧した商品(最大48件)を逆順に表示します。" #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 @@ -274,23 +276,23 @@ msgstr "ブラックリストトークン" msgid "blacklisted tokens" msgstr "ブラックリストに載ったトークン" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "アクティブなアカウントが見つかりません" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "トークンのブラックリスト入り" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "無効なトークン" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "トークンにユーザー uuid クレームが存在しない" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "ユーザーが存在しない" @@ -317,7 +319,9 @@ msgstr "こんにちは、%(user_first_name)sです、" msgid "" "we have received a request to reset your password. please reset your " "password by clicking the button below:" -msgstr "パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワードをリセットしてください:" +msgstr "" +"パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワー" +"ドをリセットしてください:" #: vibes_auth/templates/user_reset_password_email.html:84 msgid "reset password" @@ -327,7 +331,9 @@ msgstr "パスワードのリセット" msgid "" "if the button above does not work, please copy and paste the following URL " "into your web browser:" -msgstr "上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付けてください:" +msgstr "" +"上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付け" +"てください:" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." @@ -353,7 +359,9 @@ msgstr "アカウントの有効化" msgid "" "thank you for signing up for %(project_name)s. please activate your account " "by clicking the button below:" -msgstr "%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:" +msgstr "" +"%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックし" +"てアカウントを有効にしてください:" #: vibes_auth/templates/user_verification_email.html:95 msgid "" @@ -368,7 +376,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"上記のボタンが機能しない場合は、次のURLをコピーしてウェブブラウザに貼り付けてください。\n" +"上記のボタンが機能しない場合は、次のURLをコピーしてウェブブラウザに貼り付けて" +"ください。\n" " をウェブブラウザに貼り付けてください:" #: vibes_auth/templates/user_verification_email.html:101 @@ -399,16 +408,18 @@ msgstr "{config.PROJECT_NAME}。| パスワードのリセット" msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." -msgstr "電話番号の形式が無効です。電話番号は次の形式で入力してください:\"+999999999\".15桁まで入力可能です。" +msgstr "" +"電話番号の形式が無効です。電話番号は次の形式で入力してください:" +"\"+999999999\".15桁まで入力可能です。" #: vibes_auth/views.py:57 msgid "the token is invalid" msgstr "トークンが無効" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "パスワードのリセットに成功しました!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "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 c0b08311..2904516b 100644 --- a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -106,7 +106,7 @@ msgstr "" msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "" @@ -123,43 +123,43 @@ msgstr "" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "" -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "" @@ -278,23 +278,23 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "" @@ -405,10 +405,10 @@ msgstr "" msgid "the token is invalid" msgstr "" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "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 6fe50f50..2a1338b0 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,7 @@ msgstr "Avatar uploaden voor een gebruiker afhandelen" msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Wachtwoorden komen niet overeen" @@ -123,50 +123,50 @@ msgstr "" "De b64-gecodeerde uuid van de gebruiker die de nieuwe gebruiker naar ons " "heeft doorverwezen." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Het wachtwoord is te zwak" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Misvormde e-mail" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misvormd telefoonnummer: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ongeldig attribuutformaat: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Activeringslink is ongeldig!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Account is al geactiveerd..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Er ging iets mis: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token is invalid!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "De producten die deze gebruiker het laatst heeft bekeken (max 48), in " "omgekeerd-chronologische volgorde." @@ -280,23 +280,23 @@ msgstr "Token op zwarte lijst" msgid "blacklisted tokens" msgstr "Tokens op de zwarte lijst" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Geen actieve account gevonden" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token op zwarte lijst" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "Geen gebruiker uuid claim aanwezig in token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Gebruiker bestaat niet" @@ -324,8 +324,8 @@ msgid "" "we have received a request to reset your password. please reset your " "password by clicking the button below:" msgstr "" -"We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik" -" op de knop hieronder om je wachtwoord opnieuw in te stellen:" +"We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik " +"op de knop hieronder om je wachtwoord opnieuw in te stellen:" #: vibes_auth/templates/user_reset_password_email.html:84 msgid "reset password" @@ -364,8 +364,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account " "by clicking the button below:" msgstr "" -"Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op" -" de onderstaande knop te klikken:" +"Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op " +"de onderstaande knop te klikken:" #: vibes_auth/templates/user_verification_email.html:95 msgid "" @@ -419,10 +419,10 @@ msgstr "" msgid "the token is invalid" msgstr "Het token is ongeldig" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Wachtwoord is succesvol gereset!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Je hebt de account 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 21e4dbf4..13e0f5df 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -52,8 +52,7 @@ msgstr "Uzyskanie pary tokenów" #: vibes_auth/docs/drf/views.py:16 msgid "obtain a token pair (refresh and access) for authentication." -msgstr "" -"Uzyskanie pary tokenów (odświeżenie i dostęp) w celu uwierzytelnienia." +msgstr "Uzyskanie pary tokenów (odświeżenie i dostęp) w celu uwierzytelnienia." #: vibes_auth/docs/drf/views.py:35 msgid "refresh a token pair" @@ -105,7 +104,7 @@ msgstr "Obsługa przesyłania awatara dla użytkownika" msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Hasła nie są zgodne" @@ -124,50 +123,50 @@ msgstr "" "Zakodowany w b64 identyfikator uuid użytkownika, który polecił nam nowego " "użytkownika." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Hasło jest zbyt słabe" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Zniekształcona wiadomość e-mail" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Zniekształcony numer telefonu: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nieprawidłowy format atrybutu: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Link aktywacyjny jest nieprawidłowy!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Konto zostało już aktywowane..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Coś poszło nie tak: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token jest nieprawidłowy!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "Produkty ostatnio przeglądane przez tego użytkownika (maks. 48), w " "kolejności odwrotnej do chronologicznej." @@ -281,23 +280,23 @@ msgstr "Token na czarnej liście" msgid "blacklisted tokens" msgstr "Tokeny znajdujące się na czarnej liście" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Nie znaleziono aktywnego konta" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token na czarnej liście" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Nieprawidłowy token" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "Brak oświadczenia uuid użytkownika w tokenie" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Użytkownik nie istnieje" @@ -413,17 +412,17 @@ msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." msgstr "" -"Nieprawidłowy format numeru telefonu. Numer musi być wprowadzony w formacie:" -" \"+999999999\". Dozwolone do 15 cyfr." +"Nieprawidłowy format numeru telefonu. Numer musi być wprowadzony w formacie: " +"\"+999999999\". Dozwolone do 15 cyfr." #: vibes_auth/views.py:57 msgid "the token is invalid" msgstr "Token jest nieprawidłowy" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Hasło zostało pomyślnie zresetowane!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "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 36739187..c76161b2 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -103,7 +103,7 @@ msgstr "Manipular o upload do avatar de um usuário" msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "As senhas não correspondem" @@ -120,53 +120,53 @@ msgstr "O link de ativação é inválido ou a conta já está ativada" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "O uuid codificado em b64 do usuário que nos indicou o novo usuário." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "A senha é muito fraca" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "E-mail malformado" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de telefone malformado: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo inválido: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "O link de ativação é inválido!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "A conta já foi ativada..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Algo deu errado: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "O token é inválido!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" -"Os produtos que esse usuário visualizou mais recentemente (máximo de 48), em" -" ordem cronológica inversa." +"Os produtos que esse usuário visualizou mais recentemente (máximo de 48), em " +"ordem cronológica inversa." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -277,23 +277,23 @@ msgstr "Token na lista negra" msgid "blacklisted tokens" msgstr "Tokens na lista negra" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Nenhuma conta ativa encontrada" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token na lista negra" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Token inválido" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "Nenhuma reivindicação de uuid de usuário presente no token" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "O usuário não existe" @@ -333,8 +333,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL " "into your web browser:" msgstr "" -"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador" -" da Web:" +"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador " +"da Web:" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." @@ -416,10 +416,10 @@ msgstr "" msgid "the token is invalid" msgstr "O token é inválido" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "A senha foi redefinida com sucesso!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Você já ativou a conta..." diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index f072b80c..6ed4bc7a 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -105,7 +105,7 @@ msgstr "Gestionarea încărcării avatarului pentru un utilizator" msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Parolele nu se potrivesc" @@ -123,50 +123,50 @@ msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Uuid codificat b64 al utilizatorului care ne-a recomandat noul utilizator." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Parola este prea slabă" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "E-mail malformat" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Număr de telefon malformat: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format de atribut invalid: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Linkul de activare este invalid!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Contul a fost deja activat..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Ceva nu a mers bine: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Token-ul nu este valabil!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" "Produsele pe care acest utilizator le-a vizualizat cel mai recent (max 48), " "în ordine cronologică inversă." @@ -280,23 +280,23 @@ msgstr "Token pe lista neagră" msgid "blacklisted tokens" msgstr "Jetoane pe lista neagră" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Nu s-a găsit niciun cont activ" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Token pe lista neagră" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Jeton invalid" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "În jeton nu este prezentă nicio cerere uuid a utilizatorului" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Utilizatorul nu există" @@ -380,7 +380,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți următoarea adresă URL\n" +"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți " +"următoarea adresă URL\n" " în browserul dvs. web:" #: vibes_auth/templates/user_verification_email.html:101 @@ -419,10 +420,10 @@ msgstr "" msgid "the token is invalid" msgstr "Jetonul nu este valabil" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Parola a fost resetată cu succes!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "Ați activat deja contul..." diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index 06c32992..a8898c69 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -104,7 +104,7 @@ msgstr "Обработка загрузки аватара для пользов msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Пароли не совпадают" @@ -123,53 +123,53 @@ msgstr "" "b64-кодированный uuid пользователя, который направил к нам нового " "пользователя." -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "Пароль слишком слабый" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "Некорректное письмо" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Некорректный номер телефона: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Недопустимый формат атрибута: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "Ссылка на активацию недействительна!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "Аккаунт уже активирован..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "Что-то пошло не так: {e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "Токен недействителен!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" -"Продукты, которые этот пользователь просматривал в последнее время (не более" -" 48), в обратном хронологическом порядке." +"Продукты, которые этот пользователь просматривал в последнее время (не более " +"48), в обратном хронологическом порядке." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -280,23 +280,23 @@ msgstr "Токен в черном списке" msgid "blacklisted tokens" msgstr "Токены, внесенные в черный список" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "Активная учетная запись не найдена" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "Токен занесен в черный список" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "Неверный токен" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "В токене отсутствует утверждение uuid пользователя" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "Пользователь не существует" @@ -381,7 +381,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Если кнопка выше не работает, пожалуйста, скопируйте и вставьте следующий URL-адрес\n" +"Если кнопка выше не работает, пожалуйста, скопируйте и вставьте следующий " +"URL-адрес\n" " в свой веб-браузер:" #: vibes_auth/templates/user_verification_email.html:101 @@ -420,10 +421,10 @@ msgstr "" msgid "the token is invalid" msgstr "Токен недействителен" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "Пароль был успешно сброшен!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "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 b81f9a6b..7d236ddf 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-05-27 13:42+0100\n" +"POT-Creation-Date: 2025-06-07 14:58+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -102,7 +102,7 @@ msgstr "处理用户的头像上传" msgid "confirm a user's password reset" msgstr "确认用户密码重置" -#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:307 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "密码不匹配" @@ -119,50 +119,50 @@ msgstr "激活链接无效或账户已激活" msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "将新用户推荐给我们的用户的 b64-encoded uuid。" -#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +#: vibes_auth/graphene/mutations.py:61 msgid "password too weak" msgstr "密码太弱" -#: vibes_auth/graphene/mutations.py:106 +#: vibes_auth/graphene/mutations.py:107 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}" -#: vibes_auth/graphene/mutations.py:114 +#: vibes_auth/graphene/mutations.py:115 msgid "malformed email" msgstr "畸形电子邮件" -#: vibes_auth/graphene/mutations.py:119 +#: vibes_auth/graphene/mutations.py:120 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "畸形电话号码: {phone_number}" -#: vibes_auth/graphene/mutations.py:141 +#: vibes_auth/graphene/mutations.py:142 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "属性格式无效:{attribute_pair}" -#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 -#: vibes_auth/viewsets.py:123 +#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115 +#: vibes_auth/viewsets.py:134 msgid "activation link is invalid!" msgstr "激活链接无效!" -#: vibes_auth/graphene/mutations.py:265 +#: vibes_auth/graphene/mutations.py:266 msgid "account already activated..." msgstr "帐户已激活..." -#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 +#: vibes_auth/graphene/mutations.py:273 vibes_auth/graphene/mutations.py:325 msgid "something went wrong: {e!s}" msgstr "出了问题:{e!s}" -#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83 msgid "token is invalid!" msgstr "令牌无效!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in " -"reverse‐chronological order" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "该用户最近查看过的产品(最多 48 个),按倒序排列。" #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 @@ -274,23 +274,23 @@ msgstr "黑名单令牌" msgid "blacklisted tokens" msgstr "黑名单令牌" -#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 +#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128 msgid "no active account" msgstr "未找到活动账户" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:199 msgid "token_blacklisted" msgstr "令牌被列入黑名单" -#: vibes_auth/serializers.py:203 +#: vibes_auth/serializers.py:204 msgid "invalid token" msgstr "无效令牌" -#: vibes_auth/serializers.py:209 +#: vibes_auth/serializers.py:210 msgid "no user uuid claim present in token" msgstr "令牌中没有用户 uuid 声明" -#: vibes_auth/serializers.py:211 +#: vibes_auth/serializers.py:212 msgid "user does not exist" msgstr "用户不存在" @@ -399,16 +399,17 @@ msgstr "{config.PROJECT_NAME} 重置密码| 重置密码" msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." -msgstr "电话号码格式无效。电话号码必须按格式输入:\"+999999999\".最多允许 15 位数字。" +msgstr "" +"电话号码格式无效。电话号码必须按格式输入:\"+999999999\".最多允许 15 位数字。" #: vibes_auth/views.py:57 msgid "the token is invalid" msgstr "令牌无效" -#: vibes_auth/viewsets.py:85 +#: vibes_auth/viewsets.py:87 msgid "password reset successfully" msgstr "密码已重置成功!" -#: vibes_auth/viewsets.py:112 +#: vibes_auth/viewsets.py:120 msgid "account already activated!" msgstr "您已经激活了账户..."