From 6109643acbb56335cbe6dd7b6bf8322a8efeef58 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 11 Nov 2025 18:31:17 +0300 Subject: [PATCH 1/2] Features: 1) Introduced `ChatThread` and `ChatMessage` models for messaging functionality; 2) Added `ThreadStatus` and `SenderType` choices for structured messaging states; 3) Integrated Django migrations with indexing for new models; Fixes: 1) Corrected `admin.py` imports for consistency and model alignment; Extra: Refactored `choices.py` for reusable enums; restructured `models.py` for clarity and maintainability. --- engine/vibes_auth/admin.py | 11 +- engine/vibes_auth/choices.py | 13 ++ engine/vibes_auth/messaging/models.py | 75 -------- .../0006_chatthread_chatmessage_and_more.py | 175 ++++++++++++++++++ engine/vibes_auth/models.py | 53 ++++++ 5 files changed, 250 insertions(+), 77 deletions(-) create mode 100644 engine/vibes_auth/choices.py delete mode 100644 engine/vibes_auth/messaging/models.py create mode 100644 engine/vibes_auth/migrations/0006_chatthread_chatmessage_and_more.py diff --git a/engine/vibes_auth/admin.py b/engine/vibes_auth/admin.py index e97810e2..a5bceaaa 100644 --- a/engine/vibes_auth/admin.py +++ b/engine/vibes_auth/admin.py @@ -29,8 +29,15 @@ from engine.core.admin import ActivationActionsMixin from engine.core.models import Order from engine.payments.models import Balance from engine.vibes_auth.forms import UserForm -from engine.vibes_auth.messaging.models import ChatMessage, ChatThread, ThreadStatus -from engine.vibes_auth.models import BlacklistedToken, Group, OutstandingToken, User +from engine.vibes_auth.models import ( + BlacklistedToken, + Group, + OutstandingToken, + User, + ChatMessage, + ChatThread, + ThreadStatus, +) class BalanceInline(admin.TabularInline): # type: ignore [type-arg] diff --git a/engine/vibes_auth/choices.py b/engine/vibes_auth/choices.py new file mode 100644 index 00000000..72a28b87 --- /dev/null +++ b/engine/vibes_auth/choices.py @@ -0,0 +1,13 @@ +from django.db.models import TextChoices +from django.utils.translation import gettext_lazy as _ + + +class ThreadStatus(TextChoices): + OPEN = "open", _("Open") + CLOSED = "closed", _("Closed") + + +class SenderType(TextChoices): + USER = "user", _("User") + STAFF = "staff", _("Staff") + SYSTEM = "system", _("System") diff --git a/engine/vibes_auth/messaging/models.py b/engine/vibes_auth/messaging/models.py deleted file mode 100644 index 12973ea3..00000000 --- a/engine/vibes_auth/messaging/models.py +++ /dev/null @@ -1,75 +0,0 @@ -from __future__ import annotations - -from django.core.exceptions import ValidationError -from django.db.models import ( - CharField, - DateTimeField, - EmailField, - ForeignKey, - Index, - JSONField, - TextChoices, - TextField, - SET_NULL, - CASCADE, -) -from django.utils import timezone -from django.utils.translation import gettext_lazy as _ - -from engine.core.abstract import NiceModel -from engine.vibes_auth.models import User - - -class ThreadStatus(TextChoices): - OPEN = "open", _("Open") - CLOSED = "closed", _("Closed") - - -class SenderType(TextChoices): - USER = "user", _("User") - STAFF = "staff", _("Staff") - SYSTEM = "system", _("System") - - -class ChatThread(NiceModel): - user = ForeignKey(User, null=True, blank=True, on_delete=SET_NULL, related_name="chat_threads") - email = EmailField(blank=True, default="", help_text=_("For anonymous threads")) - assigned_to = ForeignKey(User, null=True, blank=True, on_delete=SET_NULL, related_name="assigned_chat_threads") - status = CharField(max_length=16, choices=ThreadStatus.choices, default=ThreadStatus.OPEN) - last_message_at = DateTimeField(default=timezone.now) - attributes = JSONField(default=dict, blank=True) - - class Meta: - indexes = [ - Index(fields=["status", "modified"], name="chatthread_status_mod_idx"), - Index(fields=["assigned_to", "status"], name="chatthread_assigned_status_idx"), - Index(fields=["user"], name="chatthread_user_idx"), - Index(fields=["email"], name="chatthread_email_idx"), - ] - ordering = ("-modified",) - verbose_name = _("Chat thread") - verbose_name_plural = _("Chat threads") - - def clean(self) -> None: - super().clean() - if not self.user and not self.email: - raise ValidationError({"email": _("Provide user or email for anonymous thread.")}) - if self.assigned_to and not self.assigned_to.is_staff: - raise ValidationError({"assigned_to": _("Assignee must be a staff user.")}) - - -class ChatMessage(NiceModel): - thread = ForeignKey(ChatThread, on_delete=CASCADE, related_name="messages") - sender_type = CharField(max_length=16, choices=SenderType.choices) - sender_user = ForeignKey(User, null=True, blank=True, on_delete=SET_NULL, related_name="chat_messages") - text = TextField() - sent_at = DateTimeField(default=timezone.now) - attributes = JSONField(default=dict, blank=True) - - class Meta: - indexes = [ - Index(fields=["thread", "sent_at"], name="chatmessage_thread_sent_idx"), - ] - ordering = ("sent_at", "uuid") - verbose_name = _("Chat message") - verbose_name_plural = _("Chat messages") diff --git a/engine/vibes_auth/migrations/0006_chatthread_chatmessage_and_more.py b/engine/vibes_auth/migrations/0006_chatthread_chatmessage_and_more.py new file mode 100644 index 00000000..c5d3adb2 --- /dev/null +++ b/engine/vibes_auth/migrations/0006_chatthread_chatmessage_and_more.py @@ -0,0 +1,175 @@ +# Generated by Django 5.2.8 on 2025-11-11 15:28 + +import django.db.models.deletion +import django.utils.timezone +import django_extensions.db.fields +import uuid +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("vibes_auth", "0005_alter_user_groups"), + ] + + operations = [ + migrations.CreateModel( + name="ChatThread", + fields=[ + ( + "uuid", + models.UUIDField( + default=uuid.uuid4, + editable=False, + help_text="unique id is used to surely identify any database object", + primary_key=True, + serialize=False, + verbose_name="unique id", + ), + ), + ( + "is_active", + models.BooleanField( + default=True, + help_text="if set to false, this object can't be seen by users without needed permission", + verbose_name="is active", + ), + ), + ( + "created", + django_extensions.db.fields.CreationDateTimeField( + auto_now_add=True, + help_text="when the object first appeared on the database", + verbose_name="created", + ), + ), + ( + "modified", + django_extensions.db.fields.ModificationDateTimeField( + auto_now=True, help_text="when the object was last modified", verbose_name="modified" + ), + ), + ("email", models.EmailField(blank=True, default="", help_text="For anonymous threads", max_length=254)), + ( + "status", + models.CharField(choices=[("open", "Open"), ("closed", "Closed")], default="open", max_length=16), + ), + ("last_message_at", models.DateTimeField(default=django.utils.timezone.now)), + ("attributes", models.JSONField(blank=True, default=dict)), + ( + "assigned_to", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="assigned_chat_threads", + to=settings.AUTH_USER_MODEL, + ), + ), + ( + "user", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="chat_threads", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={ + "verbose_name": "Chat thread", + "verbose_name_plural": "Chat threads", + "ordering": ("-modified",), + }, + ), + migrations.CreateModel( + name="ChatMessage", + fields=[ + ( + "uuid", + models.UUIDField( + default=uuid.uuid4, + editable=False, + help_text="unique id is used to surely identify any database object", + primary_key=True, + serialize=False, + verbose_name="unique id", + ), + ), + ( + "is_active", + models.BooleanField( + default=True, + help_text="if set to false, this object can't be seen by users without needed permission", + verbose_name="is active", + ), + ), + ( + "created", + django_extensions.db.fields.CreationDateTimeField( + auto_now_add=True, + help_text="when the object first appeared on the database", + verbose_name="created", + ), + ), + ( + "modified", + django_extensions.db.fields.ModificationDateTimeField( + auto_now=True, help_text="when the object was last modified", verbose_name="modified" + ), + ), + ( + "sender_type", + models.CharField( + choices=[("user", "User"), ("staff", "Staff"), ("system", "System")], max_length=16 + ), + ), + ("text", models.TextField()), + ("sent_at", models.DateTimeField(default=django.utils.timezone.now)), + ("attributes", models.JSONField(blank=True, default=dict)), + ( + "sender_user", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="chat_messages", + to=settings.AUTH_USER_MODEL, + ), + ), + ( + "thread", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, related_name="messages", to="vibes_auth.chatthread" + ), + ), + ], + options={ + "verbose_name": "Chat message", + "verbose_name_plural": "Chat messages", + "ordering": ("sent_at", "uuid"), + }, + ), + migrations.AddIndex( + model_name="chatthread", + index=models.Index(fields=["status", "modified"], name="chatthread_status_mod_idx"), + ), + migrations.AddIndex( + model_name="chatthread", + index=models.Index(fields=["assigned_to", "status"], name="chatthread_assigned_status_idx"), + ), + migrations.AddIndex( + model_name="chatthread", + index=models.Index(fields=["user"], name="chatthread_user_idx"), + ), + migrations.AddIndex( + model_name="chatthread", + index=models.Index(fields=["email"], name="chatthread_email_idx"), + ), + migrations.AddIndex( + model_name="chatmessage", + index=models.Index(fields=["thread", "sent_at"], name="chatmessage_thread_sent_idx"), + ), + ] diff --git a/engine/vibes_auth/models.py b/engine/vibes_auth/models.py index 9622145a..c5ae191c 100644 --- a/engine/vibes_auth/models.py +++ b/engine/vibes_auth/models.py @@ -4,6 +4,7 @@ from django.conf import settings from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import Group as BaseGroup from django.core.cache import cache +from django.core.exceptions import ValidationError from django.db.models import ( BooleanField, CharField, @@ -11,7 +12,14 @@ from django.db.models import ( ImageField, JSONField, UUIDField, + ForeignKey, + TextField, + DateTimeField, + Index, + CASCADE, + SET_NULL, ) +from django.utils import timezone from django.utils.translation import gettext_lazy as _ from rest_framework_simplejwt.token_blacklist.models import ( BlacklistedToken as BaseBlacklistedToken, @@ -21,6 +29,7 @@ from rest_framework_simplejwt.token_blacklist.models import ( ) from engine.core.abstract import NiceModel +from engine.vibes_auth.choices import SenderType, ThreadStatus from engine.vibes_auth.managers import UserManager from engine.vibes_auth.validators import validate_phone_number from engine.payments.models import Balance @@ -116,6 +125,50 @@ class User(AbstractUser, NiceModel): # type: ignore [django-manager-missing] verbose_name_plural = _("users") +class ChatThread(NiceModel): + user = ForeignKey(User, null=True, blank=True, on_delete=SET_NULL, related_name="chat_threads") + email = EmailField(blank=True, default="", help_text=_("For anonymous threads")) + assigned_to = ForeignKey(User, null=True, blank=True, on_delete=SET_NULL, related_name="assigned_chat_threads") + status = CharField(max_length=16, choices=ThreadStatus.choices, default=ThreadStatus.OPEN) + last_message_at = DateTimeField(default=timezone.now) + attributes = JSONField(default=dict, blank=True) + + class Meta: + indexes = [ + Index(fields=["status", "modified"], name="chatthread_status_mod_idx"), + Index(fields=["assigned_to", "status"], name="chatthread_assigned_status_idx"), + Index(fields=["user"], name="chatthread_user_idx"), + Index(fields=["email"], name="chatthread_email_idx"), + ] + ordering = ("-modified",) + verbose_name = _("Chat thread") + verbose_name_plural = _("Chat threads") + + def clean(self) -> None: + super().clean() + if not self.user and not self.email: + raise ValidationError({"email": _("provide user or email for anonymous thread.")}) + if self.assigned_to and not self.assigned_to.is_staff: + raise ValidationError({"assigned_to": _("assignee must be a staff user.")}) + + +class ChatMessage(NiceModel): + thread = ForeignKey(ChatThread, on_delete=CASCADE, related_name="messages") + sender_type = CharField(max_length=16, choices=SenderType.choices) + sender_user = ForeignKey(User, null=True, blank=True, on_delete=SET_NULL, related_name="chat_messages") + text = TextField() + sent_at = DateTimeField(default=timezone.now) + attributes = JSONField(default=dict, blank=True) + + class Meta: + indexes = [ + Index(fields=["thread", "sent_at"], name="chatmessage_thread_sent_idx"), + ] + ordering = ("sent_at", "uuid") + verbose_name = _("Chat message") + verbose_name_plural = _("Chat messages") + + class Group(BaseGroup): class Meta: proxy = True From 5a046fb62886d2ab237f7a601e01454fb2e76089 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 11 Nov 2025 23:31:06 +0300 Subject: [PATCH 2/2] Features: 1) Messaging submodule drafts --- engine/blog/docs/drf/viewsets.py | 6 + .../blog/locale/ar_AR/LC_MESSAGES/django.po | 6 +- .../blog/locale/cs_CZ/LC_MESSAGES/django.po | 6 +- .../blog/locale/da_DK/LC_MESSAGES/django.po | 6 +- .../blog/locale/de_DE/LC_MESSAGES/django.po | 6 +- .../blog/locale/en_GB/LC_MESSAGES/django.po | 6 +- .../blog/locale/en_US/LC_MESSAGES/django.po | 6 +- .../blog/locale/es_ES/LC_MESSAGES/django.po | 6 +- .../blog/locale/fa_IR/LC_MESSAGES/django.po | 6 +- .../blog/locale/fr_FR/LC_MESSAGES/django.po | 6 +- .../blog/locale/he_IL/LC_MESSAGES/django.po | 6 +- .../blog/locale/hi_IN/LC_MESSAGES/django.po | 6 +- .../blog/locale/hr_HR/LC_MESSAGES/django.po | 6 +- .../blog/locale/id_ID/LC_MESSAGES/django.po | 6 +- .../blog/locale/it_IT/LC_MESSAGES/django.po | 6 +- .../blog/locale/ja_JP/LC_MESSAGES/django.po | 6 +- .../blog/locale/kk_KZ/LC_MESSAGES/django.po | 6 +- .../blog/locale/ko_KR/LC_MESSAGES/django.po | 6 +- .../blog/locale/nl_NL/LC_MESSAGES/django.po | 6 +- .../blog/locale/no_NO/LC_MESSAGES/django.po | 6 +- .../blog/locale/pl_PL/LC_MESSAGES/django.po | 6 +- .../blog/locale/pt_BR/LC_MESSAGES/django.po | 6 +- .../blog/locale/ro_RO/LC_MESSAGES/django.po | 6 +- .../blog/locale/ru_RU/LC_MESSAGES/django.po | 6 +- .../blog/locale/sv_SE/LC_MESSAGES/django.po | 6 +- .../blog/locale/th_TH/LC_MESSAGES/django.po | 6 +- .../blog/locale/tr_TR/LC_MESSAGES/django.po | 6 +- .../blog/locale/vi_VN/LC_MESSAGES/django.po | 6 +- .../blog/locale/zh_Hans/LC_MESSAGES/django.po | 6 +- engine/core/docs/drf/views.py | 77 +- engine/core/docs/drf/viewsets.py | 378 +++++- .../core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 104141 -> 105579 bytes .../core/locale/ar_AR/LC_MESSAGES/django.po | 734 ++++++------ .../core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 89086 -> 90352 bytes .../core/locale/cs_CZ/LC_MESSAGES/django.po | 686 +++++------ .../core/locale/da_DK/LC_MESSAGES/django.mo | Bin 87052 -> 88212 bytes .../core/locale/da_DK/LC_MESSAGES/django.po | 733 ++++++------ .../core/locale/de_DE/LC_MESSAGES/django.mo | Bin 92156 -> 93448 bytes .../core/locale/de_DE/LC_MESSAGES/django.po | 839 +++++++------- .../core/locale/en_GB/LC_MESSAGES/django.mo | Bin 83865 -> 85039 bytes .../core/locale/en_GB/LC_MESSAGES/django.po | 707 ++++++------ .../core/locale/en_US/LC_MESSAGES/django.mo | Bin 83856 -> 85030 bytes .../core/locale/en_US/LC_MESSAGES/django.po | 704 +++++------ .../core/locale/es_ES/LC_MESSAGES/django.mo | Bin 90154 -> 91410 bytes .../core/locale/es_ES/LC_MESSAGES/django.po | 753 ++++++------ .../core/locale/fa_IR/LC_MESSAGES/django.po | 406 ++++--- .../core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 92916 -> 94203 bytes .../core/locale/fr_FR/LC_MESSAGES/django.po | 806 ++++++------- .../core/locale/he_IL/LC_MESSAGES/django.mo | Bin 96893 -> 98244 bytes .../core/locale/he_IL/LC_MESSAGES/django.po | 689 +++++------ .../core/locale/hi_IN/LC_MESSAGES/django.po | 406 ++++--- .../core/locale/hr_HR/LC_MESSAGES/django.po | 406 ++++--- .../core/locale/id_ID/LC_MESSAGES/django.mo | Bin 87183 -> 88429 bytes .../core/locale/id_ID/LC_MESSAGES/django.po | 721 ++++++------ .../core/locale/it_IT/LC_MESSAGES/django.mo | Bin 90490 -> 91723 bytes .../core/locale/it_IT/LC_MESSAGES/django.po | 803 ++++++------- .../core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 95680 -> 97034 bytes .../core/locale/ja_JP/LC_MESSAGES/django.po | 1011 +++++++--------- .../core/locale/kk_KZ/LC_MESSAGES/django.po | 406 ++++--- .../core/locale/ko_KR/LC_MESSAGES/django.mo | Bin 90286 -> 91574 bytes .../core/locale/ko_KR/LC_MESSAGES/django.po | 954 +++++++-------- .../core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 90050 -> 91291 bytes .../core/locale/nl_NL/LC_MESSAGES/django.po | 745 ++++++------ .../core/locale/no_NO/LC_MESSAGES/django.mo | Bin 87692 -> 88863 bytes .../core/locale/no_NO/LC_MESSAGES/django.po | 764 ++++++------ .../core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 89267 -> 90546 bytes .../core/locale/pl_PL/LC_MESSAGES/django.po | 688 +++++------ .../core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 89905 -> 91151 bytes .../core/locale/pt_BR/LC_MESSAGES/django.po | 744 ++++++------ .../core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 91684 -> 92985 bytes .../core/locale/ro_RO/LC_MESSAGES/django.po | 754 ++++++------ .../core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 118772 -> 120475 bytes .../core/locale/ru_RU/LC_MESSAGES/django.po | 715 ++++++------ .../core/locale/sv_SE/LC_MESSAGES/django.mo | Bin 87694 -> 88902 bytes .../core/locale/sv_SE/LC_MESSAGES/django.po | 735 ++++++------ .../core/locale/th_TH/LC_MESSAGES/django.mo | Bin 141815 -> 143934 bytes .../core/locale/th_TH/LC_MESSAGES/django.po | 1028 +++++++++-------- .../core/locale/tr_TR/LC_MESSAGES/django.mo | Bin 90031 -> 91262 bytes .../core/locale/tr_TR/LC_MESSAGES/django.po | 745 ++++++------ .../core/locale/vi_VN/LC_MESSAGES/django.mo | Bin 101201 -> 102661 bytes .../core/locale/vi_VN/LC_MESSAGES/django.po | 842 +++++++------- .../core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 78976 -> 80053 bytes .../core/locale/zh_Hans/LC_MESSAGES/django.po | 786 ++++++------- engine/core/views.py | 35 +- engine/payments/docs/drf/views.py | 3 + engine/payments/docs/drf/viewsets.py | 6 + .../locale/ar_AR/LC_MESSAGES/django.po | 12 +- .../locale/cs_CZ/LC_MESSAGES/django.po | 12 +- .../locale/da_DK/LC_MESSAGES/django.po | 12 +- .../locale/de_DE/LC_MESSAGES/django.po | 12 +- .../locale/en_GB/LC_MESSAGES/django.po | 12 +- .../locale/en_US/LC_MESSAGES/django.po | 12 +- .../locale/es_ES/LC_MESSAGES/django.po | 12 +- .../locale/fa_IR/LC_MESSAGES/django.po | 12 +- .../locale/fr_FR/LC_MESSAGES/django.po | 12 +- .../locale/he_IL/LC_MESSAGES/django.po | 12 +- .../locale/hi_IN/LC_MESSAGES/django.po | 12 +- .../locale/hr_HR/LC_MESSAGES/django.po | 12 +- .../locale/id_ID/LC_MESSAGES/django.po | 12 +- .../locale/it_IT/LC_MESSAGES/django.po | 12 +- .../locale/ja_JP/LC_MESSAGES/django.po | 12 +- .../locale/kk_KZ/LC_MESSAGES/django.po | 12 +- .../locale/ko_KR/LC_MESSAGES/django.po | 12 +- .../locale/nl_NL/LC_MESSAGES/django.po | 12 +- .../locale/no_NO/LC_MESSAGES/django.po | 12 +- .../locale/pl_PL/LC_MESSAGES/django.po | 12 +- .../locale/pt_BR/LC_MESSAGES/django.po | 12 +- .../locale/ro_RO/LC_MESSAGES/django.po | 12 +- .../locale/ru_RU/LC_MESSAGES/django.po | 12 +- .../locale/sv_SE/LC_MESSAGES/django.po | 12 +- .../locale/th_TH/LC_MESSAGES/django.po | 12 +- .../locale/tr_TR/LC_MESSAGES/django.po | 12 +- .../locale/vi_VN/LC_MESSAGES/django.po | 12 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 12 +- engine/vibes_auth/docs/drf/messaging.py | 35 + engine/vibes_auth/docs/drf/views.py | 9 + engine/vibes_auth/docs/drf/viewsets.py | 35 + .../locale/ar_AR/LC_MESSAGES/django.mo | Bin 16034 -> 16294 bytes .../locale/ar_AR/LC_MESSAGES/django.po | 277 ++--- .../locale/cs_CZ/LC_MESSAGES/django.mo | Bin 13297 -> 13511 bytes .../locale/cs_CZ/LC_MESSAGES/django.po | 276 ++--- .../locale/da_DK/LC_MESSAGES/django.mo | Bin 13076 -> 13283 bytes .../locale/da_DK/LC_MESSAGES/django.po | 270 ++--- .../locale/de_DE/LC_MESSAGES/django.mo | Bin 14023 -> 14237 bytes .../locale/de_DE/LC_MESSAGES/django.po | 298 ++--- .../locale/en_GB/LC_MESSAGES/django.mo | Bin 12618 -> 12804 bytes .../locale/en_GB/LC_MESSAGES/django.po | 276 ++--- .../locale/en_US/LC_MESSAGES/django.mo | Bin 12607 -> 12793 bytes .../locale/en_US/LC_MESSAGES/django.po | 276 ++--- .../locale/es_ES/LC_MESSAGES/django.mo | Bin 13779 -> 13982 bytes .../locale/es_ES/LC_MESSAGES/django.po | 271 ++--- .../locale/fa_IR/LC_MESSAGES/django.po | 217 ++-- .../locale/fr_FR/LC_MESSAGES/django.mo | Bin 14427 -> 14662 bytes .../locale/fr_FR/LC_MESSAGES/django.po | 282 ++--- .../locale/he_IL/LC_MESSAGES/django.mo | Bin 14419 -> 14645 bytes .../locale/he_IL/LC_MESSAGES/django.po | 265 ++--- .../locale/hi_IN/LC_MESSAGES/django.po | 217 ++-- .../locale/hr_HR/LC_MESSAGES/django.po | 217 ++-- .../locale/id_ID/LC_MESSAGES/django.mo | Bin 13141 -> 13350 bytes .../locale/id_ID/LC_MESSAGES/django.po | 270 ++--- .../locale/it_IT/LC_MESSAGES/django.mo | Bin 13721 -> 13938 bytes .../locale/it_IT/LC_MESSAGES/django.po | 274 ++--- .../locale/ja_JP/LC_MESSAGES/django.mo | Bin 15173 -> 15419 bytes .../locale/ja_JP/LC_MESSAGES/django.po | 308 +++-- .../locale/kk_KZ/LC_MESSAGES/django.po | 217 ++-- .../locale/ko_KR/LC_MESSAGES/django.mo | Bin 13913 -> 14125 bytes .../locale/ko_KR/LC_MESSAGES/django.po | 304 +++-- .../locale/nl_NL/LC_MESSAGES/django.mo | Bin 13429 -> 13662 bytes .../locale/nl_NL/LC_MESSAGES/django.po | 275 ++--- .../locale/no_NO/LC_MESSAGES/django.mo | Bin 13114 -> 13312 bytes .../locale/no_NO/LC_MESSAGES/django.po | 275 ++--- .../locale/pl_PL/LC_MESSAGES/django.mo | Bin 13563 -> 13778 bytes .../locale/pl_PL/LC_MESSAGES/django.po | 274 ++--- .../locale/pt_BR/LC_MESSAGES/django.mo | Bin 13506 -> 13724 bytes .../locale/pt_BR/LC_MESSAGES/django.po | 275 ++--- .../locale/ro_RO/LC_MESSAGES/django.mo | Bin 13904 -> 14129 bytes .../locale/ro_RO/LC_MESSAGES/django.po | 270 ++--- .../locale/ru_RU/LC_MESSAGES/django.mo | Bin 17845 -> 18099 bytes .../locale/ru_RU/LC_MESSAGES/django.po | 293 ++--- .../locale/sv_SE/LC_MESSAGES/django.mo | Bin 13344 -> 13553 bytes .../locale/sv_SE/LC_MESSAGES/django.po | 273 ++--- .../locale/th_TH/LC_MESSAGES/django.mo | Bin 20465 -> 20777 bytes .../locale/th_TH/LC_MESSAGES/django.po | 312 ++--- .../locale/tr_TR/LC_MESSAGES/django.mo | Bin 13653 -> 13880 bytes .../locale/tr_TR/LC_MESSAGES/django.po | 273 ++--- .../locale/vi_VN/LC_MESSAGES/django.mo | Bin 14818 -> 15072 bytes .../locale/vi_VN/LC_MESSAGES/django.po | 297 ++--- .../locale/zh_Hans/LC_MESSAGES/django.mo | Bin 12094 -> 12289 bytes .../locale/zh_Hans/LC_MESSAGES/django.po | 275 +++-- engine/vibes_auth/messaging/consumers.py | 10 + engine/vibes_auth/messaging/routing.py | 9 - engine/vibes_auth/messaging/serializers.py | 15 + engine/vibes_auth/messaging/services.py | 3 +- engine/vibes_auth/messaging/urls.py | 14 + engine/vibes_auth/urls.py | 2 + evibes/asgi.py | 6 +- evibes/locale/ar_AR/LC_MESSAGES/django.po | 100 +- evibes/locale/cs_CZ/LC_MESSAGES/django.po | 113 +- evibes/locale/da_DK/LC_MESSAGES/django.po | 109 +- evibes/locale/de_DE/LC_MESSAGES/django.po | 117 +- evibes/locale/en_GB/LC_MESSAGES/django.po | 106 +- evibes/locale/en_US/LC_MESSAGES/django.po | 106 +- evibes/locale/es_ES/LC_MESSAGES/django.po | 114 +- evibes/locale/fa_IR/LC_MESSAGES/django.po | 2 +- evibes/locale/fr_FR/LC_MESSAGES/django.po | 122 +- evibes/locale/he_IL/LC_MESSAGES/django.po | 97 +- evibes/locale/hi_IN/LC_MESSAGES/django.po | 2 +- evibes/locale/hr_HR/LC_MESSAGES/django.po | 2 +- evibes/locale/id_ID/LC_MESSAGES/django.po | 113 +- evibes/locale/it_IT/LC_MESSAGES/django.po | 116 +- evibes/locale/ja_JP/LC_MESSAGES/django.po | 94 +- evibes/locale/kk_KZ/LC_MESSAGES/django.po | 2 +- evibes/locale/ko_KR/LC_MESSAGES/django.po | 97 +- evibes/locale/nl_NL/LC_MESSAGES/django.po | 112 +- evibes/locale/no_NO/LC_MESSAGES/django.po | 109 +- evibes/locale/pl_PL/LC_MESSAGES/django.po | 110 +- evibes/locale/pt_BR/LC_MESSAGES/django.po | 117 +- evibes/locale/ro_RO/LC_MESSAGES/django.po | 117 +- evibes/locale/ru_RU/LC_MESSAGES/django.po | 113 +- evibes/locale/sv_SE/LC_MESSAGES/django.po | 115 +- evibes/locale/th_TH/LC_MESSAGES/django.po | 105 +- evibes/locale/tr_TR/LC_MESSAGES/django.po | 119 +- evibes/locale/vi_VN/LC_MESSAGES/django.po | 109 +- evibes/locale/zh_Hans/LC_MESSAGES/django.po | 73 +- evibes/settings/base.py | 3 + evibes/settings/drf.py | 25 +- evibes/urls.py | 5 +- pyproject.toml | 2 + uv.lock | 163 ++- 209 files changed, 16988 insertions(+), 14885 deletions(-) create mode 100644 engine/vibes_auth/docs/drf/messaging.py delete mode 100644 engine/vibes_auth/messaging/routing.py create mode 100644 engine/vibes_auth/messaging/serializers.py create mode 100644 engine/vibes_auth/messaging/urls.py diff --git a/engine/blog/docs/drf/viewsets.py b/engine/blog/docs/drf/viewsets.py index 14d2e36f..27fee717 100644 --- a/engine/blog/docs/drf/viewsets.py +++ b/engine/blog/docs/drf/viewsets.py @@ -7,10 +7,16 @@ from engine.blog.serializers import PostSerializer POST_SCHEMA = { "list": extend_schema( + tags=[ + "blog", + ], summary=_("list all posts (read-only)"), responses={status.HTTP_200_OK: PostSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "blog", + ], summary=_("retrieve a single post (read-only)"), responses={status.HTTP_200_OK: PostSerializer(), **BASE_ERRORS}, ), diff --git a/engine/blog/locale/ar_AR/LC_MESSAGES/django.po b/engine/blog/locale/ar_AR/LC_MESSAGES/django.po index e87e38eb..64433b10 100644 --- a/engine/blog/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/blog/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "المدونة" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "سرد جميع المشاركات (للقراءة فقط)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "استرداد منشور واحد (للقراءة فقط)" diff --git a/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po b/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po index ab18eb29..c16e21f1 100644 --- a/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/blog/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Seznam všech příspěvků (pouze pro čtení)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Získání jednoho příspěvku (pouze pro čtení)" diff --git a/engine/blog/locale/da_DK/LC_MESSAGES/django.po b/engine/blog/locale/da_DK/LC_MESSAGES/django.po index 8fd5500e..0bad4258 100644 --- a/engine/blog/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/blog/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Vis alle indlæg (skrivebeskyttet)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Hent et enkelt indlæg (skrivebeskyttet)" diff --git a/engine/blog/locale/de_DE/LC_MESSAGES/django.po b/engine/blog/locale/de_DE/LC_MESSAGES/django.po index 1124767a..b84f1862 100644 --- a/engine/blog/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/blog/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Alle Beiträge auflisten (schreibgeschützt)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Einen einzelnen Beitrag abrufen (schreibgeschützt)" diff --git a/engine/blog/locale/en_GB/LC_MESSAGES/django.po b/engine/blog/locale/en_GB/LC_MESSAGES/django.po index 60a50c5d..5f402837 100644 --- a/engine/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/blog/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -21,11 +21,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "List all posts (read-only)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Retrieve a single post (read-only)" diff --git a/engine/blog/locale/en_US/LC_MESSAGES/django.po b/engine/blog/locale/en_US/LC_MESSAGES/django.po index aa5a5da0..bb7dbce0 100644 --- a/engine/blog/locale/en_US/LC_MESSAGES/django.po +++ b/engine/blog/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "List all posts (read-only)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Retrieve a single post (read-only)" diff --git a/engine/blog/locale/es_ES/LC_MESSAGES/django.po b/engine/blog/locale/es_ES/LC_MESSAGES/django.po index 96fce42e..2a7007e2 100644 --- a/engine/blog/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/blog/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Listar todos los mensajes (sólo lectura)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Recuperar una única entrada (sólo lectura)" diff --git a/engine/blog/locale/fa_IR/LC_MESSAGES/django.po b/engine/blog/locale/fa_IR/LC_MESSAGES/django.po index 53aed9ed..9e673cdb 100644 --- a/engine/blog/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/blog/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -20,11 +20,11 @@ msgstr "" msgid "blog" msgstr "" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "" diff --git a/engine/blog/locale/fr_FR/LC_MESSAGES/django.po b/engine/blog/locale/fr_FR/LC_MESSAGES/django.po index 6462c628..ae42fbc0 100644 --- a/engine/blog/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/blog/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Liste de tous les messages (en lecture seule)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Récupérer un seul message (en lecture seule)" diff --git a/engine/blog/locale/he_IL/LC_MESSAGES/django.po b/engine/blog/locale/he_IL/LC_MESSAGES/django.po index e0ee4279..4f5d84cf 100644 --- a/engine/blog/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/blog/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "בלוג" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "הצג את כל ההודעות (לקריאה בלבד)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "איתור פוסט בודד (לקריאה בלבד)" diff --git a/engine/blog/locale/hi_IN/LC_MESSAGES/django.po b/engine/blog/locale/hi_IN/LC_MESSAGES/django.po index 772804d3..0e9d8875 100644 --- a/engine/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -20,11 +20,11 @@ msgstr "" msgid "blog" msgstr "" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "" diff --git a/engine/blog/locale/hr_HR/LC_MESSAGES/django.po b/engine/blog/locale/hr_HR/LC_MESSAGES/django.po index 53aed9ed..9e673cdb 100644 --- a/engine/blog/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/blog/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -20,11 +20,11 @@ msgstr "" msgid "blog" msgstr "" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "" diff --git a/engine/blog/locale/id_ID/LC_MESSAGES/django.po b/engine/blog/locale/id_ID/LC_MESSAGES/django.po index b9c06a97..5ca32971 100644 --- a/engine/blog/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/blog/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Daftar semua postingan (hanya-baca)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Mengambil satu postingan (hanya-baca)" diff --git a/engine/blog/locale/it_IT/LC_MESSAGES/django.po b/engine/blog/locale/it_IT/LC_MESSAGES/django.po index adcb9b6f..6bcd64c9 100644 --- a/engine/blog/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/blog/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Elenco di tutti i messaggi (solo lettura)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Recuperare un singolo post (solo lettura)" diff --git a/engine/blog/locale/ja_JP/LC_MESSAGES/django.po b/engine/blog/locale/ja_JP/LC_MESSAGES/django.po index 50c183f0..b4ee4c9d 100644 --- a/engine/blog/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/blog/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "ブログ" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "すべての投稿をリストアップする(読み取り専用)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "単一の投稿を取得する(読み取り専用)" diff --git a/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po b/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po index 772804d3..0e9d8875 100644 --- a/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -20,11 +20,11 @@ msgstr "" msgid "blog" msgstr "" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "" diff --git a/engine/blog/locale/ko_KR/LC_MESSAGES/django.po b/engine/blog/locale/ko_KR/LC_MESSAGES/django.po index 50342c67..2482216f 100644 --- a/engine/blog/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/blog/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "블로그" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "모든 게시물 나열(읽기 전용)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "단일 게시물 검색(읽기 전용)" diff --git a/engine/blog/locale/nl_NL/LC_MESSAGES/django.po b/engine/blog/locale/nl_NL/LC_MESSAGES/django.po index d4e0456f..ea23c8db 100644 --- a/engine/blog/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/blog/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Alle berichten weergeven (alleen-lezen)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Een enkel bericht ophalen (alleen-lezen)" diff --git a/engine/blog/locale/no_NO/LC_MESSAGES/django.po b/engine/blog/locale/no_NO/LC_MESSAGES/django.po index 2b1f6b58..8e887c19 100644 --- a/engine/blog/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/blog/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blogg" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Liste over alle innlegg (skrivebeskyttet)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Hent et enkelt innlegg (skrivebeskyttet)" diff --git a/engine/blog/locale/pl_PL/LC_MESSAGES/django.po b/engine/blog/locale/pl_PL/LC_MESSAGES/django.po index 063519df..94e67236 100644 --- a/engine/blog/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/blog/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Lista wszystkich postów (tylko do odczytu)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Pobieranie pojedynczego wpisu (tylko do odczytu)" diff --git a/engine/blog/locale/pt_BR/LC_MESSAGES/django.po b/engine/blog/locale/pt_BR/LC_MESSAGES/django.po index e6703fd4..ee6e9077 100644 --- a/engine/blog/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/blog/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Listar todas as postagens (somente leitura)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Recuperar um único post (somente leitura)" diff --git a/engine/blog/locale/ro_RO/LC_MESSAGES/django.po b/engine/blog/locale/ro_RO/LC_MESSAGES/django.po index d6bf5b76..6262a3ec 100644 --- a/engine/blog/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/blog/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Listează toate postările (doar pentru citire)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Recuperează o singură postare (read-only)" diff --git a/engine/blog/locale/ru_RU/LC_MESSAGES/django.po b/engine/blog/locale/ru_RU/LC_MESSAGES/django.po index 72495766..2a96220c 100644 --- a/engine/blog/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/blog/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Блог" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Список всех сообщений (только для чтения)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Получение одного сообщения (только для чтения)" diff --git a/engine/blog/locale/sv_SE/LC_MESSAGES/django.po b/engine/blog/locale/sv_SE/LC_MESSAGES/django.po index ff3cb5a6..ded612cf 100644 --- a/engine/blog/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/blog/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blogg" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Lista alla inlägg (skrivskyddad)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Hämta ett enskilt inlägg (skrivskyddat)" diff --git a/engine/blog/locale/th_TH/LC_MESSAGES/django.po b/engine/blog/locale/th_TH/LC_MESSAGES/django.po index 25e2a5b1..64b2c1d8 100644 --- a/engine/blog/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/blog/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "บล็อก" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "แสดงรายการโพสต์ทั้งหมด (อ่านอย่างเดียว)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "ดึงโพสต์เดียว (อ่านอย่างเดียว)" diff --git a/engine/blog/locale/tr_TR/LC_MESSAGES/django.po b/engine/blog/locale/tr_TR/LC_MESSAGES/django.po index 0b314605..0709c36b 100644 --- a/engine/blog/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/blog/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Tüm gönderileri listele (salt okunur)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Tek bir gönderiyi al (salt okunur)" diff --git a/engine/blog/locale/vi_VN/LC_MESSAGES/django.po b/engine/blog/locale/vi_VN/LC_MESSAGES/django.po index 4c504a76..9804b56e 100644 --- a/engine/blog/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/blog/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "Blog" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "Danh sách tất cả các bài đăng (chỉ đọc)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "Lấy một bài đăng duy nhất (chỉ đọc)" diff --git a/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po b/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po index db6cdbd9..8b13509b 100644 --- a/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/blog/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" msgid "blog" msgstr "博客" -#: engine/blog/docs/drf/viewsets.py:10 +#: engine/blog/docs/drf/viewsets.py:13 msgid "list all posts (read-only)" msgstr "列出所有帖子(只读)" -#: engine/blog/docs/drf/viewsets.py:14 +#: engine/blog/docs/drf/viewsets.py:20 msgid "retrieve a single post (read-only)" msgstr "检索单个帖子(只读)" diff --git a/engine/core/docs/drf/views.py b/engine/core/docs/drf/views.py index a3f4f912..e1b192c7 100644 --- a/engine/core/docs/drf/views.py +++ b/engine/core/docs/drf/views.py @@ -1,3 +1,5 @@ +from django.conf import settings +from django.http import FileResponse from django.utils.translation import gettext_lazy as _ from drf_spectacular.utils import OpenApiParameter, extend_schema, inline_serializer from rest_framework import status @@ -12,8 +14,33 @@ from engine.core.serializers import ( ) from engine.payments.serializers import TransactionProcessSerializer + +CUSTOM_OPENAPI_SCHEMA = { + "get": extend_schema( + tags=[ + "misc", + ], + parameters=[ + OpenApiParameter( + name="lang", + type=str, + location="query", + enum=list(dict(settings.LANGUAGES).keys()), + ), + ], + summary=_("OpenAPI schema in selected format with selected language"), + description=_( + "OpenApi3 schema for this API. Format can be selected via content negotiation. " + "Language can be selected with Accept-Language and query parameter both." + ), + ) +} + CACHE_SCHEMA = { "post": extend_schema( + tags=[ + "misc", + ], summary=_("cache I/O"), description=_( "apply only a key to read permitted data from cache.\n" @@ -29,6 +56,9 @@ CACHE_SCHEMA = { LANGUAGE_SCHEMA = { "get": extend_schema( + tags=[ + "misc", + ], summary=_("get a list of supported languages"), responses={ status.HTTP_200_OK: LanguageSerializer(many=True), @@ -38,6 +68,9 @@ LANGUAGE_SCHEMA = { PARAMETERS_SCHEMA = { "get": extend_schema( + tags=[ + "misc", + ], summary=_("get application's exposable parameters"), responses={status.HTTP_200_OK: inline_serializer("parameters", fields={"key": CharField(default="value")})}, ) @@ -45,6 +78,9 @@ PARAMETERS_SCHEMA = { CONTACT_US_SCHEMA = { "post": extend_schema( + tags=[ + "misc", + ], summary=_("send a message to the support team"), request=ContactUsSerializer, responses={ @@ -56,6 +92,9 @@ CONTACT_US_SCHEMA = { REQUEST_CURSED_URL_SCHEMA = { "post": extend_schema( + tags=[ + "misc", + ], summary=_("request a CORSed URL"), request=inline_serializer("url", fields={"url": CharField(default="https://example.org")}), responses={ @@ -67,6 +106,10 @@ REQUEST_CURSED_URL_SCHEMA = { SEARCH_SCHEMA = { "get": extend_schema( + tags=[ + "misc", + ], + summary=_("Search between products, categories and brands"), parameters=[ OpenApiParameter( name="q", @@ -76,11 +119,13 @@ SEARCH_SCHEMA = { ) ], responses={ - 200: inline_serializer( + status.HTTP_200_OK: inline_serializer( name="GlobalSearchResponse", fields={"results": DictField(child=ListField(child=DictField(child=CharField())))}, ), - 400: inline_serializer(name="GlobalSearchErrorResponse", fields={"error": CharField()}), + status.HTTP_400_BAD_REQUEST: inline_serializer( + name="GlobalSearchErrorResponse", fields={"error": CharField()} + ), }, description=(_("global search endpoint to query across project's tables")), ) @@ -88,14 +133,38 @@ SEARCH_SCHEMA = { BUY_AS_BUSINESS_SCHEMA = { "post": extend_schema( + tags=[ + "misc", + ], summary=_("purchase an order as a business"), request=BuyAsBusinessOrderSerializer, responses={ - 201: TransactionProcessSerializer, - 400: error, + status.HTTP_201_CREATED: TransactionProcessSerializer, + status.HTTP_400_BAD_REQUEST: error, }, description=( _("purchase an order as a business, using the provided `products` with `product_uuid` and `attributes`.") ), ) } + +DOWNLOAD_DIGITAL_ASSET_SCHEMA = { + "get": extend_schema( + tags=[ + "misc", + ], + parameters=[ + OpenApiParameter( + name="order_product_uuid", + location="path", + required=True, + allow_blank=False, + ) + ], + summary=_("download a digital asset from purchased digital order"), + responses={ + status.HTTP_200_OK: FileResponse, + status.HTTP_400_BAD_REQUEST: error, + }, + ) +} diff --git a/engine/core/docs/drf/viewsets.py b/engine/core/docs/drf/viewsets.py index 4e34955f..0edfda81 100644 --- a/engine/core/docs/drf/viewsets.py +++ b/engine/core/docs/drf/viewsets.py @@ -55,26 +55,44 @@ from engine.payments.serializers import TransactionProcessSerializer ATTRIBUTE_GROUP_SCHEMA = { "list": extend_schema( + tags=[ + "attributeGroups", + ], summary=_("list all attribute groups (simple view)"), responses={status.HTTP_200_OK: AttributeGroupSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "attributeGroups", + ], summary=_("retrieve a single attribute group (detailed view)"), responses={status.HTTP_200_OK: AttributeGroupDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "attributeGroups", + ], summary=_("create an attribute group"), responses={status.HTTP_201_CREATED: AttributeGroupDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "attributeGroups", + ], summary=_("delete an attribute group"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "attributeGroups", + ], summary=_("rewrite an existing attribute group saving non-editables"), responses={status.HTTP_200_OK: AttributeGroupDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "attributeGroups", + ], summary=_("rewrite some fields of an existing attribute group saving non-editables"), responses={status.HTTP_200_OK: AttributeGroupDetailSerializer(), **BASE_ERRORS}, ), @@ -82,26 +100,44 @@ ATTRIBUTE_GROUP_SCHEMA = { ATTRIBUTE_SCHEMA = { "list": extend_schema( + tags=[ + "attributes", + ], summary=_("list all attributes (simple view)"), responses={status.HTTP_200_OK: AttributeSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "attributes", + ], summary=_("retrieve a single attribute (detailed view)"), responses={status.HTTP_200_OK: AttributeDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "attributes", + ], summary=_("create an attribute"), responses={status.HTTP_201_CREATED: AttributeDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "attributes", + ], summary=_("delete an attribute"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "attributes", + ], summary=_("rewrite an existing attribute saving non-editables"), responses={status.HTTP_200_OK: AttributeDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "attributes", + ], summary=_("rewrite some fields of an existing attribute saving non-editables"), responses={status.HTTP_200_OK: AttributeDetailSerializer(), **BASE_ERRORS}, ), @@ -109,26 +145,44 @@ ATTRIBUTE_SCHEMA = { ATTRIBUTE_VALUE_SCHEMA = { "list": extend_schema( + tags=[ + "attributeValues", + ], summary=_("list all attribute values (simple view)"), responses={status.HTTP_200_OK: AttributeValueSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "attributeValues", + ], summary=_("retrieve a single attribute value (detailed view)"), responses={status.HTTP_200_OK: AttributeValueDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "attributeValues", + ], summary=_("create an attribute value"), responses={status.HTTP_201_CREATED: AttributeValueDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "attributeValues", + ], summary=_("delete an attribute value"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "attributeValues", + ], summary=_("rewrite an existing attribute value saving non-editables"), responses={status.HTTP_200_OK: AttributeValueDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "attributeValues", + ], summary=_("rewrite some fields of an existing attribute value saving non-editables"), responses={status.HTTP_200_OK: AttributeValueDetailSerializer(), **BASE_ERRORS}, ), @@ -136,11 +190,17 @@ ATTRIBUTE_VALUE_SCHEMA = { CATEGORY_SCHEMA = { "list": extend_schema( + tags=[ + "categories", + ], summary=_("list all categories (simple view)"), description=_("list all categories (simple view)"), responses={status.HTTP_200_OK: CategorySimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "categories", + ], summary=_("retrieve a single category (detailed view)"), description=_("retrieve a single category (detailed view)"), parameters=[ @@ -154,26 +214,41 @@ CATEGORY_SCHEMA = { responses={status.HTTP_200_OK: CategoryDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "categories", + ], summary=_("create a category"), description=_("create a category"), responses={status.HTTP_201_CREATED: CategoryDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "categories", + ], summary=_("delete a category"), description=_("delete a category"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "categories", + ], summary=_("rewrite an existing category saving non-editables"), description=_("rewrite an existing category saving non-editables"), responses={status.HTTP_200_OK: CategoryDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "categories", + ], summary=_("rewrite some fields of an existing category saving non-editables"), description=_("rewrite some fields of an existing category saving non-editables"), responses={status.HTTP_200_OK: CategoryDetailSerializer(), **BASE_ERRORS}, ), "seo_meta": extend_schema( + tags=[ + "categories", + ], summary=_("SEO Meta snapshot"), description=_("returns a snapshot of the category's SEO meta data"), parameters=[ @@ -193,6 +268,9 @@ CATEGORY_SCHEMA = { ORDER_SCHEMA = { "list": extend_schema( + tags=[ + "orders", + ], summary=_("list all orders (simple view)"), description=_("for non-staff users, only their own orders are returned."), parameters=[ @@ -252,6 +330,9 @@ ORDER_SCHEMA = { responses={status.HTTP_200_OK: OrderSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "orders", + ], summary=_("retrieve a single order (detailed view)"), parameters=[ OpenApiParameter( @@ -264,23 +345,38 @@ ORDER_SCHEMA = { responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "orders", + ], summary=_("create an order"), description=_("doesn't work for non-staff users."), responses={status.HTTP_201_CREATED: OrderDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "orders", + ], summary=_("delete an order"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "orders", + ], summary=_("rewrite an existing order saving non-editables"), responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "orders", + ], summary=_("rewrite some fields of an existing order saving non-editables"), responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, ), "buy": extend_schema( + tags=[ + "orders", + ], summary=_("purchase an order"), description=_( "finalizes the order purchase. if `force_balance` is used," @@ -294,7 +390,21 @@ ORDER_SCHEMA = { **BASE_ERRORS, }, ), + "current": extend_schema( + tags=[ + "orders", + ], + summary=_("retrieve current pending order of a user"), + description=_("retrieves a current pending order of an authenticated user"), + responses={ + status.HTTP_200_OK: OrderDetailSerializer(), + **BASE_ERRORS, + }, + ), "buy_unregistered": extend_schema( + tags=[ + "orders", + ], summary=_("purchase an order without account creation"), description=_("finalizes the order purchase for a non-registered user."), request=BuyUnregisteredOrderSerializer(), @@ -304,24 +414,36 @@ ORDER_SCHEMA = { }, ), "add_order_product": extend_schema( + tags=[ + "orders", + ], summary=_("add product to order"), description=_("adds a product to an order using the provided `product_uuid` and `attributes`."), request=AddOrderProductSerializer(), responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, ), "bulk_add_order_products": extend_schema( + tags=[ + "orders", + ], summary=_("add a list of products to order, quantities will not count"), description=_("adds a list of products to an order using the provided `product_uuid` and `attributes`."), request=BulkAddOrderProductsSerializer(), responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, ), "remove_order_product": extend_schema( + tags=[ + "orders", + ], summary=_("remove product from order"), description=_("removes a product from an order using the provided `product_uuid` and `attributes`."), request=RemoveOrderProductSerializer(), responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS}, ), "bulk_remove_order_products": extend_schema( + tags=[ + "orders", + ], summary=_("remove product from order, quantities will not count"), description=_("removes a list of products from an order using the provided `product_uuid` and `attributes`"), request=BulkRemoveOrderProductsSerializer(), @@ -331,50 +453,91 @@ ORDER_SCHEMA = { WISHLIST_SCHEMA = { "list": extend_schema( + tags=[ + "wishlists", + ], summary=_("list all wishlists (simple view)"), description=_("for non-staff users, only their own wishlists are returned."), responses={status.HTTP_200_OK: WishlistSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "wishlists", + ], summary=_("retrieve a single wishlist (detailed view)"), responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "wishlists", + ], summary=_("create an wishlist"), description=_("Doesn't work for non-staff users."), responses={status.HTTP_201_CREATED: WishlistDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "wishlists", + ], summary=_("delete an wishlist"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "wishlists", + ], summary=_("rewrite an existing wishlist saving non-editables"), responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "wishlists", + ], summary=_("rewrite some fields of an existing wishlist saving non-editables"), responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS}, ), + "current": extend_schema( + tags=[ + "wishlists", + ], + summary=_("retrieve current pending wishlist of a user"), + description=_("retrieves a current pending wishlist of an authenticated user"), + responses={ + status.HTTP_200_OK: WishlistDetailSerializer(), + **BASE_ERRORS, + }, + ), "add_wishlist_product": extend_schema( + tags=[ + "wishlists", + ], summary=_("add product to wishlist"), description=_("adds a product to an wishlist using the provided `product_uuid`"), request=AddWishlistProductSerializer(), responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS}, ), "remove_wishlist_product": extend_schema( + tags=[ + "wishlists", + ], summary=_("remove product from wishlist"), description=_("removes a product from an wishlist using the provided `product_uuid`"), request=RemoveWishlistProductSerializer(), responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS}, ), "bulk_add_wishlist_products": extend_schema( + tags=[ + "wishlists", + ], summary=_("add many products to wishlist"), description=_("adds many products to an wishlist using the provided `product_uuids`"), request=BulkAddWishlistProductSerializer(), responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS}, ), "bulk_remove_wishlist_products": extend_schema( + tags=[ + "wishlists", + ], summary=_("remove many products from wishlist"), description=_("removes many products from an wishlist using the provided `product_uuids`"), request=BulkRemoveWishlistProductSerializer(), @@ -399,6 +562,9 @@ ATTRIBUTES_DESC = _( PRODUCT_SCHEMA = { "list": extend_schema( + tags=[ + "products", + ], summary=_("list all products (simple view)"), description=_("list all products (simple view)"), parameters=[ @@ -426,6 +592,9 @@ PRODUCT_SCHEMA = { }, ), "retrieve": extend_schema( + tags=[ + "products", + ], summary=_("retrieve a single product (detailed view)"), description=_("retrieve a single product (detailed view)"), parameters=[ @@ -442,6 +611,9 @@ PRODUCT_SCHEMA = { }, ), "create": extend_schema( + tags=[ + "products", + ], summary=_("create a product"), description=_("create a product"), responses={ @@ -450,6 +622,9 @@ PRODUCT_SCHEMA = { }, ), "update": extend_schema( + tags=[ + "products", + ], summary=_("rewrite an existing product, preserving non-editable fields"), description=_("rewrite an existing product, preserving non-editable fields"), parameters=[ @@ -466,6 +641,9 @@ PRODUCT_SCHEMA = { }, ), "partial_update": extend_schema( + tags=[ + "products", + ], summary=_("update some fields of an existing product, preserving non-editable fields"), description=_("update some fields of an existing product, preserving non-editable fields"), parameters=[ @@ -482,6 +660,9 @@ PRODUCT_SCHEMA = { }, ), "destroy": extend_schema( + tags=[ + "products", + ], summary=_("delete a product"), description=_("delete a product"), parameters=[ @@ -498,6 +679,9 @@ PRODUCT_SCHEMA = { }, ), "feedbacks": extend_schema( + tags=[ + "products", + ], summary=_("lists all permitted feedbacks for a product"), description=_("lists all permitted feedbacks for a product"), parameters=[ @@ -514,6 +698,9 @@ PRODUCT_SCHEMA = { }, ), "seo_meta": extend_schema( + tags=[ + "products", + ], summary=_("SEO Meta snapshot"), description=_("returns a snapshot of the product's SEO meta data"), parameters=[ @@ -533,6 +720,9 @@ PRODUCT_SCHEMA = { ADDRESS_SCHEMA = { "list": extend_schema( + tags=[ + "addresses", + ], summary=_("list all addresses"), responses={ status.HTTP_200_OK: AddressSerializer(many=True), @@ -540,6 +730,9 @@ ADDRESS_SCHEMA = { }, ), "retrieve": extend_schema( + tags=[ + "addresses", + ], summary=_("retrieve a single address"), responses={ status.HTTP_200_OK: AddressSerializer(), @@ -547,6 +740,9 @@ ADDRESS_SCHEMA = { }, ), "create": extend_schema( + tags=[ + "addresses", + ], summary=_("create a new address"), request=AddressCreateSerializer(), responses={ @@ -555,6 +751,9 @@ ADDRESS_SCHEMA = { }, ), "destroy": extend_schema( + tags=[ + "addresses", + ], summary=_("delete an address"), responses={ status.HTTP_204_NO_CONTENT: {}, @@ -562,6 +761,9 @@ ADDRESS_SCHEMA = { }, ), "update": extend_schema( + tags=[ + "addresses", + ], summary=_("update an entire address"), request=AddressSerializer(), responses={ @@ -570,6 +772,9 @@ ADDRESS_SCHEMA = { }, ), "partial_update": extend_schema( + tags=[ + "addresses", + ], summary=_("partially update an address"), request=AddressSerializer(), responses={ @@ -578,6 +783,9 @@ ADDRESS_SCHEMA = { }, ), "autocomplete": extend_schema( + tags=[ + "addresses", + ], summary=_("autocomplete address suggestions"), parameters=[ OpenApiParameter( @@ -602,26 +810,44 @@ ADDRESS_SCHEMA = { FEEDBACK_SCHEMA = { "list": extend_schema( + tags=[ + "feedbacks", + ], summary=_("list all feedbacks (simple view)"), responses={status.HTTP_200_OK: FeedbackSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "feedbacks", + ], summary=_("retrieve a single feedback (detailed view)"), responses={status.HTTP_200_OK: FeedbackDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "feedbacks", + ], summary=_("create a feedback"), responses={status.HTTP_201_CREATED: FeedbackDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "feedbacks", + ], summary=_("delete a feedback"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "feedbacks", + ], summary=_("rewrite an existing feedback saving non-editables"), responses={status.HTTP_200_OK: FeedbackDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "feedbacks", + ], summary=_("rewrite some fields of an existing feedback saving non-editables"), responses={status.HTTP_200_OK: FeedbackDetailSerializer(), **BASE_ERRORS}, ), @@ -629,6 +855,9 @@ FEEDBACK_SCHEMA = { ORDER_PRODUCT_SCHEMA = { "list": extend_schema( + tags=[ + "orderProducts", + ], summary=_("list all order–product relations (simple view)"), responses={ status.HTTP_200_OK: OrderProductSimpleSerializer(many=True), @@ -636,6 +865,9 @@ ORDER_PRODUCT_SCHEMA = { }, ), "retrieve": extend_schema( + tags=[ + "orderProducts", + ], summary=_("retrieve a single order–product relation (detailed view)"), responses={ status.HTTP_200_OK: OrderProductDetailSerializer(), @@ -643,6 +875,9 @@ ORDER_PRODUCT_SCHEMA = { }, ), "create": extend_schema( + tags=[ + "orderProducts", + ], summary=_("create a new order–product relation"), responses={ status.HTTP_201_CREATED: OrderProductDetailSerializer(), @@ -650,6 +885,9 @@ ORDER_PRODUCT_SCHEMA = { }, ), "update": extend_schema( + tags=[ + "orderProducts", + ], summary=_("replace an existing order–product relation"), responses={ status.HTTP_200_OK: OrderProductDetailSerializer(), @@ -657,6 +895,9 @@ ORDER_PRODUCT_SCHEMA = { }, ), "partial_update": extend_schema( + tags=[ + "orderProducts", + ], summary=_("partially update an existing order–product relation"), responses={ status.HTTP_200_OK: OrderProductDetailSerializer(), @@ -664,6 +905,9 @@ ORDER_PRODUCT_SCHEMA = { }, ), "destroy": extend_schema( + tags=[ + "orderProducts", + ], summary=_("delete an order–product relation"), responses={ status.HTTP_204_NO_CONTENT: {}, @@ -671,6 +915,9 @@ ORDER_PRODUCT_SCHEMA = { }, ), "do_feedback": extend_schema( + tags=[ + "orderProducts", + ], summary=_("add or remove feedback on an order–product relation"), request=DoFeedbackSerializer, responses={ @@ -685,10 +932,16 @@ ORDER_PRODUCT_SCHEMA = { BRAND_SCHEMA = { "list": extend_schema( + tags=[ + "brands", + ], summary=_("list all brands (simple view)"), responses={status.HTTP_200_OK: BrandSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "brands", + ], summary=_("retrieve a single brand (detailed view)"), parameters=[ OpenApiParameter( @@ -701,23 +954,38 @@ BRAND_SCHEMA = { responses={status.HTTP_200_OK: BrandDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "brands", + ], summary=_("create a brand"), responses={status.HTTP_201_CREATED: BrandDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "brands", + ], summary=_("delete a brand"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "brands", + ], summary=_("rewrite an existing brand saving non-editables"), responses={status.HTTP_200_OK: BrandDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "brands", + ], summary=_("rewrite some fields of an existing brand saving non-editables"), responses={status.HTTP_200_OK: BrandDetailSerializer(), **BASE_ERRORS}, ), "seo_meta": extend_schema( - summary=_("SEO Meta snapshot for brand"), + tags=[ + "brands", + ], + summary=_("SEO Meta snapshot"), parameters=[ OpenApiParameter( name="lookup_value", @@ -732,26 +1000,44 @@ BRAND_SCHEMA = { VENDOR_SCHEMA = { "list": extend_schema( + tags=[ + "vendors", + ], summary=_("list all vendors (simple view)"), responses={status.HTTP_200_OK: VendorSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "vendors", + ], summary=_("retrieve a single vendor (detailed view)"), responses={status.HTTP_200_OK: VendorDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "vendors", + ], summary=_("create a vendor"), responses={status.HTTP_201_CREATED: VendorDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "vendors", + ], summary=_("delete a vendor"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "vendors", + ], summary=_("rewrite an existing vendor saving non-editables"), responses={status.HTTP_200_OK: VendorDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "vendors", + ], summary=_("rewrite some fields of an existing vendor saving non-editables"), responses={status.HTTP_200_OK: VendorDetailSerializer(), **BASE_ERRORS}, ), @@ -759,26 +1045,44 @@ VENDOR_SCHEMA = { PRODUCT_IMAGE_SCHEMA = { "list": extend_schema( + tags=[ + "productImages", + ], summary=_("list all product images (simple view)"), responses={status.HTTP_200_OK: ProductImageSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "productImages", + ], summary=_("retrieve a single product image (detailed view)"), responses={status.HTTP_200_OK: ProductImageDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "productImages", + ], summary=_("create a product image"), responses={status.HTTP_201_CREATED: ProductImageDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "productImages", + ], summary=_("delete a product image"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "productImages", + ], summary=_("rewrite an existing product image saving non-editables"), responses={status.HTTP_200_OK: ProductImageDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "productImages", + ], summary=_("rewrite some fields of an existing product image saving non-editables"), responses={status.HTTP_200_OK: ProductImageDetailSerializer(), **BASE_ERRORS}, ), @@ -786,26 +1090,44 @@ PRODUCT_IMAGE_SCHEMA = { PROMOCODE_SCHEMA = { "list": extend_schema( + tags=[ + "promocodes", + ], summary=_("list all promo codes (simple view)"), responses={status.HTTP_200_OK: PromoCodeSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "promocodes", + ], summary=_("retrieve a single promo code (detailed view)"), responses={status.HTTP_200_OK: PromoCodeDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "promocodes", + ], summary=_("create a promo code"), responses={status.HTTP_201_CREATED: PromoCodeDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "promocodes", + ], summary=_("delete a promo code"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "promocodes", + ], summary=_("rewrite an existing promo code saving non-editables"), responses={status.HTTP_200_OK: PromoCodeDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "promocodes", + ], summary=_("rewrite some fields of an existing promo code saving non-editables"), responses={status.HTTP_200_OK: PromoCodeDetailSerializer(), **BASE_ERRORS}, ), @@ -813,26 +1135,44 @@ PROMOCODE_SCHEMA = { PROMOTION_SCHEMA = { "list": extend_schema( + tags=[ + "promotions", + ], summary=_("list all promotions (simple view)"), responses={status.HTTP_200_OK: PromotionSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "promotions", + ], summary=_("retrieve a single promotion (detailed view)"), responses={status.HTTP_200_OK: PromotionDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "promotions", + ], summary=_("create a promotion"), responses={status.HTTP_201_CREATED: PromotionDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "promotions", + ], summary=_("delete a promotion"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "promotions", + ], summary=_("rewrite an existing promotion saving non-editables"), responses={status.HTTP_200_OK: PromotionDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "promotions", + ], summary=_("rewrite some fields of an existing promotion saving non-editables"), responses={status.HTTP_200_OK: PromotionDetailSerializer(), **BASE_ERRORS}, ), @@ -840,26 +1180,44 @@ PROMOTION_SCHEMA = { STOCK_SCHEMA = { "list": extend_schema( + tags=[ + "stocks", + ], summary=_("list all stocks (simple view)"), responses={status.HTTP_200_OK: StockSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "stocks", + ], summary=_("retrieve a single stock (detailed view)"), responses={status.HTTP_200_OK: StockDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "stocks", + ], summary=_("create a stock record"), responses={status.HTTP_201_CREATED: StockDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "stocks", + ], summary=_("delete a stock record"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "stocks", + ], summary=_("rewrite an existing stock record saving non-editables"), responses={status.HTTP_200_OK: StockDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "stocks", + ], summary=_("rewrite some fields of an existing stock record saving non-editables"), responses={status.HTTP_200_OK: StockDetailSerializer(), **BASE_ERRORS}, ), @@ -867,26 +1225,44 @@ STOCK_SCHEMA = { PRODUCT_TAG_SCHEMA = { "list": extend_schema( + tags=[ + "productTags", + ], summary=_("list all product tags (simple view)"), responses={status.HTTP_200_OK: ProductTagSimpleSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "productTags", + ], summary=_("retrieve a single product tag (detailed view)"), responses={status.HTTP_200_OK: ProductTagDetailSerializer(), **BASE_ERRORS}, ), "create": extend_schema( + tags=[ + "productTags", + ], summary=_("create a product tag"), responses={status.HTTP_201_CREATED: ProductTagDetailSerializer(), **BASE_ERRORS}, ), "destroy": extend_schema( + tags=[ + "productTags", + ], summary=_("delete a product tag"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "productTags", + ], summary=_("rewrite an existing product tag saving non-editables"), responses={status.HTTP_200_OK: ProductTagDetailSerializer(), **BASE_ERRORS}, ), "partial_update": extend_schema( + tags=[ + "productTags", + ], summary=_("rewrite some fields of an existing product tag saving non-editables"), responses={status.HTTP_200_OK: ProductTagDetailSerializer(), **BASE_ERRORS}, ), diff --git a/engine/core/locale/ar_AR/LC_MESSAGES/django.mo b/engine/core/locale/ar_AR/LC_MESSAGES/django.mo index d3ebb8527146c70d99acc71999ae23e0897555a6..2a03c4a806fd63d9029488cacccb47b713cb6d5c 100644 GIT binary patch delta 15144 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 delta 13816 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 GW&R6+3{x%u diff --git a/engine/core/locale/ar_AR/LC_MESSAGES/django.po b/engine/core/locale/ar_AR/LC_MESSAGES/django.po index 83c52864..84c3babf 100644 --- a/engine/core/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/core/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "نشط" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "إذا تم تعيينه على خطأ، لا يمكن للمستخدمين رؤية هذا الكائن دون الحاجة إلى إذن" @@ -153,7 +154,8 @@ msgstr "تم التسليم" msgid "canceled" msgstr "تم الإلغاء" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "فشل" @@ -181,44 +183,61 @@ msgstr "مومنتال" msgid "successful" msgstr "ناجح" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "مخطط OpenAPI بتنسيق محدد مع لغة محددة" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"مخطط OpenApi3 لواجهة برمجة التطبيقات هذه. يمكن تحديد التنسيق عبر التفاوض على" +" المحتوى. يمكن تحديد اللغة باستخدام معلمة قبول اللغة ومعلمة الاستعلام على حد" +" سواء." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "ذاكرة التخزين المؤقت للإدخال/الإخراج" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "تطبيق مفتاح فقط لقراءة البيانات المسموح بها من ذاكرة التخزين المؤقت.\n" -"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين " -"المؤقت." +"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين المؤقت." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "الحصول على معلمات التطبيق القابلة للكشف" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "إرسال رسالة إلى فريق الدعم" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "طلب عنوان URL مرتبط بـ CORSed. مسموح بـ https فقط." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "البحث بين المنتجات والفئات والعلامات التجارية" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "نقطة نهاية بحث عالمية للاستعلام عبر جداول المشروع" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "شراء طلب شراء كشركة" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -226,205 +245,212 @@ msgstr "" "اشترِ طلبًا كعمل تجاري، باستخدام \"المنتجات\" المتوفرة مع \"معرّف_المنتج\" " "و\"السمات\"." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "تنزيل أصل رقمي من طلب رقمي تم شراؤه" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "سرد كل مجموعات السمات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "استرداد مجموعة سمة واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "إنشاء مجموعة سمات" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "حذف مجموعة سمات" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "إنشاء سمة" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "حذف سمة" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "سرد جميع قيم السمات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "استرداد قيمة سمة واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "إنشاء قيمة السمة" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "حذف قيمة سمة" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "معرّف الفئة UUID أو سبيكة" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "إنشاء فئة" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "حذف فئة" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "لقطة تعريفية لتحسين محركات البحث SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "إرجاع لقطة من البيانات الوصفية لتحسين محركات البحث الخاصة بالفئة" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "قائمة بجميع الفئات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع الطلبات الخاصة بهم فقط." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "البحث في سلسلة فرعية غير حساسة لحالة الأحرف عبر human_readable_id و " "order_products.product.name و order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "تصفية الطلبات ذات وقت_الشراء >= تاريخ ووقت الشراء هذا ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "تصفية الطلبات ذات وقت_الشراء <= تاريخ ووقت الشراء ISO 8601 هذا" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "تصفية حسب الطلب الدقيق UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "التصفية حسب مُعرِّف الطلب المقروء بشريًا بالضبط" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "تصفية حسب البريد الإلكتروني للمستخدم (مطابقة تامة غير حساسة لحالة الأحرف)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "تصفية حسب معرّف المستخدم UUID" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "تصفية حسب حالة الطلب (مطابقة سلسلة فرعية غير حساسة لحالة الأحرف)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "الترتيب حسب واحد من: uuid، معرف_بشري_مقروء، بريد_إلكتروني_مستخدم، مستخدم، " "حالة، إنشاء، تعديل، وقت_الشراء، عشوائي. البادئة بحرف \"-\" للترتيب التنازلي " "(على سبيل المثال \"-وقت_الشراء\")." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "استرداد فئة واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "طلب معرّف UUID أو معرّف قابل للقراءة البشرية" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "إنشاء سمة" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "حذف سمة" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "إعادة كتابة فئة موجودة حفظ غير المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "إعادة كتابة بعض حقول فئة موجودة حفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "سعر الشراء وقت الطلب" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " @@ -433,51 +459,59 @@ msgstr "" "ينهي أمر الشراء. إذا تم استخدام \"فرض_الرصيد\"، يتم إكمال عملية الشراء " "باستخدام رصيد المستخدم؛ إذا تم استخدام \"فرض_الدفع\"، يتم بدء المعاملة." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "استرداد الطلب المعلق الحالي للمستخدم" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "استرداد الطلب الحالي المعلق لمستخدم مصادق عليه" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "شراء طلب شراء بدون إنشاء حساب" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "إنهاء طلب الشراء لمستخدم غير مسجل." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "إضافة منتج إلى الطلب" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "يضيف منتجًا إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "إضافة قائمة بالمنتجات المطلوب طلبها، لن يتم احتساب الكميات" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" " +"المتوفرة." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "إزالة منتج من الطلب" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "إزالة منتج من الطلب، لن يتم احتساب الكميات" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -485,187 +519,182 @@ msgstr "" "يزيل قائمة من المنتجات من الطلب باستخدام \"معرّف_المنتج\" و\"السمات\" " "المتوفرة." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع قوائم الرغبات الخاصة بهم فقط." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "إنشاء سمة" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "حذف سمة" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "استرداد قائمة الرغبات المعلقة الحالية للمستخدم" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "استرداد قائمة أمنيات حالية معلقة لمستخدم مصادق عليه" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "إضافة منتج إلى الطلب" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "يضيف منتجًا إلى قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "إزالة منتج من قائمة الرغبات" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "يزيل منتجًا من قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "إضافة العديد من المنتجات إلى قائمة الرغبات" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "يضيف العديد من المنتجات إلى قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "إزالة منتج من الطلب" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "تصفية حسب زوج واحد أو أكثر من أسماء/قيم السمات. \n" "- **صيغة**: `attr_name=الطريقة-القيمة[ ؛ attr2=الطريقة2-القيمة2]...`\n" -"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، " -"\"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ " -"ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، " -"\"lte\"، \"gt\"، \"gte\"، \"in\n" -"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/" -"المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم " -"التعامل معها كسلسلة. \n" -"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- " -"لتشفير القيمة الخام. \n" +"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، \"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، \"lte\"، \"gt\"، \"gte\"، \"in\n" +"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم التعامل معها كسلسلة. \n" +"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- لتشفير القيمة الخام. \n" "أمثلة: \n" -"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، " -"'fatures=in-[\"wifi\",\"bluetooth\"],\n" +"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، 'fatures=in-[\"wifi\",\"bluetooth\"],\n" "\"b64-description=icontains-aGVhdC1jb2xk" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(بالضبط) UUID المنتج" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" "قائمة مفصولة بفواصل من الحقول للفرز حسب. البادئة بـ \"-\" للفرز التنازلي. \n" "**مسموح بها:** uuid، تصنيف، اسم، سبيكة، إنشاء، تعديل، سعر، عشوائي" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "إنشاء منتج" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "حذف منتج" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "سرد جميع الملاحظات المسموح بها للمنتج" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "إرجاع لقطة من البيانات الوصفية لتحسين محركات البحث للمنتج" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "قائمة بجميع العناوين" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "استرجاع عنوان واحد" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "إنشاء عنوان جديد" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "حذف عنوان" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "تحديث عنوان كامل" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "تحديث جزئي للعنوان" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "إدخال عنوان الإكمال التلقائي" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "تطبيق docker compose exec تطبيق docker exec الشعر تشغيل إدارة python.py " @@ -674,236 +703,232 @@ 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "تحديد كمية النتائج، 1 < الحد < 10، الافتراضي: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "سرد جميع الملاحظات (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "استرداد تعليق واحد (عرض مفصل)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "إنشاء ملاحظات" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "حذف تعليق" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "إعادة كتابة ملاحظات حالية تحفظ المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "إعادة كتابة بعض حقول الملاحظات الحالية التي تحفظ غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "سرد جميع العلاقات بين الطلب والمنتج (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "استرداد علاقة طلب منتج واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "إنشاء علاقة جديدة بين الطلب والمنتج" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "استبدال علاقة الطلب-المنتج الحالية" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "تحديث جزئي لعلاقة الطلب والمنتج الحالية" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "حذف علاقة الطلب-المنتج" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "إضافة أو إزالة الملاحظات على العلاقة بين الطلب والمنتج" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "قائمة بجميع العلامات التجارية (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "استرداد علامة تجارية واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID أو سبيكة العلامة التجارية" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "إنشاء علامة تجارية" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "حذف علامة تجارية" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "إعادة كتابة علامة تجارية حالية توفر المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "إعادة كتابة بعض الحقول لعلامة تجارية موجودة حفظ غير قابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "لقطة تعريفية لتحسين محركات البحث للعلامة التجارية" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "قائمة بجميع البائعين (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "استرداد بائع واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "إنشاء بائع" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "حذف بائع" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "إعادة كتابة بائع موجود حفظ المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "إعادة كتابة بعض حقول البائع الحالي لحفظ المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "سرد جميع صور المنتج (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "استرداد صورة منتج واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "إنشاء صورة المنتج" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "حذف صورة المنتج" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "إعادة كتابة صورة منتج موجود حفظ غير قابل للتعديل" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "إعادة كتابة بعض حقول صورة منتج موجود حفظ غير قابل للتعديل" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "قائمة بجميع الرموز الترويجية (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "استرداد رمز ترويجي واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "إنشاء رمز ترويجي" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "حذف الرمز الترويجي" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "إعادة كتابة الرمز الترويجي الحالي الذي يوفر غير القابل للتعديل" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "إعادة كتابة بعض حقول الرمز الترويجي الحالي مع حفظ غير القابل للتعديل" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "قائمة بجميع العروض الترويجية (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "استرداد ترقية واحدة (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "إنشاء عرض ترويجي" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "حذف ترقية" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "إعادة كتابة عرض ترويجي حالي يوفر المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "إعادة كتابة بعض الحقول في ترقية حالية مع حفظ غير المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "قائمة بجميع الأسهم (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "استرداد مخزون واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "إنشاء سجل مخزون" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "حذف سجل مخزون" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "إعادة كتابة سجل مخزون موجود يحفظ المواد غير القابلة للتعديل" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "إعادة كتابة بعض حقول السجل الحالي للمخزون مع حفظ غير القابل للتعديل" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "سرد جميع علامات المنتج (عرض بسيط)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "استرداد علامة منتج واحد (عرض تفصيلي)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "إنشاء علامة منتج" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "حذف علامة منتج" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "إعادة كتابة علامة منتج موجود حفظ غير قابل للتعديل" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "إعادة كتابة بعض حقول علامة منتج موجود حفظ غير قابل للتعديل" @@ -1056,7 +1081,7 @@ msgstr "البيانات المخزنة مؤقتاً" msgid "camelized JSON data from the requested URL" msgstr "بيانات JSON مجمّلة من عنوان URL المطلوب" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://" @@ -1140,8 +1165,8 @@ msgstr "شراء طلبية" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "الرجاء إرسال السمات كسلسلة منسقة مثل attr1=قيمة1، attr2=قيمة2" #: engine/core/graphene/mutations.py:550 @@ -1216,7 +1241,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." @@ -1428,8 +1454,8 @@ msgstr "رقم هاتف الشركة" #: engine/core/graphene/object_types.py:681 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم " -"المضيف" +"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" +" المضيف" #: engine/core/graphene/object_types.py:682 msgid "email host user" @@ -1523,8 +1549,8 @@ msgstr "" "تفاعلهم. يتم استخدام فئة البائع لتعريف وإدارة المعلومات المتعلقة ببائع " "خارجي. وهو يخزن اسم البائع، وتفاصيل المصادقة المطلوبة للاتصال، والنسبة " "المئوية للترميز المطبقة على المنتجات المسترجعة من البائع. يحتفظ هذا النموذج " -"أيضًا ببيانات وصفية وقيود إضافية، مما يجعله مناسبًا للاستخدام في الأنظمة التي " -"تتفاعل مع البائعين الخارجيين." +"أيضًا ببيانات وصفية وقيود إضافية، مما يجعله مناسبًا للاستخدام في الأنظمة " +"التي تتفاعل مع البائعين الخارجيين." #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" @@ -1577,9 +1603,9 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "يمثل علامة منتج تُستخدم لتصنيف المنتجات أو تعريفها. صُممت فئة ProductTag " -"لتعريف المنتجات وتصنيفها بشكل فريد من خلال مزيج من معرّف علامة داخلي واسم عرض " -"سهل الاستخدام. وهي تدعم العمليات التي يتم تصديرها من خلال mixins وتوفر تخصيص " -"البيانات الوصفية لأغراض إدارية." +"لتعريف المنتجات وتصنيفها بشكل فريد من خلال مزيج من معرّف علامة داخلي واسم " +"عرض سهل الاستخدام. وهي تدعم العمليات التي يتم تصديرها من خلال mixins وتوفر " +"تخصيص البيانات الوصفية لأغراض إدارية." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1607,8 +1633,8 @@ msgid "" "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"يمثل علامة فئة تستخدم للمنتجات. تمثل هذه الفئة علامة فئة يمكن استخدامها لربط " -"المنتجات وتصنيفها. وهي تتضمن سمات لمعرف علامة داخلي واسم عرض سهل الاستخدام." +"يمثل علامة فئة تستخدم للمنتجات. تمثل هذه الفئة علامة فئة يمكن استخدامها لربط" +" المنتجات وتصنيفها. وهي تتضمن سمات لمعرف علامة داخلي واسم عرض سهل الاستخدام." #: engine/core/models.py:254 msgid "category tag" @@ -1634,9 +1660,9 @@ msgstr "" "علاقات هرمية مع فئات أخرى، مما يدعم العلاقات بين الأصل والطفل. تتضمن الفئة " "حقول للبيانات الوصفية والتمثيل المرئي، والتي تعمل كأساس للميزات المتعلقة " "بالفئات. تُستخدم هذه الفئة عادةً لتعريف وإدارة فئات المنتجات أو غيرها من " -"التجميعات المماثلة داخل التطبيق، مما يسمح للمستخدمين أو المسؤولين بتحديد اسم " -"الفئات ووصفها وتسلسلها الهرمي، بالإضافة إلى تعيين سمات مثل الصور أو العلامات " -"أو الأولوية." +"التجميعات المماثلة داخل التطبيق، مما يسمح للمستخدمين أو المسؤولين بتحديد اسم" +" الفئات ووصفها وتسلسلها الهرمي، بالإضافة إلى تعيين سمات مثل الصور أو " +"العلامات أو الأولوية." #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1687,7 +1713,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "يمثل كائن العلامة التجارية في النظام. تتعامل هذه الفئة مع المعلومات والسمات " "المتعلقة بالعلامة التجارية، بما في ذلك اسمها وشعاراتها ووصفها والفئات " @@ -1736,8 +1763,8 @@ msgstr "الفئات" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1827,10 +1854,10 @@ msgid "" msgstr "" "يمثل منتجًا بخصائص مثل الفئة والعلامة التجارية والعلامات والحالة الرقمية " "والاسم والوصف ورقم الجزء والعلامة التجارية والحالة الرقمية والاسم والوصف " -"ورقم الجزء والسبيكة. يوفر خصائص الأداة المساعدة ذات الصلة لاسترداد التقييمات " -"وعدد الملاحظات والسعر والكمية وإجمالي الطلبات. مصمم للاستخدام في نظام يتعامل " -"مع التجارة الإلكترونية أو إدارة المخزون. تتفاعل هذه الفئة مع النماذج ذات " -"الصلة (مثل الفئة والعلامة التجارية وعلامة المنتج) وتدير التخزين المؤقت " +"ورقم الجزء والسبيكة. يوفر خصائص الأداة المساعدة ذات الصلة لاسترداد التقييمات" +" وعدد الملاحظات والسعر والكمية وإجمالي الطلبات. مصمم للاستخدام في نظام " +"يتعامل مع التجارة الإلكترونية أو إدارة المخزون. تتفاعل هذه الفئة مع النماذج " +"ذات الصلة (مثل الفئة والعلامة التجارية وعلامة المنتج) وتدير التخزين المؤقت " "للخصائص التي يتم الوصول إليها بشكل متكرر لتحسين الأداء. يتم استخدامه لتعريف " "ومعالجة بيانات المنتج والمعلومات المرتبطة به داخل التطبيق." @@ -1887,8 +1914,8 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "يمثل سمة في النظام. تُستخدم هذه الفئة لتعريف السمات وإدارتها، وهي عبارة عن " @@ -1956,9 +1983,9 @@ msgstr "السمة" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "يمثل قيمة محددة لسمة مرتبطة بمنتج ما. يربط \"السمة\" بـ \"قيمة\" فريدة، مما " "يسمح بتنظيم أفضل وتمثيل ديناميكي لخصائص المنتج." @@ -1978,8 +2005,8 @@ msgstr "القيمة المحددة لهذه السمة" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2025,13 +2052,14 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"يمثل حملة ترويجية للمنتجات ذات الخصم. تُستخدم هذه الفئة لتعريف وإدارة الحملات " -"الترويجية التي تقدم خصمًا على أساس النسبة المئوية للمنتجات. تتضمن الفئة سمات " -"لتعيين معدل الخصم وتوفير تفاصيل حول العرض الترويجي وربطه بالمنتجات القابلة " -"للتطبيق. تتكامل مع كتالوج المنتجات لتحديد العناصر المتأثرة في الحملة." +"يمثل حملة ترويجية للمنتجات ذات الخصم. تُستخدم هذه الفئة لتعريف وإدارة " +"الحملات الترويجية التي تقدم خصمًا على أساس النسبة المئوية للمنتجات. تتضمن " +"الفئة سمات لتعيين معدل الخصم وتوفير تفاصيل حول العرض الترويجي وربطه " +"بالمنتجات القابلة للتطبيق. تتكامل مع كتالوج المنتجات لتحديد العناصر المتأثرة" +" في الحملة." #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2072,8 +2100,8 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"يمثل قائمة أمنيات المستخدم لتخزين وإدارة المنتجات المطلوبة. توفر الفئة وظائف " -"لإدارة مجموعة من المنتجات، وتدعم عمليات مثل إضافة المنتجات وإزالتها، " +"يمثل قائمة أمنيات المستخدم لتخزين وإدارة المنتجات المطلوبة. توفر الفئة وظائف" +" لإدارة مجموعة من المنتجات، وتدعم عمليات مثل إضافة المنتجات وإزالتها، " "بالإضافة إلى دعم عمليات إضافة وإزالة منتجات متعددة في وقت واحد." #: engine/core/models.py:926 @@ -2098,11 +2126,11 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"يمثل سجل وثائقي مرتبط بمنتج ما. تُستخدم هذه الفئة لتخزين معلومات حول الأفلام " -"الوثائقية المرتبطة بمنتجات محددة، بما في ذلك تحميلات الملفات وبياناتها " +"يمثل سجل وثائقي مرتبط بمنتج ما. تُستخدم هذه الفئة لتخزين معلومات حول الأفلام" +" الوثائقية المرتبطة بمنتجات محددة، بما في ذلك تحميلات الملفات وبياناتها " "الوصفية. يحتوي على أساليب وخصائص للتعامل مع نوع الملف ومسار التخزين للملفات " "الوثائقية. وهو يوسع الوظائف من مزيج معين ويوفر ميزات مخصصة إضافية." @@ -2120,19 +2148,19 @@ msgstr "لم يتم حلها" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "يمثل كيان عنوان يتضمن تفاصيل الموقع والارتباطات مع المستخدم. يوفر وظائف " "لتخزين البيانات الجغرافية وبيانات العنوان، بالإضافة إلى التكامل مع خدمات " -"الترميز الجغرافي. صُممت هذه الفئة لتخزين معلومات العنوان التفصيلية بما في ذلك " -"مكونات مثل الشارع والمدينة والمنطقة والبلد والموقع الجغرافي (خطوط الطول " +"الترميز الجغرافي. صُممت هذه الفئة لتخزين معلومات العنوان التفصيلية بما في " +"ذلك مكونات مثل الشارع والمدينة والمنطقة والبلد والموقع الجغرافي (خطوط الطول " "والعرض). وهو يدعم التكامل مع واجهات برمجة التطبيقات للترميز الجغرافي، مما " "يتيح تخزين استجابات واجهة برمجة التطبيقات الخام لمزيد من المعالجة أو الفحص. " "تسمح الفئة أيضًا بربط عنوان مع مستخدم، مما يسهل التعامل مع البيانات الشخصية." @@ -2198,9 +2226,9 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"يمثل الرمز الترويجي الذي يمكن استخدامه للحصول على خصومات وإدارة صلاحيته ونوع " -"الخصم والتطبيق. تقوم فئة PromoCode بتخزين تفاصيل حول الرمز الترويجي، بما في " -"ذلك معرفه الفريد، وخصائص الخصم (المبلغ أو النسبة المئوية)، وفترة الصلاحية، " +"يمثل الرمز الترويجي الذي يمكن استخدامه للحصول على خصومات وإدارة صلاحيته ونوع" +" الخصم والتطبيق. تقوم فئة PromoCode بتخزين تفاصيل حول الرمز الترويجي، بما في" +" ذلك معرفه الفريد، وخصائص الخصم (المبلغ أو النسبة المئوية)، وفترة الصلاحية، " "والمستخدم المرتبط به (إن وجد)، وحالة استخدامه. ويتضمن وظيفة للتحقق من صحة " "الرمز الترويجي وتطبيقه على الطلب مع ضمان استيفاء القيود." @@ -2246,7 +2274,8 @@ msgstr "وقت بدء الصلاحية" #: engine/core/models.py:1120 msgid "timestamp when the promocode was used, blank if not used yet" -msgstr "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" +msgstr "" +"الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" #: engine/core/models.py:1121 msgid "usage timestamp" @@ -2273,8 +2302,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين " -"أو لا هذا ولا ذاك." +"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" +" أو لا هذا ولا ذاك." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2289,8 +2318,8 @@ msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2433,8 +2462,8 @@ msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد " -"الإلكتروني للعميل، رقم هاتف العميل" +"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" +" الإلكتروني للعميل، رقم هاتف العميل" #: engine/core/models.py:1584 #, python-brace-format @@ -2465,7 +2494,8 @@ msgid "feedback comments" msgstr "تعليقات على الملاحظات" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" #: engine/core/models.py:1720 @@ -2495,9 +2525,9 @@ msgstr "" "يمثل المنتجات المرتبطة بالطلبات وسماتها. يحتفظ نموذج OrderProduct بمعلومات " "حول المنتج الذي هو جزء من الطلب، بما في ذلك تفاصيل مثل سعر الشراء والكمية " "وسمات المنتج وحالته. يدير الإشعارات للمستخدم والمسؤولين ويتعامل مع عمليات " -"مثل إرجاع رصيد المنتج أو إضافة ملاحظات. يوفر هذا النموذج أيضًا أساليب وخصائص " -"تدعم منطق العمل، مثل حساب السعر الإجمالي أو إنشاء عنوان URL للتنزيل للمنتجات " -"الرقمية. يتكامل النموذج مع نموذجي الطلب والمنتج ويخزن مرجعًا لهما." +"مثل إرجاع رصيد المنتج أو إضافة ملاحظات. يوفر هذا النموذج أيضًا أساليب وخصائص" +" تدعم منطق العمل، مثل حساب السعر الإجمالي أو إنشاء عنوان URL للتنزيل " +"للمنتجات الرقمية. يتكامل النموذج مع نموذجي الطلب والمنتج ويخزن مرجعًا لهما." #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2605,15 +2635,15 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "يمثل وظيفة التنزيل للأصول الرقمية المرتبطة بالطلبات. توفر فئة " "DigitalAssetDownload القدرة على إدارة التنزيلات المتعلقة بمنتجات الطلبات " "والوصول إليها. وتحتفظ بمعلومات حول منتج الطلب المرتبط، وعدد التنزيلات، وما " -"إذا كان الأصل مرئيًا للعامة. وتتضمن طريقة لإنشاء عنوان URL لتنزيل الأصل عندما " -"يكون الطلب المرتبط في حالة مكتملة." +"إذا كان الأصل مرئيًا للعامة. وتتضمن طريقة لإنشاء عنوان URL لتنزيل الأصل " +"عندما يكون الطلب المرتبط في حالة مكتملة." #: engine/core/models.py:1961 msgid "download" @@ -2669,12 +2699,11 @@ msgstr "مرحباً %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل. " -"فيما يلي تفاصيل طلبك:" +"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل." +" فيما يلي تفاصيل طلبك:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2781,8 +2810,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "شكرًا لك على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" @@ -2852,7 +2880,7 @@ msgstr "يجب تكوين معلمة NOMINATIM_URL!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "يجب ألا تتجاوز أبعاد الصورة w{max_width} x h{max_height} بكسل!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2860,7 +2888,7 @@ msgstr "" "يتعامل مع طلب فهرس خريطة الموقع ويعيد استجابة XML. يضمن أن تتضمن الاستجابة " "رأس نوع المحتوى المناسب ل XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2869,16 +2897,16 @@ msgstr "" "يعالج استجابة العرض التفصيلي لخريطة الموقع. تقوم هذه الدالة بمعالجة الطلب، " "وجلب استجابة تفاصيل خريطة الموقع المناسبة، وتعيين رأس نوع المحتوى ل XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "إرجاع قائمة باللغات المدعومة والمعلومات الخاصة بها." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "إرجاع معلمات الموقع الإلكتروني ككائن JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2886,11 +2914,11 @@ msgstr "" "يعالج عمليات ذاكرة التخزين المؤقت مثل قراءة بيانات ذاكرة التخزين المؤقت " "وتعيينها بمفتاح ومهلة محددة." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "يتعامل مع عمليات إرسال نموذج \"اتصل بنا\"." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2898,69 +2926,65 @@ msgstr "" "يعالج طلبات معالجة عناوين URL والتحقق من صحة عناوين URL من طلبات POST " "الواردة." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "يتعامل مع استعلامات البحث العامة." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "يتعامل بمنطق الشراء كشركة تجارية دون تسجيل." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "يتعامل مع تنزيل الأصل الرقمي المرتبط بأمر ما.\n" -"تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص " -"بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن " -"المورد غير متوفر." +"تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "الطلب_برو_منتج_uuid مطلوب" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "طلب المنتج غير موجود" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "يجب دفع الطلب قبل تنزيل الأصل الرقمي" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "لا يحتوي منتج الطلب على منتج" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "يتعامل مع طلبات الرمز المفضل لموقع ويب.\n" -"تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. " -"إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى " -"أن المورد غير متوفر." - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"يعيد توجيه الطلب إلى صفحة فهرس المشرف. تعالج الدالة طلبات HTTP الواردة وتعيد " -"توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في " -"Django للتعامل مع إعادة توجيه HTTP." +"تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر." #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"يعيد توجيه الطلب إلى صفحة فهرس المشرف. تعالج الدالة طلبات HTTP الواردة وتعيد" +" توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في " +"Django للتعامل مع إعادة توجيه HTTP." + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "إرجاع الإصدار الحالي من eVibes." @@ -2972,22 +2996,23 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب Evibes. يرث صنف EvibesViewSet " -"من ModelViewSet ويوفر وظائف للتعامل مع الإجراءات والعمليات على كيانات " -"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء الحالي، " -"والأذونات القابلة للتخصيص، وتنسيقات العرض." +"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب Evibes. يرث صنف EvibesViewSet" +" من ModelViewSet ويوفر وظائف للتعامل مع الإجراءات والعمليات على كيانات " +"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء " +"الحالي، والأذونات القابلة للتخصيص، وتنسيقات العرض." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "يمثل مجموعة طرق عرض لإدارة كائنات AttributeGroup. يتعامل مع العمليات " "المتعلقة ب AttributeGroup، بما في ذلك التصفية والتسلسل واسترجاع البيانات. " -"تعد هذه الفئة جزءًا من طبقة واجهة برمجة التطبيقات الخاصة بالتطبيق وتوفر طريقة " -"موحدة لمعالجة الطلبات والاستجابات لبيانات AttributeGroup." +"تعد هذه الفئة جزءًا من طبقة واجهة برمجة التطبيقات الخاصة بالتطبيق وتوفر " +"طريقة موحدة لمعالجة الطلبات والاستجابات لبيانات AttributeGroup." #: engine/core/viewsets.py:176 msgid "" @@ -3009,13 +3034,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"مجموعة طرق عرض لإدارة كائنات AttributeValue. توفر مجموعة طرق العرض هذه وظائف " -"لإدراج كائنات AttributeValue واسترجاعها وإنشائها وتحديثها وحذفها. وهي تتكامل " -"مع آليات مجموعة طرق عرض Django REST Framework وتستخدم المتسلسلات المناسبة " -"للإجراءات المختلفة. يتم توفير إمكانيات التصفية من خلال DjangoFilterBackend." +"مجموعة طرق عرض لإدارة كائنات AttributeValue. توفر مجموعة طرق العرض هذه وظائف" +" لإدراج كائنات AttributeValue واسترجاعها وإنشائها وتحديثها وحذفها. وهي " +"تتكامل مع آليات مجموعة طرق عرض Django REST Framework وتستخدم المتسلسلات " +"المناسبة للإجراءات المختلفة. يتم توفير إمكانيات التصفية من خلال " +"DjangoFilterBackend." #: engine/core/viewsets.py:214 msgid "" @@ -3026,8 +3052,8 @@ msgid "" "can access specific data." msgstr "" "يدير طرق العرض للعمليات المتعلقة بالفئة. فئة CategoryViewSet مسؤولة عن " -"التعامل مع العمليات المتعلقة بنموذج الفئة في النظام. وهي تدعم استرجاع بيانات " -"الفئة وتصفيتها وتسلسلها. تفرض مجموعة طرق العرض أيضًا الأذونات لضمان وصول " +"التعامل مع العمليات المتعلقة بنموذج الفئة في النظام. وهي تدعم استرجاع بيانات" +" الفئة وتصفيتها وتسلسلها. تفرض مجموعة طرق العرض أيضًا الأذونات لضمان وصول " "المستخدمين المصرح لهم فقط إلى بيانات محددة." #: engine/core/viewsets.py:326 @@ -3067,34 +3093,35 @@ msgid "" "Vendor-related resources through the Django REST framework." msgstr "" "يمثل مجموعة طرق عرض لإدارة كائنات المورد. تسمح مجموعة العرض هذه بجلب بيانات " -"البائع وتصفيتها وتسلسلها. وهي تُعرِّف مجموعة الاستعلام، وتكوينات التصفية، وفئات " -"أداة التسلسل المستخدمة للتعامل مع الإجراءات المختلفة. الغرض من هذه الفئة هو " -"توفير وصول مبسط إلى الموارد المتعلقة بالمورد من خلال إطار عمل Django REST." +"البائع وتصفيتها وتسلسلها. وهي تُعرِّف مجموعة الاستعلام، وتكوينات التصفية، " +"وفئات أداة التسلسل المستخدمة للتعامل مع الإجراءات المختلفة. الغرض من هذه " +"الفئة هو توفير وصول مبسط إلى الموارد المتعلقة بالمورد من خلال إطار عمل " +"Django REST." #: engine/core/viewsets.py:588 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "تمثيل مجموعة عرض تتعامل مع كائنات الملاحظات. تدير هذه الفئة العمليات " "المتعلقة بكائنات الملاحظات، بما في ذلك الإدراج والتصفية واسترجاع التفاصيل. " "الغرض من مجموعة العرض هذه هو توفير متسلسلات مختلفة لإجراءات مختلفة وتنفيذ " -"معالجة قائمة على الأذونات لكائنات الملاحظات التي يمكن الوصول إليها. وهي توسع " -"\"مجموعة عرض الملاحظات\" الأساسية وتستفيد من نظام تصفية Django للاستعلام عن " -"البيانات." +"معالجة قائمة على الأذونات لكائنات الملاحظات التي يمكن الوصول إليها. وهي توسع" +" \"مجموعة عرض الملاحظات\" الأساسية وتستفيد من نظام تصفية Django للاستعلام عن" +" البيانات." #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet لإدارة الطلبات والعمليات ذات الصلة. توفر هذه الفئة وظائف لاسترداد " @@ -3108,8 +3135,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "يوفر مجموعة طرق عرض لإدارة كيانات OrderProduct. تتيح مجموعة طرق العرض هذه " @@ -3141,15 +3168,15 @@ msgstr "يتعامل مع العمليات المتعلقة ببيانات ال msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"ViewSet لإدارة عمليات قائمة الرغبات. توفر مجموعة طرق عرض قائمة الأمنيات نقاط " -"نهاية للتفاعل مع قائمة أمنيات المستخدم، مما يسمح باسترجاع المنتجات وتعديلها " -"وتخصيصها ضمن قائمة الأمنيات. تسهل مجموعة العرض هذه وظائف مثل الإضافة " +"ViewSet لإدارة عمليات قائمة الرغبات. توفر مجموعة طرق عرض قائمة الأمنيات نقاط" +" نهاية للتفاعل مع قائمة أمنيات المستخدم، مما يسمح باسترجاع المنتجات وتعديلها" +" وتخصيصها ضمن قائمة الأمنيات. تسهل مجموعة العرض هذه وظائف مثل الإضافة " "والإزالة والإجراءات المجمعة لمنتجات قائمة الرغبات. يتم دمج عمليات التحقق من " "الأذونات للتأكد من أن المستخدمين يمكنهم فقط إدارة قوائم الرغبات الخاصة بهم " "ما لم يتم منح أذونات صريحة." @@ -3184,4 +3211,3 @@ msgstr "" "استرجاع وتصفية وتسلسل كائنات وسم المنتج. وهي تدعم التصفية المرنة على سمات " "محددة باستخدام الواجهة الخلفية للتصفية المحددة وتستخدم ديناميكيًا متسلسلات " "مختلفة بناءً على الإجراء الذي يتم تنفيذه." - diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo b/engine/core/locale/cs_CZ/LC_MESSAGES/django.mo index 53028e89120a9f548fbf818d0f4b48bd74b9b536..7ae4178063096e2922946090fec96fc5fb9a9aaa 100644 GIT binary patch delta 15006 zcmZ|V2Y6J)-pBE?bVCmiN(d}1v=9go2sH`4LzF6YlPpOH$%bSTiozlws1%VZ#eyJQ zR4gFH7D0-NfPx4J7WAqJ*k~eG)c5<_nOybW`<~~SeC9th=bSk+b7nVz-*=b%XD}T@1m-SOZ&Q zP3(^)(Tky&iCos1g(Ywf&T^c9vw(~)P%6%GDq&@;hV^j;#$hQuifVTf6X?k2SdZA< zk(*;Ttc8ASPgx-V$Jac+{)6SnB;IFZ;5J(z)Y@I9Q#4KLw9 zOiyqe`t0mVbetjh1OANh-5lp7Y}eg!%F^yzj3>U{!#qgap61El#mbZ)!y4S*IZq}G zZ{ZzSsh4@uT3DU95thU*SOdEw_jJbKo80Je98Ns0kK>FW-ih6@d_Qx&r2fXySdVsI z)D$eh0Hf$EBC`??VqF|Pz;V{$Jy;5>4|JSzSO+yy&2b1fNIYx#E*I%=WgPK6CI~7*ZU@o2PAGa$#n2g zrsL#Lo|DD+@227l9}5Q8OmQ4W&8eGb7S$xwTrWe-*6E)>O2lCAcLdU+}fl=2^^J5E!Km|+%c zZ;T<%##Z0E^vY&Wpq-;vuN|z)V~5GTf7&Hm6A!-$hmYbYHfFdtd$0cSax5fnUztRLqF#$%6JB%FuZ zK;FgX_z70QGE7|stc|K~j`ZE>ijDA9)LU~N%i}j#4X>lxhs@TL5=4;EYu6HkJxBGp zFKR=YfO^6ysQL#{Gtpl*B%H3DVk8Ec{1N1^6C5j8bws41Lg>mNo<$tG0C_n_|k z-aN)%J^8{mxPmo_OWtp+i>mK{IlCC-S{S|#~}+$huo+OwL-P)hU)lmYYwX84`F>=i@MGm zs5S5bYN`Wg$#f(0HMYhk516SKjj_b(s2e37MXZN6unbmz z&|JrjF~q}B9e4ogSio6ECV_&Ts2=}}da_avnN?i_71u>wFvi9m@ebkv*c69jdz_6= z;~rG|aSP4JrD0p*nOG9HW1QaqJ!Cpja0S)F7K_XrkH;p&X{aY!ijlY-b)%0_`$FZ# zW@wwDrmi!(F$uLF1XfsX z;wW?z4?>muuoW)GMp%dq@GGo~WmcF~-vo8N{;2b^P#sx_ZhU41b9V+vkUb)zlM6!6Icbm#u|7FHBzC0Ri?s?r6_2N z(bx&~-cG_%xER~v1=MPYHP`WGU}w|~mta*~iyEmH zQ2WA8EUovykc@702sKn^Q6uuLEx(C+g0kz)lh;7iH$~kb4pra7)+eEEkc>4k)0W?l z)rnW3*4*=0PVfI&G9h>YtKn7Dh08oPfR^{HPAzgX-`jSQpnl$@pu|UZX&MhI*e}8%*37HH7_8bDoOo&>GYT?84Ew z5AVW=r_5TIf_+twTBOcKGXgD8Yhe&-s#7)w%nhbcpgCEHF}T}$5w$UeZ!#m&-I|Rm zUxOWSA2!9?*b*b3Hj8yQssr;-*MA9h-lwRkC>hvnE*y<27=>y$2X*1+u?t?r*4TK9 z>EPX{p&Y^(Y78;@-$Sckgc`>5Bl*fZvd z;!q=#j=ga$CgPViZuqR}=wwWw{2A+ITOReCtuAH_S?+dO~MK6^s*VLyRjMZ zY>dEXQTKTl1My_8kkMSn>@*in!-m8wurt1bdh(x9L+ILNHmK65*Ru*Xz!n&eNmvfE zP&b@`8retj4txi-cu(wN{B_~7yUh+4hJA@!qMm#@YOXh;p5R^76JJLSZTKGZaoZd< zGOaKa$Dukh1@$0{QRi((t*wty4^rb5#$O$%^NN|{rdWfx6_&-mSPh4v+GS!LEWmoW z67^)eu{2)5nfN1WuCrb>?bc%t;zHCKDgK&SoaF*!w0gs_3U);e(VeI#8iSqiA=F!P z2(>uNyl$qdKWb#Ap+;;Yw#B2UeWTbL=E)OKYb*_0<7L#81?m)<3wA?Q+>iZn54OV+ zZ<-r*Lft4GwRo1JZupul{~9BREA3^QcJcJ6kzBry-*kzeL%n77_M53|f{aAKi6f&S zPDGtB0yUI5SQDpVaa?9yh3kpeqDHFy0W;@`sPl&+eQ~l-Q`q95c|ALz{?^nF^F*2yJ{HMDQBdw}76o_efN8|>ht1S%K@ag^?1EA6ncwLqVI$&AsGadJ-h;PMQ#b7h z)4>fl<8a;hm{|iG-sgjd`fspAKouXD9uGdw;v%ki!dx)=Lp~~LH~~xGRn!`}i4C#r zNi%Y-uq<&e)Q)#2s@{WIZ1YiT>|u<@?Rb{^T*bh63XYyKJ#BHCFOpOoKVycr?^!c+ zccIosDryc_V+VX3H{co6T9|Q;b8!=@UBM@2tDT9F#0zl(*WZpI#8p0H{7X?#=QGFo z2^)RRryhoV!ERNIjpR!%M10~aPR5VF=0gO%7tG)Hp8eMR*{;+j{yk6WD{B(P`q${`;e}rwh-tSlm+wc@DEvE-+iuz!C z91$QBOXgwJ93QkEM$O&(n2cvoe{$_q+7!&KK_EeF}$LQ zQ>^n*H`n|1932J zMqTG;9E6=i&3OwkhIl<{KRIU0zs0J0|8J35MMZ@wuHe_@r%_XJ3d8UmYNNS|+Nf^Z z^3bZT;6~LH)$thA2GrfgV^Hn0QEOnHEnkV6vMs1TVmiCY=)}FK9)64(x@*`3>sNCH zHTN_sjGi#*=mZ!W0R=`fE2kVCco#-JGiW%4d@3rxh zs1tXfI<^mM<2lrj{(@RF&8nLbYJ=)f7aJ#`o^&+o`kA(T7HUKusO|~`hi(l8I`LU- zhHqj?yo8$TpHNe96V=XD!xh}|s-fa~SQlea?T4YxA7ks2QBzTX8tFyWr)#kPYUe7X zpelZg`V{*O^`zl7&7zA#-Ds4Jvrz4qST~~1+k-mqlr6tzEmMovlJW@DPTBMf7Hmbmm!~lS!@|vtMxf?wGU^HDqMm3y*1_$l4jf0losS|scDCdV8H2YE0VAs6<*X_ugC7V8T;WS)MARQYdY2whY)9=8(&2&(sQUqdjr+c z;%?J{n${-P_Sj1Ae=joX@l<>XccJDgy`JfD9_k4fpnCo)j>5e-7HicvTkJH{+w>f2 zZ+{sZ;diLlIkbVx8H$Nm9amu$z5maX(FXDsYAu{ZJ;`-7zzPjr!7mK;aRl*v>u0Ff zuU#W^emrU?OhTQv0ad>fH8q78i^nk@OGonlYp8mY(a;V<4Vf2v<2|SiXg}%+zC-mq zoPWIQi*2wE&P06yIfQzU6R5@d6?Vp7QLlAe6PNxV?xdhz(@RZw|J9=_6zBqto0_?8 zgX-7_)a&HMPB;hkWQC|9K4A@MX14BbsE+2LHmIj;eA33no0~-&iyf$+);wS?w4H)h z6kI~}IGlgJ)D1_X-qRJR`nRmtP>Z!;3-ehq8nquxKuuvjYUo$m_;I|8xX_k|Mw|NZ z02vKgL)4J8Lk(RQ)CGsyI0Lo!&qgiIZK$c(gF5d6)DxXXjZEd1E@v9{MU}sWZSXc~ zgj%&SBOVw}MjJ&Y>c;a>L%a^PN56o2qP?ggJ&)>0XpCKSsCG%HoirJP`w435o<&XV zJE-fQM0MaYvfl)pTCL5Zi^HB&3_?Bm3hP$XS|~(yiic275FTs3sdPkr9~g_8(`3|po{1GO4>g5z zP_Nkv)RS&Oy;X&%5j|%864m}^$^D%&?My)})D5Dr7RI73I0Wls3hHf{kGk;ds0$rI zZPlNl+81l@3jX$64fQ(5*tj>UJ_YZ<0u1Ovv&m?VmZC1W9yLeLqekLWY>l@u0b9nI z4&|VxWH~0|4%FKc*1^>GKrPlZR7Y~L9X^1X>Nh*^{tqWpvZL9N#-QT$s8xLp_2mDu zaYQHcqz$cousQXUZTzV9b?bT5XGn?8W)1W~J#a3Lz&V|H{|AvdOM!aSw2O&-*pj#q zwR8P|-LPg?GnZpfZ%qzrWFEwh_&Vx!yNTK_V&ctfmyB9;t89D>6Nrli5=?{cs10W- z>H<4ZA4=b&<~%CVTre4R!{ydPs2ktH1Z>;QbTl7(5%0lB{KFdA-4*=n_&|)OJn#e= zjlk!qJwLjK+0zS9@tZa--P7z~LvRS?o2)miy?U7ouSQMbMI3+$z0HjlV+!$69D^}^ zf@>z=EFq%{Ua@xTYvSeBudK2CO!<84X={`IrhK~fFzN>31I({r(@<~6Hq^)Qanx&j z6Wx0MOARyyjqyGz+Szyy)+Bx#OX3%(x8njf#9OF+pw1vOC6PFqcoeGrPSk7m8tUyj zh`|n^u5%M>>HWWBuvwK2u{v>E48s8!jwz_M5Wp^2h&%8$&cYXmm=3f|GEWj4p5s{aEa7vr|n) zH}MASgKwcOTz0g1;&9XxwM8we@u-jC`%$0st59=)7&R5;$CwRnEUJDZYM%+5CZnCI z@>sJ0bwkbVEYuB-;1axv+EC_?GdDbniNx2i1;&mypPnhGk=ldWsIH;bOymU9ZW!vi zbCHcH;5<*J76l)n3tuN)ApN0$qf9aW+0R3U( z=m@30=wNSgcsre5wk(c3FO_qWq~lxCo676{Uy>5Vw4LhM zKz<)7i~N1uAfEisfW~beZiLI#|P{`&LZ;1shnjiCR)Fx zYzJu=7rX(NTdmI_6mKr!K+Px3FdU+^ujT! zG1um`s#of2_886uu2I*C)PcMo!|?-K{~|V^ESa)g(sElKMxGry_@7c#q}N%;K*~o2 zsLo1^FY(sIFvQmGEzb2ka(oUu$h4$KpC!&tp*vn*t zzcJrIe5b7|M>!vMf#8>daTJy&rQ62hAQ%1t*I;SVNPFT7n$=*&DWv+U5NvzgYzwX_P%cs;_|iJ0&=ADAuCzN1SF)YJ~M{z8-BNsnaor z{7&3M-CMYc)XcUkiQlUY>VLjACjCl$AMsLbPpo5`fq(y}V4e*`3mTp#JwnovWlvE4 zLH)2tZ=7Z8^et%y`Kz4sB54x&2Po5LzrLRLwCxsASB1n^!{9fiI6eO<0v&lIKDL90 zn-d-;ufNsnc!Tr=sV-#$F~+u=O^2=Cs45I!7!AQ!h1`9R* z9CfIeLg6`*zC7+B%^_VP?nK=o@;XKkpCO$le=p_b$sZu!5OoZoY%ab;yoK~6`3dLVAdF)Se$|rO4T(9~{4H{yR{yne-?HJ#4S92dmAGS0ID(NPB@wwoOOM zH&Qm2w93{Uz@4O$w8_UGNbk|^V{@tCZ&?2zUzPgv!7}E*n7!au8tc%K$Ru9{%c_8* zJ8jltF6mX$Zt7zxn}|OVKV{GDfj`=O1xzPBOnphxaMBTyj%X6U*YNvaFf>1=*^VgM zLi&{k)hN3{zNM|JkH4vbJv!1x#|X;n;+v!{IuB>zE>bz_vQgiBdytBbN5}-`Q=uct z;Pj^PYvgZ}){|C~&XIKVq3&&y4gMRivR{!VP_ARU;om zOQ7y?j3#|d($Nw>B_)xX5x1tz^W<9wYt4^;!eq+Mle+4r9F@rH2;8Zk6rO_iqzo#$ z5KkuMke^N(MEUF3%$`i>v?IP3d*WxLTjXovO`J`;k*K4N!AZt;q(-E2wA0b57|)+f zFwMllpB|e(j04+k($!}8u2>PE#ly} zuWSeZA$?Pl9d#h)ni(dKT_!X4#ff2tP9 z@n$Cu>Fdr*N%v-X+!@*KJnv+0ir<^+p6JWX^7!3TGyLg)7EbnLr{#Onyv|^qn3K__ z=uBF>{plHbZmt&X?q$wR@npM`y?>rvkl}Hs__F=pY`;6(o96Rp4D$FheA&_N0rtA? z|2!pl`^1zKZ;rpkzZ-e7Q{7YYy}8rfIi6fkme=pibtn7$>CroW?Kija^0m2bTX;RW zDe2tYKh^8acIV{!Qu9;%c~M;7&y904ym@Y2B{`R$c{`5eUalJDai?aaW%xal-JZNW zuirf}*O%qa$>%zrJjSD_(wCd+&E2tWK|zJ`sXi`~?en|6(=zgQR9Q8z!ty_!Diuh{ z&&|~%GDN8v*=g?J8E)T1x5u5I=goC;y?#1S;C26J!>Jj0>60_^{QsjZ-TklTe_l7+ z?aBA2bI%N(uP2@T+kO7mxqrLW-%ht@?^wQRTARRKDe3#SvM_?v%{rme1=BTXlm=JG z{tfW4dzb%U!O!B5?@83|ce}m5SCFgn4^P}DUbhp2q>dW$_=+ghW zWQvwbZoWI!=l9IWkKPe-=18;E*NVCN#SWjIKG~c4@2h8dXJnW)lj)xx<<2ZxGg%qT z!i;RsfyJ4gtc=~Ai@Uz8-aXI1e?xktJ)j?0DKcgT&%dLmh?Wdp_@p7MDMNl6N=%>Qt-p>SsE+LdJ6We0!&CZ^86~ zYxZxO5xm2n*O>0kKUkPiK;I{OqaAgc_s;apo|^7+A6V?o^i0~njUgk-^YU<6`OEA5 zST)q1p$DAeb}cMnKWnt=2wB2~JfsGwAd z2uP7ol`34|3Tnh);mP~{&P?ugz4i9G!)N}pXYW0G+Br$QKOgn~`+&dqW*)yKhGRk| zV~XI9d5w83voVLts??aE8ph-C#^K55uXLAK$~pxCOIdy_&XOBaERT30R!+1+|P(TR+A^cpdlg zGQT1JGu!Ig``t&{ZvJvst*6*)On)+Z!!=k2KgOPT4U1x(`o>J=fv;n0yxPDR+GNT! zG^P!9!*tw*dvH^%F*&H07-tMsO`k^gMK++`yjEj+6YFCz&o^zz6u^O)4X2=bWHuJW zCFqYkP+gpiJjVY;?zq;HRL&Zi;;Oj zW)&7`X}kIpe1-Ths%Oq%8*X?9HTIFMjk$$&a4Y47W9a>3wE#;l-VM`vU9V$-h1oaP2Ey3r`&ueuxaE8g#6 zOl8Wi^+Muoy?GdMtv(D7afQCdH0OSA_oLT{FAT5^>_5nuB+7FSG3Ef}Zw)nO2G&lZ z|9N?HWVoF~IY!vAt%e$-!B`k4qh{|4%z|sM9Bx2$>HC zb=_X9fH&Rw920DLHLOj!w=0=KWR_znCOa>nZtxRo*@R5Ab0GmWDf^&$ZW89g6x4oj z1vQy(q2^FJ>b{vL**7kZ9f`{$)5dG2k!e7|MQnt5Cfg08BbFx~gzQOXDF)(4?)<07 zz0Dacjm_S)t7ItVBp!v@N8Z9bxEwX4+fZHqIp)&(Pa&fgUqNj^Pf>69(pP~zbyQx~ zSrav6&9M-+M>TL5hT$}fzzrCQ=TJkIX^Jhcj_R@Q7{EC*j7$j}i~hJ0Rbd^f#k)}t zJm%uFs7ZJW^`;L{*FQsbdBLf6PLx8uX+_L|(Wr*Sx${HOs~e9cqX)j_PP~Wth*zPy zd^f5K52GG<5%r+kE`EYx#DAgohazv;Sza17Cn8Yyk3bnh8n^w)9m?B)R07?8r}r;;7+K940Gqb8mkZr7EvH~ zxC$w#3$LIW^cX8(8fsD&n{FT25*7Etn)oi(!W7gCcxKoa2y&J{HMlye!HvCS^hRA! zEgp_~@C;Oom!n#|6V(%6pz57RHTVbT->7=QGwoa`hq_No)EwxB8tMTUiz6`-z5B^% zEFNJEOh-MS!rS%@Vo)tkK#gq=)EpRynp9)4I8JltH=<_yPSk^MV+nkWF_`lm+t7IA zg}kO4nJk=0vIS-=W+k5G;`dND+JND>6Ql7eZp5Hjw*G!pj~&M9n2P?GeYPE%Agn{& z9M!-X7@+lkfJ`|G4x`@WA(p}HbL@kvqV|JOsQ-+)XuoQdj*1*jV>Lk-DRR0D5e0A_vH4oMKIUU5{9RKxN( z7%Ss4)KI2ibG(7|vGjcVygum7Nx@Judb3Fwh4Zl@p2TYS3^QZ71-2m-P}jYNg|WAb zy;ziZ9%=}-qwaeL%i=R&LpjmU6->u4;!UXX6s&^xu{0KV&wjeq#bU%g zP?Kv4YUn;hUH2ubA@?v0GcB?`Qxg4%6EHWnUqt_F?D|oV6{n)&+1L~}y7DK^bPS~Y zCF(|ji|snji+PA6FfZ1_U~G%(sX?xM9BPQ?VkKPUC8IYuhMn*}Y6u!Ev9o;)s^U7- zSd+Ld>VC6Pt7SFz!9y5< z#nT(Hjj!T`&SG;dG3`WQ@bds2f*WYgb2q)STIcYT$lUgU_HIco{Xh)14vj z+htrARo?4;`d?i*g945D`=|z8LiNBe*co47J4{?>=fZZ>j`j;`lGgda_P_wtT$qJg z4Qo;N-;NrRlUNngoTb)#?atI;z3q}Wom){m)+MZsFEAXVKeStGPt;^xh-$!L)B}D* zT^GE;4n+*As|R8vE=DyV1=W*(c-@J}jkcgKs_WOHDxP(|bmdhy*&*qH>ak^52hU(N z%(~e=s4i;R4a3T~5p};*Y>EL}?9Y(i1TrdEi1qLq#$ds%)6 zVngB$*a#nBeJsDtUOx!c&}~=}Z)0in+wL18uZbX2f`Xc;<<}Xz;1JYoKZRPqSJ5AT zM2&44>V{^AorI-OZ(1H>v9l{*>)eRhDc_E|-vP|6^?#a-Z^y%|oOtRx!Ip~JTC?r6 zJ75TEXsTdE?2cdKJe-D!yX@G1hZ+*U-FD8zU<~mf)OFji0$#&1Jl|y5V<$^R)P)^T zUG^TTt5PrmpI|5ke{3HVg$;c*F_6nc``Rj~}}&3mJIa46=$QRvn3m_kNf zxe^QG7x)TZM?LUgsIK+jYu9%T)a-45y74#+#%b6bS7SInK)pcFKKlYuScbSKs%PKX zNB{egSx$kvW)0@S)2N2rM7_zMs0)kjx09<0>P=>#8ZZa5;8IjW)}Y>SKjz0{sCrki zDBi>3nCSrhuQw}ozR!Ox_?c^Md8mdpcWFpAiM|D}yXLjssqn6z;)SK@>O|nZEiHQg8kj+8O_Fbs* zG;E2b57~WUIO;)LP|r!lvS>cH&-0ceqZ6-UC{D&c9)9-2U{yTKL?I4Ab@97L?AR?q z^~6S07w<&XKY;=GJ%-?Y%#1IcnU69*hy#$G@|q1~H0C=|H#mws%Unl|;mTund2T}e z^5_6YQJ(39o&B{?Z#W+PdD15APrNXYslzLlTnlEu&eM5W+na=OW+G^fW96vt)^vJzzppKlCB}zm9^_kJ%1!$dBxH zJgCW2mK|~6PfQ{zR{7cPa4pj40m`S~OX?l@m9NsoN1icBsn%m zj71GqQ|yIpP`@!v#(czn{R(>>l6j?TmWh5)8++sEzC^ERVmt@>2XJx;Sw>mcS%zii=$Az2P!{qaIZJ6_0O2 zX@d<_5p`jz^LK1aTsWtFgPy3lGt$KqP(3&o!*Go|{{-8j@mPSk9cIHpsEuiqE1!)4#2=u#ek%rR z{U3A%mrxfxKt1qB@%TO? z8lf7Ji29wP>ER0ALA~Ju%!wN@5R*}Fb_{jlHOzx|up~Znad2LHU3pZ)YM~}^JFJRH zs25m|>Y;7u)u+}zS8xh7JHJIe;GQc_NA-xwXS*&p>bjDs&yHx+$8j&zTo{0Qz%W$3 z@u&@Mo{LvtG2$KhJYL@gXDQGPF1ZTVQA6<*)zyCat)Zyd9);?u9vF(FQE$2k!*Dn1 z!53V7A5}j~0c&B@byW(m{&iuzJ2BWf1-0WX!AM+(8q;r4E%y|(adFhLOu!g?7xkcX zs3H3S^#XsPUMOF%$M*#!0@Z-#UNTyr{ZSQXxp+P5f)l7Wx$fepSd`c=#NMDJs$N6X zTTS3O zAESn7b*OFVX4IPWRCkjUyd32eO9QHz|iYAB(-Q19rsEoOz1dWj6?Q{YcafI0N(Ye3R-bJVK308rDGn z5+2{@eI3+(FcH+;)6PKaZbJ5baL8VbQ=!_cM{-}n{L9L<{SO@o`dL#|?X_=*rwLWSn$DkUz zxeV*SDw)f!AS-_*R2+?(tpl+ZZb#kd0qO=t%h?7epdL6EwLHHp zK57y#Mh)TCaIYPkQ?B45w&O$^YO8D#VNF1FSt6=O2BCUxIO>M)xOfd}&)@Fk9zPYs4hN-L3j_ zC{xikxE<SWYKN*+$xgOb*qFE%>W#NJKS#}h zi>NNW?bP3AV~E30Z{8ENAq_xXKN^{wUNf7FT6PJwe*Z>wP1P!Pb`M0&?mgHZucO|e za#j1qBpx-k!%;&v2DQGusQu(^)X*(Ot*$Mo7d?o+zyDn%qprN`Oh;XiJ{{lBp*=!~i`7PH}O)QuLS zhG+xohPzQibPUxKzhEQ=RkvLphicGt)R1h(UYLSfB@s33`9$>n{cj=}Z74G_3Rk1X z`djRPAyIZCN3+jz$ zVnINyO4i29Vh zg<6*W%{=-(z~6t#sGtT;#YQeZi6O+P=#M|4X8&)fAD;u7+jU+6)#cT(GxkT-KaN^O zr%}(@92?E)ol3EEd4mu`mutjrBaNhi5Puv$yo=NtuMY{v%Al?@(`Ap^aUh^-)`OW7NLT4!vsGNHW?;)}p%XbJQN4f-(3VYKTJH z+DTRcb)z>?%WN+8!HuW}WPjDZab47^=RhT{wj!(G@6&!cV}(!suQII8DjQIqNo48ldIA=`i&`>Uv-DBRI*V1rTT_n`KX z`(85YqGE}5gK2{r+qtL*T*r6Ozmvx_!NsTt-oS?FdEM^maoC=CII5>kq9&!Mvz;^5 zu_AGA)O{DCHYV>OGWs;ThaS|SRnR08yBTUcQ{9Q7l+7dFLCQGxyK{w|eQ=sP$)4sr z^g>0*uf)E%&=#97wElJIKRz5o%0Vhg$~Yq24HSPxekV>O6>#Oz)U8bZ4k^%G$5%;T z7wa1Bc*BX$kaT2s+KAt9798ArUkzCGrp@DsiNX)0|+joVq0Cep{0=@>`SE?AihZladq z|2?#HbuiaV0QGv1rV=kFT_SCxyc@nkxsDMy$7YR}?b^2#6!V#4_`v$lk=x~RPb2JRFCsI9 zq@x3sbc{zns7xyP)fj`}?p#gsIvNu9C*>ivBI&zdcHf!*{!@_hjAf+_uBdy?p^PdT z|5c>?R2+-}q%2g5(uEvsRA#2TCfQcL1uq^rIX`}d*z#5$(n zdYkqAdz^pSc}-6q*pB=ki*&z5ZYBIzN0w+zR!4^B0-(SWf{*EmyG! z`AY8Qv&k>eNq0jup z-hU~D&k06h#_^DRDHmkng7?S=QT7(8An6iGM}N`*^4EP4OObp$Da4&0!nOK-k(GEi zsf2rYPIvxQzJK_R-}rZ?&HDbNqHHLYKg9;P1uNiX{FC%8NylT-Lhcbo>Pgz`?iWnm zGrk&ph+z`tg(%yB{#b{!mAqG9uXJ>E7utwTg9-yl8z>)(aikgKPiItcw!vML7vOwF z%uD*1vaeBJwK9%xiFJH}Z@T<7?f=yXZj-8#3X#4by`bV~T#WyNr${$QI-@)Pu6l z#E0-BtVUTqQabsuq`Q=Nz84+CY35$B_<_*AYj)GwBCXcjB8^g`4Ig?f2DSRZ-TTq@xJsElB-HI>IgVzdJHk zLSrfnAf4pGE;uZs0{+|OpJ7{4AI|IlaL|CdBZ;Sw&M8m&m88EN{*J3DzecJ<{x8f! znm}rv(f=hmp<^$pF6laPY0T%!$@+c)@d0sbZkmBk(jC439xA^iWgLUZWF|GItRfdL#xIGxlkbAMCX})xIE=FCCzU6V55qyECFGA% ztpq+IZ6elATm{E`NC3l}SBry5mvQdGHx^6C* z+;DT(YRMCBoQ^2`-)oQWc%$#&u%r>g!X^yud1Bt+(aYkpcv>C!GK=R=rv7TQ-{}+69-!A|F diff --git a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po index e3b3c4cb..aaf69491 100644 --- a/engine/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -28,7 +28,8 @@ msgstr "Je aktivní" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Pokud je nastaveno na false, nemohou tento objekt vidět uživatelé bez " "potřebného oprávnění." @@ -155,7 +156,8 @@ msgstr "Doručeno na" msgid "canceled" msgstr "Zrušeno" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Neúspěšný" @@ -183,11 +185,25 @@ msgstr "Momental" msgid "successful" msgstr "Úspěšné" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Schéma OpenAPI ve vybraném formátu s vybraným jazykem" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Schéma OpenApi3 pro toto rozhraní API. Formát lze zvolit prostřednictvím " +"vyjednávání obsahu. Jazyk lze zvolit pomocí Accept-Language a parametru " +"dotazu." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Vstup/výstup mezipaměti" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -195,32 +211,36 @@ msgstr "" "Použijte pouze klíč pro čtení povolených dat z mezipaměti.\n" "Pro zápis dat do mezipaměti použijte klíč, data a časový limit s ověřením." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Získat seznam podporovaných jazyků" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Získání vystavitelných parametrů aplikace" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Odeslání zprávy týmu podpory" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Vyžádejte si adresu URL s protokolem CORS. Povoleno pouze https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Vyhledávání mezi produkty, kategoriemi a značkami" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Globální koncový bod vyhledávání pro dotazování napříč tabulkami projektu" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Zakoupit objednávku jako firma" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -228,253 +248,268 @@ msgstr "" "Zakoupit objednávku jako podnik s použitím zadaných `produktů` s " "`product_uuid` a `atributy`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "stáhnout digitální aktivum ze zakoupené digitální objednávky" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Seznam všech skupin atributů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Získání jedné skupiny atributů (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Vytvoření skupiny atributů" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Odstranění skupiny atributů" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 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" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Vytvoření atributu" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Odstranění atributu" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 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" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Seznam všech hodnot atributů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Získání jedné hodnoty atributu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Vytvoření hodnoty atributu" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Odstranění hodnoty atributu" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "Přepsání existující hodnoty atributu uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "UUID nebo slug kategorie" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Vytvoření kategorie" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Odstranění kategorie" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Přepsání existující kategorie ukládající neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 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" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "Meta snímek SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Vrací snímek meta dat SEO kategorie." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Seznam všech kategorií (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 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." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Vyhledávání podřetězců bez ohledu na velikost písmen v položkách " -"human_readable_id, order_products.product.name a order_products.product." -"partnumber" +"human_readable_id, order_products.product.name a " +"order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrování příkazů s buy_time >= toto datum ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrování objednávek s buy_time <= toto ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrování podle přesné objednávky UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrování podle přesného lidsky čitelného ID objednávky" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrování podle e-mailu uživatele (přesná shoda bez rozlišení velkých a " "malých písmen)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrování podle UUID uživatele" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrování podle stavu objednávky (shoda podřetězce bez rozlišování velkých " "a malých písmen)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Řazení podle jedné z následujících možností: uuid, human_readable_id, " "user_email, user, status, created, modified, buy_time, random. Pro sestupné " "řazení použijte předponu \"-\" (např. \"-buy_time\")." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Vyhledání jedné kategorie (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Objednávka UUID nebo lidsky čitelné ID" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Vytvoření atributu" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Odstranění atributu" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Přepsání existující kategorie ukládající neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 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" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Nákupní cena v době objednávky" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí " -"s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " +"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí" +" s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " "transakce." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "načtení aktuální nevyřízené objednávky uživatele." + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "načte aktuální čekající objednávku ověřeného uživatele." + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "zakoupení objednávky bez vytvoření účtu" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "dokončí nákup objednávky pro neregistrovaného uživatele." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Přidání produktu do objednávky" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 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`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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á." -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -482,22 +517,22 @@ msgstr "" "Přidá seznam produktů do objednávky pomocí zadaného `product_uuid` a " "`attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Odstranění produktu z objednávky" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 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`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Odstranění produktu z objednávky, množství se nezapočítává" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -505,434 +540,429 @@ msgstr "" "Odebere seznam produktů z objednávky pomocí zadaného `product_uuid` a " "`attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 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í." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Vytvoření atributu" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Odstranění atributu" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 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" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "načtení aktuálního čekajícího seznamu přání uživatele" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "načte aktuální čekající seznam přání ověřeného uživatele." + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Přidání produktu do objednávky" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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`." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Odstranění produktu ze seznamu přání" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Odebere produkt ze seznamu přání pomocí zadaného `product_uuid`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Přidání mnoha produktů do seznamu přání" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`." +msgstr "" +"Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Odstranění produktu z objednávky" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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`." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrování podle jedné nebo více dvojic název/hodnota atributu. \n" "- **Syntaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší " -"JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi " -"zachází jako s řetězci. \n" -"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL " -"base64. \n" +"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi zachází jako s řetězci. \n" +"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL base64. \n" "Příklady: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(přesně) UUID produktu" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné " -"řazení použijte předponu `-`. \n" +"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné řazení použijte předponu `-`. \n" "**Povolené:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Vytvoření produktu" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 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" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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." -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Odstranění produktu" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "seznam všech povolených zpětných vazeb pro produkt" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Vrátí snímek meta dat SEO produktu." -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Seznam všech adres" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Získání jedné adresy" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Vytvoření nové adresy" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Odstranění adresy" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Aktualizace celé adresy" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Částečná aktualizace adresy" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Automatické dokončování zadávání adresy" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "omezuje množství výsledků, 1 < limit < 10, výchozí: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "seznam všech ohlasů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "načtení jedné zpětné vazby (podrobné zobrazení)." -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "vytvořit zpětnou vazbu" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "odstranit zpětnou vazbu" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "přepsat existující zpětnou vazbu a uložit neupravitelné položky." -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "seznam všech vztahů objednávka-produkt (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "načtení jednoho vztahu zakázka-produkt (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "vytvořit nový vztah objednávka-produkt" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "nahradit existující vztah objednávka-produkt" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "částečně aktualizovat existující vztah objednávka-produkt" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "odstranit vztah objednávka-produkt" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "přidat nebo odebrat zpětnou vazbu na vztah objednávka-produkt." -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Seznam všech značek (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Získání jedné značky (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Značka UUID nebo slimák" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Vytvoření značky" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Odstranění značky" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Přepsání existující značky s uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snímek pro značku" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Seznam všech prodejců (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Získání jednoho prodejce (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Vytvoření prodejce" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Odstranění prodejce" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Přepsání existujícího dodavatele s uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Seznam všech obrázků produktu (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Získání jednoho obrázku produktu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Vytvoření obrázku produktu" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Odstranění obrázku produktu" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Přepsání existujícího obrázku produktu s uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Seznam všech propagačních kódů (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Získání jednoho propagačního kódu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Vytvoření propagačního kódu" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Odstranění propagačního kódu" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Přepsání stávajícího propagačního kódu, který není určen k úpravám" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Seznam všech propagačních akcí (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Získání jednoho povýšení (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Vytvořit propagaci" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Odstranění povýšení" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" -msgstr "Přepsání existující propagační akce s uložením neupravitelných položek" +msgstr "" +"Přepsání existující propagační akce s uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Seznam všech zásob (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Získání jedné zásoby (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Vytvoření skladového záznamu" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Odstranění skladového záznamu" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Přepsání existujícího skladového záznamu s uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Seznam všech značek produktu (jednoduché zobrazení)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Získání jedné značky produktu (podrobné zobrazení)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Vytvoření značky produktu" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Odstranění značky produktu" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" -msgstr "Přepsání existující značky produktu s uložením neupravitelných položek" +msgstr "" +"Přepsání existující značky produktu s uložením neupravitelných položek" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Přepsat některá pole existující kategorie a uložit neupravitelné položky" @@ -1086,7 +1116,7 @@ msgstr "Data uložená v mezipaměti" msgid "camelized JSON data from the requested URL" msgstr "Kamelizovaná data JSON z požadované adresy URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Povoleny jsou pouze adresy URL začínající http(s)://." @@ -1170,11 +1200,11 @@ msgstr "Koupit objednávku" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Prosím, pošlete atributy jako řetězec ve formátu attr1=hodnota1," -"attr2=hodnota2." +"Prosím, pošlete atributy jako řetězec ve formátu " +"attr1=hodnota1,attr2=hodnota2." #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1248,9 +1278,11 @@ msgid "which attributes and values can be used for filtering this category." msgstr "Které atributy a hodnoty lze použít pro filtrování této kategorie." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Minimální a maximální ceny produktů v této kategorii, pokud jsou k dispozici." +"Minimální a maximální ceny produktů v této kategorii, pokud jsou k " +"dispozici." #: engine/core/graphene/object_types.py:206 msgid "tags for this category" @@ -1555,8 +1587,8 @@ msgstr "" "dodavatelích a jejich požadavcích na interakci. Třída Vendor se používá k " "definování a správě informací týkajících se externího dodavatele. Uchovává " "jméno prodejce, údaje o ověření požadované pro komunikaci a procentuální " -"přirážku použitou na produkty získané od prodejce. Tento model také uchovává " -"další metadata a omezení, takže je vhodný pro použití v systémech, které " +"přirážku použitou na produkty získané od prodejce. Tento model také uchovává" +" další metadata a omezení, takže je vhodný pro použití v systémech, které " "komunikují s prodejci třetích stran." #: engine/core/models.py:124 @@ -1671,8 +1703,8 @@ msgstr "" "jinými kategoriemi a podporovat vztahy rodič-dítě. Třída obsahuje pole pro " "metadata a vizuální zobrazení, která slouží jako základ pro funkce " "související s kategoriemi. Tato třída se obvykle používá k definování a " -"správě kategorií produktů nebo jiných podobných seskupení v rámci aplikace a " -"umožňuje uživatelům nebo správcům zadávat název, popis a hierarchii " +"správě kategorií produktů nebo jiných podobných seskupení v rámci aplikace a" +" umožňuje uživatelům nebo správcům zadávat název, popis a hierarchii " "kategorií a také přiřazovat atributy, jako jsou obrázky, značky nebo " "priorita." @@ -1725,7 +1757,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Reprezentuje objekt značky v systému. Tato třída zpracovává informace a " "atributy související se značkou, včetně jejího názvu, loga, popisu, " @@ -1774,8 +1807,8 @@ msgstr "Kategorie" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1868,10 +1901,10 @@ msgstr "" "digitální stav, název, popis, číslo dílu a přípona. Poskytuje související " "užitečné vlastnosti pro získání hodnocení, počtu zpětných vazeb, ceny, " "množství a celkového počtu objednávek. Určeno pro použití v systému, který " -"zpracovává elektronické obchodování nebo správu zásob. Tato třída komunikuje " -"se souvisejícími modely (například Category, Brand a ProductTag) a spravuje " -"ukládání často přistupovaných vlastností do mezipaměti pro zlepšení výkonu. " -"Používá se k definování a manipulaci s údaji o produktu a souvisejícími " +"zpracovává elektronické obchodování nebo správu zásob. Tato třída komunikuje" +" se souvisejícími modely (například Category, Brand a ProductTag) a spravuje" +" ukládání často přistupovaných vlastností do mezipaměti pro zlepšení výkonu." +" Používá se k definování a manipulaci s údaji o produktu a souvisejícími " "informacemi v rámci aplikace." #: engine/core/models.py:585 @@ -1927,8 +1960,8 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Reprezentuje atribut v systému. Tato třída slouží k definování a správě " @@ -1997,12 +2030,12 @@ msgstr "Atribut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Představuje konkrétní hodnotu atributu, který je spojen s produktem. Spojuje " -"\"atribut\" s jedinečnou \"hodnotou\", což umožňuje lepší organizaci a " +"Představuje konkrétní hodnotu atributu, který je spojen s produktem. Spojuje" +" \"atribut\" s jedinečnou \"hodnotou\", což umožňuje lepší organizaci a " "dynamickou reprezentaci vlastností produktu." #: engine/core/models.py:788 @@ -2020,15 +2053,15 @@ msgstr "Konkrétní hodnota tohoto atributu" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Představuje obrázek produktu spojený s produktem v systému. Tato třída je " "určena ke správě obrázků produktů, včetně funkcí pro nahrávání souborů s " -"obrázky, jejich přiřazování ke konkrétním produktům a určování pořadí jejich " -"zobrazení. Obsahuje také funkci pro zpřístupnění alternativního textu pro " +"obrázky, jejich přiřazování ke konkrétním produktům a určování pořadí jejich" +" zobrazení. Obsahuje také funkci pro zpřístupnění alternativního textu pro " "obrázky." #: engine/core/models.py:826 @@ -2069,13 +2102,13 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Představuje propagační kampaň na produkty se slevou. Tato třída se používá k " -"definici a správě propagačních kampaní, které nabízejí procentuální slevu na " -"produkty. Třída obsahuje atributy pro nastavení slevové sazby, poskytnutí " -"podrobností o akci a její propojení s příslušnými produkty. Integruje se s " +"Představuje propagační kampaň na produkty se slevou. Tato třída se používá k" +" definici a správě propagačních kampaní, které nabízejí procentuální slevu " +"na produkty. Třída obsahuje atributy pro nastavení slevové sazby, poskytnutí" +" podrobností o akci a její propojení s příslušnými produkty. Integruje se s " "katalogem produktů, aby bylo možné určit položky, kterých se kampaň týká." #: engine/core/models.py:880 @@ -2144,8 +2177,8 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Představuje dokumentační záznam vázaný na produkt. Tato třída se používá k " "ukládání informací o dokumentech souvisejících s konkrétními produkty, " @@ -2167,22 +2200,22 @@ msgstr "Nevyřešené" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Reprezentuje entitu adresy, která obsahuje údaje o umístění a asociace s " "uživatelem. Poskytuje funkce pro ukládání geografických a adresních dat a " "integraci se službami geokódování. Tato třída je určena k ukládání " "podrobných informací o adrese včetně komponent, jako je ulice, město, " "region, země a geolokace (zeměpisná délka a šířka). Podporuje integraci se " -"službami API pro geokódování a umožňuje ukládání nezpracovaných odpovědí API " -"pro další zpracování nebo kontrolu. Třída také umožňuje přiřadit adresu k " +"službami API pro geokódování a umožňuje ukládání nezpracovaných odpovědí API" +" pro další zpracování nebo kontrolu. Třída také umožňuje přiřadit adresu k " "uživateli, což usnadňuje personalizované zpracování dat." #: engine/core/models.py:1029 @@ -2338,8 +2371,8 @@ msgstr "Neplatný typ slevy pro promokód {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2423,7 +2456,8 @@ msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!" #: engine/core/models.py:1351 msgid "you cannot add products to an order that is not a pending one" -msgstr "Do objednávky, která není v procesu vyřizování, nelze přidat produkty." +msgstr "" +"Do objednávky, která není v procesu vyřizování, nelze přidat produkty." #: engine/core/models.py:1356 msgid "you cannot add inactive products to order" @@ -2504,8 +2538,8 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "spravuje zpětnou vazbu uživatelů k produktům. Tato třída je určena k " -"zachycování a ukládání zpětné vazby uživatelů ke konkrétním produktům, které " -"si zakoupili. Obsahuje atributy pro ukládání komentářů uživatelů, odkaz na " +"zachycování a ukládání zpětné vazby uživatelů ke konkrétním produktům, které" +" si zakoupili. Obsahuje atributy pro ukládání komentářů uživatelů, odkaz na " "související produkt v objednávce a hodnocení přiřazené uživatelem. Třída " "využívá databázová pole k efektivnímu modelování a správě dat zpětné vazby." @@ -2518,7 +2552,8 @@ msgid "feedback comments" msgstr "Zpětná vazba" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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á." @@ -2663,9 +2698,9 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Představuje funkci stahování digitálních aktiv spojených s objednávkami. " "Třída DigitalAssetDownload poskytuje možnost spravovat a zpřístupňovat " @@ -2729,8 +2764,7 @@ msgstr "Ahoj %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Děkujeme vám za vaši objednávku #%(order.pk)s! S potěšením Vám oznamujeme, " @@ -2845,8 +2879,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku! S potěšením potvrzujeme váš nákup. Níže " @@ -2919,7 +2952,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Rozměry obrázku by neměly přesáhnout w{max_width} x h{max_height} pixelů." -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2927,7 +2960,7 @@ msgstr "" "Zpracuje požadavek na index mapy stránek a vrátí odpověď XML. Zajistí, aby " "odpověď obsahovala odpovídající hlavičku typu obsahu XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2937,28 +2970,28 @@ msgstr "" "požadavek, načte příslušnou podrobnou odpověď mapy stránek a nastaví " "hlavičku Content-Type pro XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Vrátí seznam podporovaných jazyků a odpovídajících informací." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Vrátí parametry webové stránky jako objekt JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Zpracovává operace mezipaměti, jako je čtení a nastavování dat mezipaměti se " -"zadaným klíčem a časovým limitem." +"Zpracovává operace mezipaměti, jako je čtení a nastavování dat mezipaměti se" +" zadaným klíčem a časovým limitem." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Zpracovává odeslání formuláře `contact us`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2966,70 +2999,66 @@ msgstr "" "Zpracovává požadavky na zpracování a ověřování adres URL z příchozích " "požadavků POST." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Zpracovává globální vyhledávací dotazy." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Řeší logiku nákupu jako firmy bez registrace." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Zpracovává stahování digitálního aktiva spojeného s objednávkou.\n" -"Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v " -"adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba " -"HTTP 404, která označuje, že zdroj není k dispozici." +"Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid je povinné" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "objednávka produktu neexistuje" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Digitální aktivum můžete stáhnout pouze jednou" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "objednávka musí být zaplacena před stažením digitálního aktiva." -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Objednaný produkt nemá produkt" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Zpracovává požadavky na favicon webové stránky.\n" -"Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém " -"adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP " -"404, která označuje, že zdroj není k dispozici." +"Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Přesměruje požadavek na indexovou stránku správce. Funkce zpracovává " "příchozí požadavky HTTP a přesměrovává je na indexovou stránku " -"administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá " -"funkci `redirect` Djanga." +"administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá" +" funkci `redirect` Djanga." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Vrací aktuální verzi systému eVibes." @@ -3044,14 +3073,16 @@ msgstr "" "Definuje sadu pohledů pro správu operací souvisejících s Evibes. Třída " "EvibesViewSet dědí z ModelViewSet a poskytuje funkce pro zpracování akcí a " "operací s entitami Evibes. Zahrnuje podporu dynamických tříd serializátorů " -"na základě aktuální akce, přizpůsobitelných oprávnění a formátů vykreslování." +"na základě aktuální akce, přizpůsobitelných oprávnění a formátů " +"vykreslování." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Představuje sadu pohledů pro správu objektů AttributeGroup. Zpracovává " "operace související s AttributeGroup, včetně filtrování, serializace a " @@ -3080,8 +3111,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Sada pohledů pro správu objektů AttributeValue. Tato sada pohledů poskytuje " "funkce pro výpis, načítání, vytváření, aktualizaci a mazání objektů " @@ -3130,8 +3161,8 @@ msgstr "" "serializace a operací s konkrétními instancemi. Rozšiřuje se z " "`EvibesViewSet`, aby využívala společné funkce, a integruje se s rámcem " "Django REST pro operace RESTful API. Obsahuje metody pro načítání " -"podrobností o produktu, uplatňování oprávnění a přístup k související zpětné " -"vazbě produktu." +"podrobností o produktu, uplatňování oprávnění a přístup k související zpětné" +" vazbě produktu." #: engine/core/viewsets.py:568 msgid "" @@ -3152,8 +3183,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Reprezentace sady zobrazení, která zpracovává objekty zpětné vazby. Tato " @@ -3168,31 +3199,31 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet pro správu objednávek a souvisejících operací. Tato třída poskytuje " "funkce pro načítání, úpravu a správu objektů objednávek. Obsahuje různé " "koncové body pro zpracování operací s objednávkami, jako je přidávání nebo " "odebírání produktů, provádění nákupů pro registrované i neregistrované " -"uživatele a načítání nevyřízených objednávek aktuálního ověřeného uživatele. " -"Sada ViewSet používá několik serializátorů podle konkrétní prováděné akce a " -"podle toho vynucuje oprávnění při interakci s daty objednávek." +"uživatele a načítání nevyřízených objednávek aktuálního ověřeného uživatele." +" Sada ViewSet používá několik serializátorů podle konkrétní prováděné akce a" +" podle toho vynucuje oprávnění při interakci s daty objednávek." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Poskytuje sadu pohledů pro správu entit OrderProduct. Tato sada pohledů " "umožňuje operace CRUD a vlastní akce specifické pro model OrderProduct. " -"Zahrnuje filtrování, kontroly oprávnění a přepínání serializátoru na základě " -"požadované akce. Kromě toho poskytuje podrobnou akci pro zpracování zpětné " +"Zahrnuje filtrování, kontroly oprávnění a přepínání serializátoru na základě" +" požadované akce. Kromě toho poskytuje podrobnou akci pro zpracování zpětné " "vazby na instance OrderProduct" #: engine/core/viewsets.py:867 @@ -3219,8 +3250,8 @@ msgstr "Zpracovává operace související s údaji o zásobách v systému." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3241,9 +3272,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Tato třída poskytuje funkce sady pohledů pro správu objektů `Address`. Třída " -"AddressViewSet umožňuje operace CRUD, filtrování a vlastní akce související " -"s entitami adres. Obsahuje specializované chování pro různé metody HTTP, " +"Tato třída poskytuje funkce sady pohledů pro správu objektů `Address`. Třída" +" AddressViewSet umožňuje operace CRUD, filtrování a vlastní akce související" +" s entitami adres. Obsahuje specializované chování pro různé metody HTTP, " "přepisování serializátoru a zpracování oprávnění na základě kontextu " "požadavku." @@ -3263,6 +3294,5 @@ msgstr "" "Zpracovává operace související se značkami produktů v rámci aplikace. Tato " "třída poskytuje funkce pro načítání, filtrování a serializaci objektů " "Product Tag. Podporuje flexibilní filtrování podle konkrétních atributů " -"pomocí zadaného filtru backend a dynamicky používá různé serializátory podle " -"prováděné akce." - +"pomocí zadaného filtru backend a dynamicky používá různé serializátory podle" +" prováděné akce." diff --git a/engine/core/locale/da_DK/LC_MESSAGES/django.mo b/engine/core/locale/da_DK/LC_MESSAGES/django.mo index 57c49ac13956116089ce8436ef8fcad41c26df57..170038a05089ad13d74efafc6bc119024079a637 100644 GIT binary patch delta 14925 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 HSnK})P}5Tt delta 13829 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 CM9^pe diff --git a/engine/core/locale/da_DK/LC_MESSAGES/django.po b/engine/core/locale/da_DK/LC_MESSAGES/django.po index ac819893..d2b4879b 100644 --- a/engine/core/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/core/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "Er aktiv" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Hvis det er sat til false, kan dette objekt ikke ses af brugere uden den " "nødvendige tilladelse." @@ -154,7 +155,8 @@ msgstr "Leveret" msgid "canceled" msgstr "Annulleret" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Mislykket" @@ -182,44 +184,60 @@ msgstr "Momental" msgid "successful" msgstr "Succesfuld" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI-skema i valgt format med valgt sprog" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3-skema for denne API. Format kan vælges via indholdsforhandling. " +"Sprog kan vælges med både Accept-Language og query parameter." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache-I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Anvend kun en nøgle til at læse tilladte data fra cachen.\n" -"Anvend nøgle, data og timeout med autentificering for at skrive data til " -"cachen." +"Anvend nøgle, data og timeout med autentificering for at skrive data til cachen." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Få en liste over understøttede sprog" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Hent applikationens eksponerbare parametre" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Send en besked til supportteamet" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Anmod om en CORSed URL. Kun https er tilladt." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Søg mellem produkter, kategorier og mærker" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Globalt søgepunkt til at søge på tværs af projektets tabeller" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Køb en ordre som virksomhed" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -227,218 +245,226 @@ msgstr "" "Køb en ordre som en virksomhed ved hjælp af de angivne `produkter` med " "`produkt_uuid` og `attributter`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "Download et digitalt aktiv fra en købt digital ordre" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Liste over alle attributgrupper (simpel visning)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Hent en enkelt attributgruppe (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Opret en attributgruppe" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Slet en attributgruppe" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Omskriv en eksisterende attributgruppe, der gemmer ikke-redigerbare " "attributter" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Opret en attribut" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Slet en attribut" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Liste over alle attributværdier (simpel visning)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Hent en enkelt attributværdi (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Opret en attributværdi" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Slet en attributværdi" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare " -"felter" +"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare" +" felter" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Kategori UUID eller slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Opret en kategori" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Slet en kategori" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO-meta-snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Returnerer et øjebliksbillede af kategoriens SEO-metadata" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." -msgstr "For ikke-ansatte brugere er det kun deres egne ordrer, der returneres." +msgstr "" +"For ikke-ansatte brugere er det kun deres egne ordrer, der returneres." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Substringsøgning uden brug af store og små bogstaver på tværs af " -"human_readable_id, order_products.product.name og order_products.product." -"partnumber" +"human_readable_id, order_products.product.name og " +"order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrer ordrer med buy_time >= denne ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrer ordrer med buy_time <= denne ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrer efter nøjagtig ordre-UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrer efter nøjagtigt menneskeligt læsbart ordre-ID" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filtrer efter brugerens e-mail (case-insensitive exact match)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrer efter brugerens UUID" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filtrer efter ordrestatus (case-insensitive substring match)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Bestil efter en af: uuid, human_readable_id, user_email, user, status, " -"created, modified, buy_time, random. Præfiks med '-' for faldende rækkefølge " -"(f.eks. '-buy_time')." +"created, modified, buy_time, random. Præfiks med '-' for faldende rækkefølge" +" (f.eks. '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Hent en enkelt kategori (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Bestil UUID eller menneskeligt læsbart id" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Opret en attribut" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Slet en attribut" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Omskriv en eksisterende kategori, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Købspris på bestillingstidspunktet" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -448,19 +474,27 @@ msgstr "" "ved hjælp af brugerens saldo; hvis `force_payment` bruges, igangsættes en " "transaktion." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "Hent en brugers aktuelle afventende ordre" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "henter en aktuel afventende ordre fra en autentificeret bruger" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "Køb en ordre uden at oprette en konto" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "afslutter ordrekøbet for en ikke-registreret bruger." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Tilføj et produkt til ordren" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -468,11 +502,11 @@ msgstr "" "Tilføjer et produkt til en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -480,11 +514,11 @@ msgstr "" "Tilføjer en liste af produkter til en ordre ved hjælp af de angivne " "`product_uuid` og `attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Fjern et produkt fra ordren" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -492,11 +526,11 @@ msgstr "" "Fjerner et produkt fra en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Fjern et produkt fra ordren, mængderne tæller ikke med" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -504,442 +538,435 @@ msgstr "" "Fjerner en liste af produkter fra en ordre ved hjælp af de angivne " "`product_uuid` og `attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "For ikke-ansatte brugere er det kun deres egne ønskelister, der returneres." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Opret en attribut" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Slet en attribut" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "Hent en brugers aktuelle ventende ønskeliste" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "henter en aktuel afventende ønskeliste for en autentificeret bruger" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Tilføj et produkt til ordren" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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`." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Fjern et produkt fra ønskelisten" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -"Fjerner et produkt fra en ønskeliste ved hjælp af den angivne `product_uuid`." +"Fjerner et produkt fra en ønskeliste ved hjælp af den angivne " +"`product_uuid`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Tilføj mange produkter til ønskelisten" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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`." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Fjern et produkt fra ordren" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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`." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrer efter et eller flere attributnavn/værdipar. \n" "- **Syntaks**: `attr_name=method-value[;attr2=method2-value2]...`.\n" -"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), " -"`true`/`false` for booleans, heltal, floats; ellers behandles de som " -"strenge. \n" -"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå " -"værdi. \n" +"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), `true`/`false` for booleans, heltal, floats; ellers behandles de som strenge. \n" +"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå værdi. \n" "Eksempler på dette: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(præcis) Produkt-UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` " -"for faldende. \n" +"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` for faldende. \n" "**Tilladt:** uuid, vurdering, navn, slug, oprettet, ændret, pris, tilfældig" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Opret et produkt" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Slet et produkt" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "viser alle tilladte tilbagemeldinger for et produkt" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Returnerer et øjebliksbillede af produktets SEO-metadata" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Angiv alle adresser" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Hent en enkelt adresse" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Opret en ny adresse" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Slet en adresse" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Opdater en hel adresse" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Delvis opdatering af en adresse" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Automatisk udfyldning af adresseinput" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrænser mængden af resultater, 1 < grænse < 10, standard: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "Vis alle tilbagemeldinger (enkel visning)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "Hent en enkelt feedback (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "skab en feedback" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "Slet en tilbagemelding" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "omskriv en eksisterende feedback, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "liste alle ordre-produkt-relationer (simpel visning)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "Hent en enkelt ordre-produkt-relation (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "Opret en ny ordre-produkt-relation" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "erstatte en eksisterende ordre-produkt-relation" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "delvist opdatere en eksisterende ordre-produkt-relation" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "slette en ordre-produkt-relation" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "tilføje eller fjerne feedback på en ordre-produkt-relation" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Liste over alle mærker (enkel visning)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Hent et enkelt mærke (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Brand UUID eller slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Skab et brand" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Slet et brand" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Omskrivning af et eksisterende brand, der gemmer non-editables" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO-meta-snapshot for brand" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Liste over alle leverandører (enkel visning)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Hent en enkelt leverandør (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Opret en leverandør" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Slet en leverandør" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Omskriv en eksisterende leverandør, der gemmer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Vis alle produktbilleder (enkel visning)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Hent et enkelt produktbillede (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Skab et produktbillede" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Slet et produktbillede" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Omskriv et eksisterende produktbillede og gem ikke-redigerbare elementer" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Liste over alle kampagnekoder (enkel visning)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Hent en enkelt kampagnekode (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Opret en kampagnekode" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Slet en kampagnekode" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Omskriv en eksisterende kampagnekode og gem ikke-redigerbare koder" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Liste over alle kampagner (enkel visning)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Hent en enkelt forfremmelse (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Opret en kampagne" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Slet en forfremmelse" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Omskriv en eksisterende kampagne og gem ikke-redigerbare elementer" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Liste over alle aktier (enkel visning)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Hent et enkelt lager (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Opret en lagerpost" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Slet en lagerpost" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "Omskriv en eksisterende lagerpost og gem ikke-redigerbare varer" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " "felter" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Liste over alle produkttags (enkel visning)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Hent et enkelt produkttag (detaljeret visning)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Opret et produkttag" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Slet et produkttag" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Omskriv et eksisterende produkttag og gem ikke-redigerbare ting" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende kategori og gem ikke-redigerbare " @@ -1094,7 +1121,7 @@ msgstr "Cachelagrede data" msgid "camelized JSON data from the requested URL" msgstr "Cameliserede JSON-data fra den ønskede URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Kun URL'er, der starter med http(s)://, er tilladt." @@ -1178,11 +1205,11 @@ msgstr "Køb en ordre" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Send venligst attributterne som en streng formateret som attr1=værdi1," -"attr2=værdi2" +"Send venligst attributterne som en streng formateret som " +"attr1=værdi1,attr2=værdi2" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1254,10 +1281,12 @@ msgstr "Markup-procentdel" #: engine/core/graphene/object_types.py:200 msgid "which attributes and values can be used for filtering this category." msgstr "" -"Hvilke attributter og værdier, der kan bruges til at filtrere denne kategori." +"Hvilke attributter og værdier, der kan bruges til at filtrere denne " +"kategori." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimums- og maksimumspriser for produkter i denne kategori, hvis de er " "tilgængelige." @@ -1565,12 +1594,12 @@ msgid "" msgstr "" "Repræsenterer en vendor-enhed, der er i stand til at lagre oplysninger om " "eksterne leverandører og deres interaktionskrav. Vendor-klassen bruges til " -"at definere og administrere oplysninger om en ekstern leverandør. Den gemmer " -"leverandørens navn, godkendelsesoplysninger, der kræves til kommunikation, " +"at definere og administrere oplysninger om en ekstern leverandør. Den gemmer" +" leverandørens navn, godkendelsesoplysninger, der kræves til kommunikation, " "og den procentvise markering, der anvendes på produkter, der hentes fra " "leverandøren. Denne model vedligeholder også yderligere metadata og " -"begrænsninger, hvilket gør den velegnet til brug i systemer, der interagerer " -"med tredjepartsleverandører." +"begrænsninger, hvilket gør den velegnet til brug i systemer, der interagerer" +" med tredjepartsleverandører." #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" @@ -1626,8 +1655,8 @@ msgstr "" "identificere produkter. ProductTag-klassen er designet til entydigt at " "identificere og klassificere produkter gennem en kombination af en intern " "tag-identifikator og et brugervenligt visningsnavn. Den understøtter " -"operationer, der eksporteres gennem mixins, og giver mulighed for tilpasning " -"af metadata til administrative formål." +"operationer, der eksporteres gennem mixins, og giver mulighed for tilpasning" +" af metadata til administrative formål." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1686,9 +1715,9 @@ msgstr "" "Klassen indeholder felter til metadata og visuel repræsentation, som " "fungerer som et fundament for kategorirelaterede funktioner. Denne klasse " "bruges typisk til at definere og administrere produktkategorier eller andre " -"lignende grupperinger i en applikation, så brugere eller administratorer kan " -"angive navn, beskrivelse og hierarki for kategorier samt tildele attributter " -"som billeder, tags eller prioritet." +"lignende grupperinger i en applikation, så brugere eller administratorer kan" +" angive navn, beskrivelse og hierarki for kategorier samt tildele " +"attributter som billeder, tags eller prioritet." #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1739,12 +1768,13 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Repræsenterer et brand-objekt i systemet. Denne klasse håndterer oplysninger " -"og attributter relateret til et brand, herunder dets navn, logoer, " -"beskrivelse, tilknyttede kategorier, en unik slug og prioriteret rækkefølge. " -"Den gør det muligt at organisere og repræsentere brand-relaterede data i " +"Repræsenterer et brand-objekt i systemet. Denne klasse håndterer oplysninger" +" og attributter relateret til et brand, herunder dets navn, logoer, " +"beskrivelse, tilknyttede kategorier, en unik slug og prioriteret rækkefølge." +" Den gør det muligt at organisere og repræsentere brand-relaterede data i " "applikationen." #: engine/core/models.py:448 @@ -1789,8 +1819,8 @@ msgstr "Kategorier" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1798,8 +1828,8 @@ msgid "" msgstr "" "Repræsenterer lageret af et produkt, der administreres i systemet. Denne " "klasse giver detaljer om forholdet mellem leverandører, produkter og deres " -"lageroplysninger samt lagerrelaterede egenskaber som pris, købspris, mængde, " -"SKU og digitale aktiver. Den er en del af lagerstyringssystemet for at " +"lageroplysninger samt lagerrelaterede egenskaber som pris, købspris, mængde," +" SKU og digitale aktiver. Den er en del af lagerstyringssystemet for at " "muliggøre sporing og evaluering af produkter, der er tilgængelige fra " "forskellige leverandører." @@ -1884,8 +1914,8 @@ msgstr "" "egenskaber til at hente vurderinger, antal tilbagemeldinger, pris, antal og " "samlede ordrer. Designet til brug i et system, der håndterer e-handel eller " "lagerstyring. Denne klasse interagerer med relaterede modeller (såsom " -"Category, Brand og ProductTag) og administrerer caching for hyppigt anvendte " -"egenskaber for at forbedre ydeevnen. Den bruges til at definere og " +"Category, Brand og ProductTag) og administrerer caching for hyppigt anvendte" +" egenskaber for at forbedre ydeevnen. Den bruges til at definere og " "manipulere produktdata og tilhørende oplysninger i en applikation." #: engine/core/models.py:585 @@ -1941,13 +1971,13 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Repræsenterer en attribut i systemet. Denne klasse bruges til at definere og " -"administrere attributter, som er data, der kan tilpasses, og som kan knyttes " -"til andre enheder. Attributter har tilknyttede kategorier, grupper, " +"Repræsenterer en attribut i systemet. Denne klasse bruges til at definere og" +" administrere attributter, som er data, der kan tilpasses, og som kan " +"knyttes til andre enheder. Attributter har tilknyttede kategorier, grupper, " "værdityper og navne. Modellen understøtter flere typer værdier, herunder " "string, integer, float, boolean, array og object. Det giver mulighed for " "dynamisk og fleksibel datastrukturering." @@ -2003,7 +2033,8 @@ msgstr "er filtrerbar" #: engine/core/models.py:759 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -"Hvilke attributter og værdier, der kan bruges til at filtrere denne kategori." +"Hvilke attributter og værdier, der kan bruges til at filtrere denne " +"kategori." #: engine/core/models.py:771 engine/core/models.py:789 #: engine/core/templates/digital_order_delivered_email.html:134 @@ -2012,9 +2043,9 @@ msgstr "Attribut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Repræsenterer en specifik værdi for en attribut, der er knyttet til et " "produkt. Den forbinder 'attributten' med en unik 'værdi', hvilket giver " @@ -2036,8 +2067,8 @@ msgstr "Den specifikke værdi for denne attribut" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2085,8 +2116,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Repræsenterer en reklamekampagne for produkter med rabat. Denne klasse " "bruges til at definere og administrere kampagner, der tilbyder en " @@ -2162,8 +2193,8 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Repræsenterer en dokumentarisk post, der er knyttet til et produkt. Denne " "klasse bruges til at gemme oplysninger om dokumentarfilm relateret til " @@ -2186,14 +2217,14 @@ msgstr "Uafklaret" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Repræsenterer en adresseenhed, der indeholder placeringsoplysninger og " "tilknytninger til en bruger. Indeholder funktionalitet til lagring af " @@ -2268,9 +2299,9 @@ msgid "" msgstr "" "Repræsenterer en kampagnekode, der kan bruges til rabatter, og styrer dens " "gyldighed, rabattype og anvendelse. PromoCode-klassen gemmer oplysninger om " -"en kampagnekode, herunder dens unikke identifikator, rabattegenskaber (beløb " -"eller procent), gyldighedsperiode, tilknyttet bruger (hvis nogen) og status " -"for dens brug. Den indeholder funktionalitet til at validere og anvende " +"en kampagnekode, herunder dens unikke identifikator, rabattegenskaber (beløb" +" eller procent), gyldighedsperiode, tilknyttet bruger (hvis nogen) og status" +" for dens brug. Den indeholder funktionalitet til at validere og anvende " "kampagnekoden på en ordre og samtidig sikre, at begrænsningerne er opfyldt." #: engine/core/models.py:1087 @@ -2359,8 +2390,8 @@ msgstr "Ugyldig rabattype for promokode {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2368,8 +2399,8 @@ msgstr "" "ordre i applikationen, herunder dens forskellige attributter såsom " "fakturerings- og forsendelsesoplysninger, status, tilknyttet bruger, " "notifikationer og relaterede operationer. Ordrer kan have tilknyttede " -"produkter, kampagner kan anvendes, adresser kan indstilles, og forsendelses- " -"eller faktureringsoplysninger kan opdateres. Ligeledes understøtter " +"produkter, kampagner kan anvendes, adresser kan indstilles, og forsendelses-" +" eller faktureringsoplysninger kan opdateres. Ligeledes understøtter " "funktionaliteten håndtering af produkterne i ordrens livscyklus." #: engine/core/models.py:1213 @@ -2403,8 +2434,8 @@ msgstr "Bestillingsstatus" #: engine/core/models.py:1243 engine/core/models.py:1769 msgid "json structure of notifications to display to users" msgstr "" -"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges " -"tabelvisningen" +"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" +" tabelvisningen" #: engine/core/models.py:1249 msgid "json representation of order attributes for this order" @@ -2458,7 +2489,8 @@ msgstr "Du kan ikke tilføje flere produkter, end der er på lager" #: engine/core/models.py:1428 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre." +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." #: engine/core/models.py:1416 #, python-brace-format @@ -2492,7 +2524,8 @@ msgstr "Du kan ikke købe en tom ordre!" #: engine/core/models.py:1522 msgid "you cannot buy an order without a user" msgstr "" -"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre." +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." #: engine/core/models.py:1536 msgid "a user without a balance cannot buy with balance" @@ -2541,9 +2574,11 @@ msgid "feedback comments" msgstr "Kommentarer til feedback" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Henviser til det specifikke produkt i en ordre, som denne feedback handler om" +"Henviser til det specifikke produkt i en ordre, som denne feedback handler " +"om" #: engine/core/models.py:1720 msgid "related order product" @@ -2570,8 +2605,8 @@ msgid "" "Product models and stores a reference to them." msgstr "" "Repræsenterer produkter forbundet med ordrer og deres attributter. " -"OrderProduct-modellen vedligeholder oplysninger om et produkt, der er en del " -"af en ordre, herunder detaljer som købspris, antal, produktattributter og " +"OrderProduct-modellen vedligeholder oplysninger om et produkt, der er en del" +" af en ordre, herunder detaljer som købspris, antal, produktattributter og " "status. Den administrerer notifikationer til brugeren og administratorer og " "håndterer operationer som f.eks. at returnere produktsaldoen eller tilføje " "feedback. Modellen indeholder også metoder og egenskaber, der understøtter " @@ -2647,7 +2682,8 @@ msgstr "Forkert handling angivet for feedback: {action}!" #: engine/core/models.py:1888 msgid "you cannot feedback an order which is not received" msgstr "" -"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre." +"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende " +"ordre." #: engine/core/models.py:1894 msgid "name" @@ -2686,9 +2722,9 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Repræsenterer downloadfunktionen for digitale aktiver, der er forbundet med " "ordrer. DigitalAssetDownload-klassen giver mulighed for at administrere og " @@ -2754,8 +2790,7 @@ msgstr "Hej %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Tak for din ordre #%(order.pk)s! Vi er glade for at kunne informere dig om, " @@ -2869,8 +2904,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Tak for din bestilling! Vi er glade for at kunne bekræfte dit køb. Nedenfor " @@ -2941,9 +2975,10 @@ msgstr "Parameteren NOMINATIM_URL skal være konfigureret!" #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} pixels." +"Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} " +"pixels." -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2951,7 +2986,7 @@ msgstr "" "Håndterer anmodningen om sitemap-indekset og returnerer et XML-svar. Den " "sikrer, at svaret indeholder den passende indholdstypeheader for XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2961,17 +2996,17 @@ msgstr "" "behandler anmodningen, henter det relevante sitemap-detaljesvar og " "indstiller Content-Type-headeren til XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnerer en liste over understøttede sprog og de tilhørende oplysninger." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer hjemmesidens parametre som et JSON-objekt." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2979,11 +3014,11 @@ msgstr "" "Håndterer cache-operationer som f.eks. læsning og indstilling af cachedata " "med en specificeret nøgle og timeout." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Håndterer indsendelser af `kontakt os`-formularer." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2991,62 +3026,58 @@ msgstr "" "Håndterer anmodninger om behandling og validering af URL'er fra indgående " "POST-anmodninger." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Håndterer globale søgeforespørgsler." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Håndterer logikken i at købe som en virksomhed uden registrering." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Håndterer download af et digitalt aktiv, der er knyttet til en ordre.\n" -"Denne funktion forsøger at betjene den digitale aktivfil, der ligger i " -"projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som " -"tegn på, at ressourcen ikke er tilgængelig." +"Denne funktion forsøger at betjene den digitale aktivfil, der ligger i projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som tegn på, at ressourcen ikke er tilgængelig." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrævet" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "Bestil produkt findes ikke" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Du kan kun downloade det digitale aktiv én gang" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "Ordren skal betales, før det digitale aktiv downloades." -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "Favicon ikke fundet" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Håndterer anmodninger om et websteds favicon.\n" -"Denne funktion forsøger at servere favicon-filen, der ligger i projektets " -"statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for " -"at angive, at ressourcen ikke er tilgængelig." +"Denne funktion forsøger at servere favicon-filen, der ligger i projektets statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for at angive, at ressourcen ikke er tilgængelig." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Omdirigerer anmodningen til administratorens indeksside. Funktionen " @@ -3054,7 +3085,7 @@ msgstr "" "administratorinterfacets indeksside. Den bruger Djangos `redirect`-funktion " "til at håndtere HTTP-omdirigeringen." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Returnerer den aktuelle version af eVibes." @@ -3074,10 +3105,11 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Repræsenterer et visningssæt til håndtering af AttributeGroup-objekter. " "Håndterer operationer relateret til AttributeGroup, herunder filtrering, " @@ -3106,11 +3138,11 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Et visningssæt til håndtering af AttributeValue-objekter. Dette viewet giver " -"funktionalitet til at liste, hente, oprette, opdatere og slette " +"Et visningssæt til håndtering af AttributeValue-objekter. Dette viewet giver" +" funktionalitet til at liste, hente, oprette, opdatere og slette " "AttributeValue-objekter. Det integreres med Django REST Framework's viewset-" "mekanismer og bruger passende serializers til forskellige handlinger. " "Filtreringsfunktioner leveres gennem DjangoFilterBackend." @@ -3136,8 +3168,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"Repræsenterer et visningssæt til håndtering af Brand-instanser. Denne klasse " -"giver funktionalitet til at forespørge, filtrere og serialisere Brand-" +"Repræsenterer et visningssæt til håndtering af Brand-instanser. Denne klasse" +" giver funktionalitet til at forespørge, filtrere og serialisere Brand-" "objekter. Den bruger Djangos ViewSet-rammeværk til at forenkle " "implementeringen af API-slutpunkter for Brand-objekter." @@ -3154,9 +3186,9 @@ msgstr "" "Håndterer operationer relateret til `Product`-modellen i systemet. Denne " "klasse giver et visningssæt til håndtering af produkter, herunder deres " "filtrering, serialisering og operationer på specifikke forekomster. Den " -"udvider fra `EvibesViewSet` for at bruge fælles funktionalitet og integrerer " -"med Django REST-frameworket til RESTful API-operationer. Indeholder metoder " -"til at hente produktoplysninger, anvende tilladelser og få adgang til " +"udvider fra `EvibesViewSet` for at bruge fælles funktionalitet og integrerer" +" med Django REST-frameworket til RESTful API-operationer. Indeholder metoder" +" til at hente produktoplysninger, anvende tilladelser og få adgang til " "relateret feedback om et produkt." #: engine/core/viewsets.py:568 @@ -3167,9 +3199,9 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Repræsenterer et visningssæt til håndtering af Vendor-objekter. Dette viewet " -"gør det muligt at hente, filtrere og serialisere Vendor-data. Det definerer " -"queryset, filterkonfigurationer og serializer-klasser, der bruges til at " +"Repræsenterer et visningssæt til håndtering af Vendor-objekter. Dette viewet" +" gør det muligt at hente, filtrere og serialisere Vendor-data. Det definerer" +" queryset, filterkonfigurationer og serializer-klasser, der bruges til at " "håndtere forskellige handlinger. Formålet med denne klasse er at give " "strømlinet adgang til Vendor-relaterede ressourcer gennem Django REST-" "frameworket." @@ -3179,16 +3211,16 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Repræsentation af et visningssæt, der håndterer feedback-objekter. Denne " -"klasse håndterer handlinger relateret til feedback-objekter, herunder liste, " -"filtrering og hentning af detaljer. Formålet med dette visningssæt er at " +"klasse håndterer handlinger relateret til feedback-objekter, herunder liste," +" filtrering og hentning af detaljer. Formålet med dette visningssæt er at " "levere forskellige serializers til forskellige handlinger og implementere " -"tilladelsesbaseret håndtering af tilgængelige feedback-objekter. Det udvider " -"basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at " +"tilladelsesbaseret håndtering af tilgængelige feedback-objekter. Det udvider" +" basen `EvibesViewSet` og gør brug af Djangos filtreringssystem til at " "forespørge på data." #: engine/core/viewsets.py:615 @@ -3196,14 +3228,14 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet til håndtering af ordrer og relaterede operationer. Denne klasse " -"indeholder funktionalitet til at hente, ændre og administrere ordreobjekter. " -"Den indeholder forskellige endpoints til håndtering af ordreoperationer " +"indeholder funktionalitet til at hente, ændre og administrere ordreobjekter." +" Den indeholder forskellige endpoints til håndtering af ordreoperationer " "såsom tilføjelse eller fjernelse af produkter, udførelse af køb for " "registrerede såvel som uregistrerede brugere og hentning af den aktuelle " "godkendte brugers afventende ordrer. ViewSet bruger flere serializers " @@ -3214,13 +3246,13 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Indeholder et visningssæt til håndtering af OrderProduct-enheder. Dette " -"visningssæt muliggør CRUD-operationer og brugerdefinerede handlinger, der er " -"specifikke for OrderProduct-modellen. Det omfatter filtrering, kontrol af " +"visningssæt muliggør CRUD-operationer og brugerdefinerede handlinger, der er" +" specifikke for OrderProduct-modellen. Det omfatter filtrering, kontrol af " "tilladelser og skift af serializer baseret på den ønskede handling. " "Derudover indeholder det en detaljeret handling til håndtering af feedback " "på OrderProduct-instanser." @@ -3249,8 +3281,8 @@ msgstr "Håndterer operationer relateret til lagerdata i systemet." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3271,11 +3303,11 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Denne klasse giver viewset-funktionalitet til håndtering af `Address`-" -"objekter. AddressViewSet-klassen muliggør CRUD-operationer, filtrering og " -"brugerdefinerede handlinger relateret til adresseenheder. Den omfatter " -"specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse af " -"serializer og håndtering af tilladelser baseret på anmodningskonteksten." +"Denne klasse giver viewset-funktionalitet til håndtering af " +"`Address`-objekter. AddressViewSet-klassen muliggør CRUD-operationer, " +"filtrering og brugerdefinerede handlinger relateret til adresseenheder. Den " +"omfatter specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse " +"af serializer og håndtering af tilladelser baseret på anmodningskonteksten." #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3295,4 +3327,3 @@ msgstr "" "Tag-objekter. Den understøtter fleksibel filtrering på specifikke " "attributter ved hjælp af den angivne filterbackend og bruger dynamisk " "forskellige serializers baseret på den handling, der udføres." - diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.mo b/engine/core/locale/de_DE/LC_MESSAGES/django.mo index f5ab95605b25770544a2d7e90b737a3a9e7d0e51..7a6fc8d62dbaa3bdddad138f1ea495a94ebd8fb3 100644 GIT binary patch delta 15032 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 delta 13849 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 RrazzPi`qLn(YGw*e*lbe{MP^g diff --git a/engine/core/locale/de_DE/LC_MESSAGES/django.po b/engine/core/locale/de_DE/LC_MESSAGES/django.po index c0a50f63..cb186846 100644 --- a/engine/core/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/core/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Ist aktiv" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Wenn auf false gesetzt, kann dieses Objekt von Benutzern ohne die " "erforderliche Berechtigung nicht gesehen werden." @@ -156,7 +157,8 @@ msgstr "Geliefert" msgid "canceled" msgstr "Abgesagt" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Gescheitert" @@ -184,45 +186,61 @@ msgstr "Momente" msgid "successful" msgstr "Erfolgreich" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI-Schema im ausgewählten Format mit ausgewählter Sprache" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3-Schema für diese API. Das Format kann über Content Negotiation " +"ausgewählt werden. Die Sprache kann sowohl mit Accept-Language als auch mit " +"Query-Parameter ausgewählt werden." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"Wenden Sie nur einen Schlüssel an, um erlaubte Daten aus dem Cache zu " -"lesen.\n" -"Schlüssel, Daten und Timeout mit Authentifizierung anwenden, um Daten in den " -"Cache zu schreiben." +"Wenden Sie nur einen Schlüssel an, um erlaubte Daten aus dem Cache zu lesen.\n" +"Schlüssel, Daten und Timeout mit Authentifizierung anwenden, um Daten in den Cache zu schreiben." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Abrufen der exponierbaren Parameter der Anwendung" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Senden Sie eine Nachricht an das Support-Team" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Fordern Sie eine CORS-gesicherte URL an. Nur https erlaubt." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Suche zwischen Produkten, Kategorien und Marken" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Globaler Suchendpunkt zur Abfrage aller Tabellen des Projekts" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Eine Bestellung als Unternehmen kaufen" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -230,228 +248,236 @@ msgstr "" "Kauf einer Bestellung als Unternehmen unter Verwendung der angegebenen " "\"Produkte\" mit \"product_uuid\" und \"Attributen\"." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "" +"ein digitales Asset aus einer erworbenen digitalen Bestellung herunterladen" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Alle Attributgruppen auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Abrufen einer einzelnen Attributgruppe (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Erstellen einer Attributgruppe" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Löschen einer Attributgruppe" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Umschreiben einer bestehenden Attributgruppe mit Speicherung von Nicht-" "Editierbarkeit" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Ein Attribut erstellen" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Ein Attribut löschen" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Alle Attributwerte auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Abrufen eines einzelnen Attributwertes (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Einen Attributwert erstellen" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Löschen eines Attributwertes" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributwerts mit Speicherung von Nicht-" "Editierbarkeit" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Kategorie UUID oder Slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Eine Kategorie erstellen" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Eine Kategorie löschen" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO-Meta-Schnappschuss" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Gibt einen Schnappschuss der SEO-Metadaten der Kategorie zurück" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Alle Kategorien auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur die eigenen Bestellungen zurückgeschickt." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Groß- und Kleinschreibung unempfindliche Teilstringsuche über " -"human_readable_id, order_products.product.name und order_products.product." -"partnumber" +"human_readable_id, order_products.product.name und " +"order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Aufträge mit Kaufzeitpunkt >= dieser ISO 8601-Datumszeit filtern" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Aufträge mit Kaufzeitpunkt <= dieser ISO 8601-Datumszeit filtern" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filter nach exakter UUID der Bestellung" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtern nach exakter, von Menschen lesbarer Bestell-ID" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filter nach der E-Mail des Benutzers (Groß-/Kleinschreibung nicht " "berücksichtigend, exakte Übereinstimmung)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filter nach der UUID des Benutzers" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filter nach Bestellstatus (Groß-/Kleinschreibung nicht berücksichtigende " "Teilstring-Übereinstimmung)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Sortierung nach einem von: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Präfix mit '-' für absteigend " "(z. B. '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Eine einzelne Kategorie abrufen (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Auftrag UUID oder menschenlesbare ID" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Ein Attribut erstellen" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Ein Attribut löschen" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -461,20 +487,31 @@ msgstr "" "wird der Kauf mit dem Guthaben des Benutzers abgeschlossen; bei Verwendung " "von \"force_payment\" wird eine Transaktion ausgelöst." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "Abruf der aktuellen offenen Bestellung eines Benutzers" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "" +"ruft eine aktuelle ausstehende Bestellung eines authentifizierten Benutzers " +"ab" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "" -"schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer ab." +"schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer " +"ab." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -482,13 +519,13 @@ msgstr "" "Fügt ein Produkt unter Verwendung der angegebenen `product_uuid` und " "`attributes` zu einer Bestellung hinzu." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" -"Fügen Sie eine Liste der zu bestellenden Produkte hinzu, Mengen werden nicht " -"gezählt" +"Fügen Sie eine Liste der zu bestellenden Produkte hinzu, Mengen werden nicht" +" gezählt" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -496,11 +533,11 @@ msgstr "" "Fügt einer Bestellung eine Liste von Produkten unter Verwendung der " "angegebenen `product_uuid` und `attributes` hinzu." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -508,12 +545,12 @@ msgstr "" "Entfernt ein Produkt aus einer Bestellung unter Verwendung der angegebenen " "`product_uuid` und `attributes`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" "Ein Produkt aus der Bestellung entfernen, die Mengen werden nicht gezählt" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -521,464 +558,457 @@ msgstr "" "Entfernt eine Liste von Produkten aus einer Bestellung unter Verwendung der " "angegebenen `product_uuid` und `attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur ihre eigenen Wunschlisten zurückgegeben." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Ein Attribut erstellen" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Ein Attribut löschen" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "Abruf der aktuellen Wunschliste eines Benutzers" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"ruft eine aktuelle ausstehende Wunschliste eines authentifizierten Benutzers" +" ab" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Ein Produkt von der Wunschliste entfernen" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Viele Produkte auf den Wunschzettel setzen" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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`." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtern Sie nach einem oder mehreren Attributnamen/Wertpaaren. \n" "- **Syntax**: `attr_name=Methode-Wert[;attr2=Methode2-Wert2]...`\n" -"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`\n" -"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts " -"übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten " -"als String behandelt. \n" -"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des " -"Rohwertes. \n" +"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten als String behandelt. \n" +"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des Rohwertes. \n" "Beispiele: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(genaue) Produkt-UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. " -"Präfix mit \"-\" für absteigend. \n" +"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. Präfix mit \"-\" für absteigend. \n" "**Erlaubt:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Ein Produkt erstellen" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer " -"Felder" +"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" +" Felder" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Einige Felder eines bestehenden Produkts aktualisieren, nicht editierbare " "Felder beibehalten" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Ein Produkt löschen" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "listet alle zulässigen Rückmeldungen für ein Produkt auf" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Gibt einen Schnappschuss der SEO-Metadaten des Produkts zurück" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Alle Adressen auflisten" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Eine einzelne Adresse abrufen" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Eine neue Adresse erstellen" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Eine Adresse löschen" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Eine ganze Adresse aktualisieren" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Teilweise Aktualisierung einer Adresse" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autovervollständigung der Adresseingabe" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"docker compose exec app poetry run python manage.py deepl_translate -l en-gb " -"-l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " -"it-it -l ja-jp -l kk-kz -l nl-nl -l pl -l pt-br -l ro-ro -l ru-ru -l zh-hans " -"-a core -a geo -a payments -a vibes_auth -a blog" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl -l pt-br -l ro-ro -l ru-ru -l zh-hans" +" -a core -a geo -a payments -a vibes_auth -a blog" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrenzt die Anzahl der Ergebnisse, 1 < Limit < 10, Standard: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "alle Rückmeldungen auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "eine einzelne Rückmeldung abrufen (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "ein Feedback erstellen" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "eine Rückmeldung löschen" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "alle Bestell-Produkt-Beziehungen auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "eine einzelne Auftrag-Produkt-Relation abrufen (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "eine neue Auftrag-Produkt-Beziehung erstellen" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "eine bestehende Auftrag-Produkt-Relation ersetzen" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "eine bestehende Auftrag-Produkt-Beziehung teilweise aktualisieren" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "eine Auftrag-Produkt-Beziehung löschen" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "" "Feedback zu einer Bestellung-Produkt-Beziehung hinzufügen oder entfernen" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Alle Marken auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Abrufen einer einzelnen Marke (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Marke UUID oder Slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Eine Marke schaffen" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Eine Marke löschen" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO-Meta-Momentaufnahme für die Marke" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Alle Lieferanten auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Abruf eines einzelnen Lieferanten (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Einen Verkäufer erstellen" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Einen Lieferanten löschen" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Alle Produktbilder auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Abrufen eines einzelnen Produktbildes (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Ein Produktbild erstellen" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Ein Produktbild löschen" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Alle Promo-Codes auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Einen einzelnen Promo-Code abrufen (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Einen Promo-Code erstellen" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Einen Promo-Code löschen" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Alle Aktionen auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Abrufen einer einzelnen Aktion (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Eine Werbeaktion erstellen" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Eine Aktion löschen" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Alle Bestände auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Abruf einer einzelnen Aktie (Detailansicht)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Einen Bestandssatz erstellen" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Löschen eines Bestandsdatensatzes" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Alle Produkt-Tags auflisten (einfache Ansicht)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Ein einzelnes Produkt-Tag abrufen (detaillierte Ansicht)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Ein Produkt-Tag erstellen" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Ein Produkt-Tag löschen" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Eine bestehende Kategorie umschreiben und dabei Nicht-Editierbares speichern" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: engine/core/elasticsearch/__init__.py:122 #: engine/core/elasticsearch/__init__.py:570 @@ -1061,8 +1091,8 @@ msgstr "SKU" #: engine/core/filters.py:184 msgid "there must be a category_uuid to use include_subcategories flag" msgstr "" -"Es muss eine category_uuid vorhanden sein, um das Flag include_subcategories " -"zu verwenden" +"Es muss eine category_uuid vorhanden sein, um das Flag include_subcategories" +" zu verwenden" #: engine/core/filters.py:353 msgid "Search (ID, product name or part number)" @@ -1130,7 +1160,7 @@ msgstr "Zwischengespeicherte Daten" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-Daten aus der angeforderten URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig" @@ -1181,7 +1211,8 @@ msgstr "Aktion muss entweder \"Hinzufügen\" oder \"Entfernen\" sein!" #: engine/core/graphene/mutations.py:294 msgid "perform an action on a list of products in the wishlist" -msgstr "Ausführen einer Aktion für eine Liste von Produkten in der Wunschliste" +msgstr "" +"Ausführen einer Aktion für eine Liste von Produkten in der Wunschliste" #: engine/core/graphene/mutations.py:312 msgid "please provide wishlist_uuid value" @@ -1216,8 +1247,8 @@ msgstr "Eine Bestellung kaufen" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Bitte senden Sie die Attribute als String im Format attr1=wert1,attr2=wert2" @@ -1296,9 +1327,11 @@ msgstr "" "verwendet werden." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern verfügbar." +"Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern " +"verfügbar." #: engine/core/graphene/object_types.py:206 msgid "tags for this category" @@ -1568,11 +1601,11 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"Stellt eine Gruppe von Attributen dar, die hierarchisch aufgebaut sein kann. " -"Diese Klasse wird verwendet, um Attributgruppen zu verwalten und zu " +"Stellt eine Gruppe von Attributen dar, die hierarchisch aufgebaut sein kann." +" Diese Klasse wird verwendet, um Attributgruppen zu verwalten und zu " "organisieren. Eine Attributgruppe kann eine übergeordnete Gruppe haben, die " -"eine hierarchische Struktur bildet. Dies kann nützlich sein, um Attribute in " -"einem komplexen System effektiver zu kategorisieren und zu verwalten." +"eine hierarchische Struktur bildet. Dies kann nützlich sein, um Attribute in" +" einem komplexen System effektiver zu kategorisieren und zu verwalten." #: engine/core/models.py:91 msgid "parent of this group" @@ -1602,9 +1635,9 @@ msgid "" msgstr "" "Stellt eine Verkäuferentität dar, die Informationen über externe Verkäufer " "und deren Interaktionsanforderungen speichern kann. Die Klasse Vendor wird " -"zur Definition und Verwaltung von Informationen über einen externen Anbieter " -"verwendet. Sie speichert den Namen des Anbieters, die für die Kommunikation " -"erforderlichen Authentifizierungsdaten und den prozentualen Aufschlag, der " +"zur Definition und Verwaltung von Informationen über einen externen Anbieter" +" verwendet. Sie speichert den Namen des Anbieters, die für die Kommunikation" +" erforderlichen Authentifizierungsdaten und den prozentualen Aufschlag, der " "auf die vom Anbieter abgerufenen Produkte angewendet wird. Dieses Modell " "verwaltet auch zusätzliche Metadaten und Einschränkungen, wodurch es sich " "für die Verwendung in Systemen eignet, die mit Drittanbietern interagieren." @@ -1661,10 +1694,10 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"Stellt ein Produkt-Tag dar, das zur Klassifizierung oder Identifizierung von " -"Produkten verwendet wird. Die Klasse ProductTag dient der eindeutigen " -"Identifizierung und Klassifizierung von Produkten durch eine Kombination aus " -"einem internen Tag-Bezeichner und einem benutzerfreundlichen Anzeigenamen. " +"Stellt ein Produkt-Tag dar, das zur Klassifizierung oder Identifizierung von" +" Produkten verwendet wird. Die Klasse ProductTag dient der eindeutigen " +"Identifizierung und Klassifizierung von Produkten durch eine Kombination aus" +" einem internen Tag-Bezeichner und einem benutzerfreundlichen Anzeigenamen. " "Sie unterstützt Operationen, die über Mixins exportiert werden, und " "ermöglicht die Anpassung von Metadaten für Verwaltungszwecke." @@ -1725,9 +1758,9 @@ msgstr "" "Beziehungen unterstützen. Die Klasse enthält Felder für Metadaten und " "visuelle Darstellung, die als Grundlage für kategoriebezogene Funktionen " "dienen. Diese Klasse wird in der Regel verwendet, um Produktkategorien oder " -"andere ähnliche Gruppierungen innerhalb einer Anwendung zu definieren und zu " -"verwalten. Sie ermöglicht es Benutzern oder Administratoren, den Namen, die " -"Beschreibung und die Hierarchie von Kategorien festzulegen sowie Attribute " +"andere ähnliche Gruppierungen innerhalb einer Anwendung zu definieren und zu" +" verwalten. Sie ermöglicht es Benutzern oder Administratoren, den Namen, die" +" Beschreibung und die Hierarchie von Kategorien festzulegen sowie Attribute " "wie Bilder, Tags oder Priorität zuzuweisen." #: engine/core/models.py:274 @@ -1781,7 +1814,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Stellt ein Markenobjekt im System dar. Diese Klasse verwaltet Informationen " "und Attribute in Bezug auf eine Marke, einschließlich ihres Namens, Logos, " @@ -1832,16 +1866,16 @@ msgstr "Kategorien" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" "Stellt den Bestand eines im System verwalteten Produkts dar. Diese Klasse " -"liefert Details über die Beziehung zwischen Lieferanten, Produkten und deren " -"Bestandsinformationen sowie bestandsbezogene Eigenschaften wie Preis, " +"liefert Details über die Beziehung zwischen Lieferanten, Produkten und deren" +" Bestandsinformationen sowie bestandsbezogene Eigenschaften wie Preis, " "Einkaufspreis, Menge, SKU und digitale Assets. Sie ist Teil des " "Bestandsverwaltungssystems, um die Nachverfolgung und Bewertung der von " "verschiedenen Anbietern verfügbaren Produkte zu ermöglichen." @@ -1897,7 +1931,8 @@ msgstr "SKU des Verkäufers" #: engine/core/models.py:556 msgid "digital file associated with this stock if applicable" -msgstr "Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" +msgstr "" +"Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend" #: engine/core/models.py:557 msgid "digital file" @@ -1925,12 +1960,12 @@ msgstr "" "Stellt ein Produkt mit Attributen wie Kategorie, Marke, Tags, digitalem " "Status, Name, Beschreibung, Teilenummer und Slug dar. Bietet verwandte " "Hilfseigenschaften zum Abrufen von Bewertungen, Feedback-Zahlen, Preis, " -"Menge und Gesamtbestellungen. Konzipiert für die Verwendung in einem System, " -"das den elektronischen Handel oder die Bestandsverwaltung verwaltet. Diese " +"Menge und Gesamtbestellungen. Konzipiert für die Verwendung in einem System," +" das den elektronischen Handel oder die Bestandsverwaltung verwaltet. Diese " "Klasse interagiert mit verwandten Modellen (wie Category, Brand und " -"ProductTag) und verwaltet die Zwischenspeicherung von Eigenschaften, auf die " -"häufig zugegriffen wird, um die Leistung zu verbessern. Sie wird verwendet, " -"um Produktdaten und die damit verbundenen Informationen innerhalb einer " +"ProductTag) und verwaltet die Zwischenspeicherung von Eigenschaften, auf die" +" häufig zugegriffen wird, um die Leistung zu verbessern. Sie wird verwendet," +" um Produktdaten und die damit verbundenen Informationen innerhalb einer " "Anwendung zu definieren und zu manipulieren." #: engine/core/models.py:585 @@ -1955,7 +1990,8 @@ msgstr "Ist das Produkt digital" #: engine/core/models.py:612 msgid "provide a clear identifying name for the product" -msgstr "Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." +msgstr "" +"Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an." #: engine/core/models.py:613 msgid "product name" @@ -1986,12 +2022,12 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Stellt ein Attribut im System dar. Diese Klasse wird verwendet, um Attribute " -"zu definieren und zu verwalten. Dabei handelt es sich um anpassbare " +"Stellt ein Attribut im System dar. Diese Klasse wird verwendet, um Attribute" +" zu definieren und zu verwalten. Dabei handelt es sich um anpassbare " "Datenelemente, die mit anderen Entitäten verknüpft werden können. Attribute " "haben zugehörige Kategorien, Gruppen, Werttypen und Namen. Das Modell " "unterstützt mehrere Wertetypen, darunter String, Integer, Float, Boolean, " @@ -2059,9 +2095,9 @@ msgstr "Attribut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Stellt einen spezifischen Wert für ein Attribut dar, das mit einem Produkt " "verknüpft ist. Es verknüpft das \"Attribut\" mit einem eindeutigen \"Wert\" " @@ -2084,16 +2120,16 @@ msgstr "Der spezifische Wert für dieses Attribut" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Stellt ein Produktbild dar, das mit einem Produkt im System verbunden ist. " "Diese Klasse dient der Verwaltung von Bildern für Produkte, einschließlich " "der Funktionen zum Hochladen von Bilddateien, der Zuordnung zu bestimmten " -"Produkten und der Festlegung ihrer Anzeigereihenfolge. Sie enthält auch eine " -"Funktion zur Barrierefreiheit mit alternativem Text für die Bilder." +"Produkten und der Festlegung ihrer Anzeigereihenfolge. Sie enthält auch eine" +" Funktion zur Barrierefreiheit mit alternativem Text für die Bilder." #: engine/core/models.py:826 msgid "provide alternative text for the image for accessibility" @@ -2135,16 +2171,16 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Repräsentiert eine Werbekampagne für Produkte mit einem Rabatt. Diese Klasse " -"wird verwendet, um Werbekampagnen zu definieren und zu verwalten, die einen " -"prozentualen Rabatt für Produkte anbieten. Die Klasse enthält Attribute zum " -"Festlegen des Rabattsatzes, zum Bereitstellen von Details über die " +"Repräsentiert eine Werbekampagne für Produkte mit einem Rabatt. Diese Klasse" +" wird verwendet, um Werbekampagnen zu definieren und zu verwalten, die einen" +" prozentualen Rabatt für Produkte anbieten. Die Klasse enthält Attribute zum" +" Festlegen des Rabattsatzes, zum Bereitstellen von Details über die " "Werbeaktion und zum Verknüpfen der Aktion mit den entsprechenden Produkten. " -"Sie ist mit dem Produktkatalog integriert, um die betroffenen Artikel in der " -"Kampagne zu bestimmen." +"Sie ist mit dem Produktkatalog integriert, um die betroffenen Artikel in der" +" Kampagne zu bestimmen." #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2188,8 +2224,8 @@ msgstr "" "Stellt die Wunschliste eines Benutzers zum Speichern und Verwalten " "gewünschter Produkte dar. Die Klasse bietet Funktionen zur Verwaltung einer " "Sammlung von Produkten und unterstützt Vorgänge wie das Hinzufügen und " -"Entfernen von Produkten sowie das Hinzufügen und Entfernen mehrerer Produkte " -"gleichzeitig." +"Entfernen von Produkten sowie das Hinzufügen und Entfernen mehrerer Produkte" +" gleichzeitig." #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2213,15 +2249,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Stellt einen dokumentarischen Datensatz dar, der an ein Produkt gebunden " "ist. Diese Klasse wird verwendet, um Informationen über Dokumentationen zu " "bestimmten Produkten zu speichern, einschließlich Datei-Uploads und deren " "Metadaten. Sie enthält Methoden und Eigenschaften zur Handhabung des " -"Dateityps und des Speicherpfads für die Dokumentationsdateien. Sie erweitert " -"die Funktionalität von bestimmten Mixins und bietet zusätzliche " +"Dateityps und des Speicherpfads für die Dokumentationsdateien. Sie erweitert" +" die Funktionalität von bestimmten Mixins und bietet zusätzliche " "benutzerdefinierte Funktionen." #: engine/core/models.py:998 @@ -2238,14 +2274,14 @@ msgstr "Ungelöst" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Stellt eine Adresseinheit dar, die Standortdetails und Assoziationen mit " "einem Benutzer enthält. Bietet Funktionen für die Speicherung von " @@ -2340,7 +2376,8 @@ msgstr "Kennung des Promo-Codes" #: engine/core/models.py:1095 msgid "fixed discount amount applied if percent is not used" msgstr "" -"Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet wird" +"Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet " +"wird" #: engine/core/models.py:1096 msgid "fixed discount amount" @@ -2417,8 +2454,8 @@ msgstr "Ungültiger Rabatttyp für den Promocode {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2592,8 +2629,8 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Verwaltet Benutzerfeedback für Produkte. Diese Klasse dient der Erfassung " -"und Speicherung von Benutzerfeedback für bestimmte Produkte, die sie gekauft " -"haben. Sie enthält Attribute zum Speichern von Benutzerkommentaren, einen " +"und Speicherung von Benutzerfeedback für bestimmte Produkte, die sie gekauft" +" haben. Sie enthält Attribute zum Speichern von Benutzerkommentaren, einen " "Verweis auf das entsprechende Produkt in der Bestellung und eine vom " "Benutzer zugewiesene Bewertung. Die Klasse verwendet Datenbankfelder, um " "Feedbackdaten effektiv zu modellieren und zu verwalten." @@ -2607,10 +2644,11 @@ msgid "feedback comments" msgstr "Kommentare zum Feedback" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese " -"Rückmeldung bezieht" +"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese" +" Rückmeldung bezieht" #: engine/core/models.py:1720 msgid "related order product" @@ -2636,14 +2674,14 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"Stellt die mit Bestellungen verbundenen Produkte und ihre Attribute dar. Das " -"OrderProduct-Modell verwaltet Informationen über ein Produkt, das Teil einer " -"Bestellung ist, einschließlich Details wie Kaufpreis, Menge, " +"Stellt die mit Bestellungen verbundenen Produkte und ihre Attribute dar. Das" +" OrderProduct-Modell verwaltet Informationen über ein Produkt, das Teil " +"einer Bestellung ist, einschließlich Details wie Kaufpreis, Menge, " "Produktattribute und Status. Es verwaltet Benachrichtigungen für Benutzer " "und Administratoren und führt Vorgänge wie die Rückgabe des Produktsaldos " "oder das Hinzufügen von Feedback durch. Dieses Modell bietet auch Methoden " -"und Eigenschaften, die die Geschäftslogik unterstützen, z. B. die Berechnung " -"des Gesamtpreises oder die Generierung einer Download-URL für digitale " +"und Eigenschaften, die die Geschäftslogik unterstützen, z. B. die Berechnung" +" des Gesamtpreises oder die Generierung einer Download-URL für digitale " "Produkte. Das Modell ist mit den Modellen \"Order\" und \"Product\" " "integriert und speichert einen Verweis auf diese." @@ -2757,16 +2795,16 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Stellt die Download-Funktionalität für digitale Assets in Verbindung mit " "Bestellungen dar. Die Klasse DigitalAssetDownload ermöglicht die Verwaltung " "und den Zugriff auf Downloads im Zusammenhang mit Auftragsprodukten. Sie " "verwaltet Informationen über das zugehörige Auftragsprodukt, die Anzahl der " -"Downloads und ob das Asset öffentlich sichtbar ist. Sie enthält eine Methode " -"zur Generierung einer URL für das Herunterladen des Assets, wenn sich die " +"Downloads und ob das Asset öffentlich sichtbar ist. Sie enthält eine Methode" +" zur Generierung einer URL für das Herunterladen des Assets, wenn sich die " "zugehörige Bestellung in einem abgeschlossenen Status befindet." #: engine/core/models.py:1961 @@ -2825,8 +2863,7 @@ msgstr "Hallo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Vielen Dank für Ihre Bestellung #%(order.pk)s! Wir freuen uns, Ihnen " @@ -2941,8 +2978,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung! Wir freuen uns, Ihren Kauf zu bestätigen. " @@ -2979,7 +3015,8 @@ msgstr "Sowohl Daten als auch Timeout sind erforderlich" #: engine/core/utils/caching.py:46 msgid "invalid timeout value, it must be between 0 and 216000 seconds" -msgstr "Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen" +msgstr "" +"Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen" #: engine/core/utils/emailing.py:27 #, python-brace-format @@ -3016,7 +3053,7 @@ msgstr "" "Die Bildabmessungen sollten w{max_width} x h{max_height} Pixel nicht " "überschreiten" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3025,7 +3062,7 @@ msgstr "" "zurück. Sie stellt sicher, dass die Antwort den entsprechenden Content-Type-" "Header für XML enthält." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3035,18 +3072,18 @@ msgstr "" "Funktion verarbeitet die Anfrage, holt die entsprechende Sitemap-" "Detailantwort ab und setzt den Content-Type-Header für XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Gibt eine Liste der unterstützten Sprachen und der entsprechenden " "Informationen zurück." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Gibt die Parameter der Website als JSON-Objekt zurück." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3054,11 +3091,11 @@ msgstr "" "Erledigt Cache-Operationen wie das Lesen und Setzen von Cache-Daten mit " "einem bestimmten Schlüssel und Timeout." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Verarbeitet Übermittlungen des Formulars \"Kontaktieren Sie uns\"." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3066,66 +3103,60 @@ msgstr "" "Bearbeitet Anfragen zur Verarbeitung und Validierung von URLs aus " "eingehenden POST-Anfragen." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Bearbeitet globale Suchanfragen." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Behandelt die Logik des Kaufs als Unternehmen ohne Registrierung." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag " -"verbunden ist.\n" -"Diese Funktion versucht, die Datei des digitalen Assets, die sich im " -"Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei " -"nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass " -"die Ressource nicht verfügbar ist." +"Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag verbunden ist.\n" +"Diese Funktion versucht, die Datei des digitalen Assets, die sich im Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass die Ressource nicht verfügbar ist." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid ist erforderlich" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "Produkt bestellen existiert nicht" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Sie können das digitale Asset nur einmal herunterladen" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "" -"die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt werden" +"die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt " +"werden" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Das Bestellprodukt hat kein Produkt" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Bearbeitet Anfragen nach dem Favicon einer Website.\n" -"Diese Funktion versucht, die Favicon-Datei, die sich im statischen " -"Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei " -"nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, " -"dass die Ressource nicht verfügbar ist." +"Diese Funktion versucht, die Favicon-Datei, die sich im statischen Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, dass die Ressource nicht verfügbar ist." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Leitet die Anfrage auf die Admin-Indexseite um. Die Funktion verarbeitet " @@ -3133,7 +3164,7 @@ msgstr "" "Administrationsoberfläche um. Sie verwendet die Funktion `redirect` von " "Django für die Bearbeitung der HTTP-Umleitung." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Gibt die aktuelle Version von eVibes zurück." @@ -3146,22 +3177,23 @@ msgid "" "and rendering formats." msgstr "" "Definiert ein Viewset für die Verwaltung von Evibes-bezogenen Operationen. " -"Die Klasse EvibesViewSet erbt von ModelViewSet und bietet Funktionalität für " -"die Handhabung von Aktionen und Operationen auf Evibes-Entitäten. Sie " +"Die Klasse EvibesViewSet erbt von ModelViewSet und bietet Funktionalität für" +" die Handhabung von Aktionen und Operationen auf Evibes-Entitäten. Sie " "enthält Unterstützung für dynamische Serialisiererklassen auf der Grundlage " "der aktuellen Aktion, anpassbare Berechtigungen und Rendering-Formate." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Stellt ein Viewset für die Verwaltung von AttributeGroup-Objekten dar. " "Bearbeitet Vorgänge im Zusammenhang mit AttributeGroup, einschließlich " -"Filterung, Serialisierung und Abruf von Daten. Diese Klasse ist Teil der API-" -"Schicht der Anwendung und bietet eine standardisierte Methode zur " +"Filterung, Serialisierung und Abruf von Daten. Diese Klasse ist Teil der " +"API-Schicht der Anwendung und bietet eine standardisierte Methode zur " "Verarbeitung von Anfragen und Antworten für AttributeGroup-Daten." #: engine/core/viewsets.py:176 @@ -3186,14 +3218,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Ein Viewset für die Verwaltung von AttributeValue-Objekten. Dieses Viewset " "bietet Funktionen zum Auflisten, Abrufen, Erstellen, Aktualisieren und " "Löschen von AttributeValue-Objekten. Es integriert sich in die Viewset-" -"Mechanismen des Django REST Frameworks und verwendet geeignete Serialisierer " -"für verschiedene Aktionen. Filterfunktionen werden über das " +"Mechanismen des Django REST Frameworks und verwendet geeignete Serialisierer" +" für verschiedene Aktionen. Filterfunktionen werden über das " "DjangoFilterBackend bereitgestellt." #: engine/core/viewsets.py:214 @@ -3205,8 +3237,8 @@ msgid "" "can access specific data." msgstr "" "Verwaltet Ansichten für kategoriebezogene Operationen. Die Klasse " -"CategoryViewSet ist für die Handhabung von Vorgängen im Zusammenhang mit dem " -"Kategoriemodell im System verantwortlich. Sie unterstützt das Abrufen, " +"CategoryViewSet ist für die Handhabung von Vorgängen im Zusammenhang mit dem" +" Kategoriemodell im System verantwortlich. Sie unterstützt das Abrufen, " "Filtern und Serialisieren von Kategoriedaten. Das Viewset erzwingt auch " "Berechtigungen, um sicherzustellen, dass nur autorisierte Benutzer auf " "bestimmte Daten zugreifen können." @@ -3235,8 +3267,8 @@ msgid "" msgstr "" "Verwaltet Vorgänge im Zusammenhang mit dem Modell \"Produkt\" im System. " "Diese Klasse bietet ein Viewset für die Verwaltung von Produkten, " -"einschließlich ihrer Filterung, Serialisierung und Operationen für bestimmte " -"Instanzen. Sie ist eine Erweiterung von `EvibesViewSet`, um gemeinsame " +"einschließlich ihrer Filterung, Serialisierung und Operationen für bestimmte" +" Instanzen. Sie ist eine Erweiterung von `EvibesViewSet`, um gemeinsame " "Funktionen zu nutzen und integriert sich in das Django REST Framework für " "RESTful API Operationen. Enthält Methoden zum Abrufen von Produktdetails, " "zur Anwendung von Berechtigungen und zum Zugriff auf zugehörige " @@ -3262,15 +3294,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Darstellung eines View-Sets, das Feedback-Objekte behandelt. Diese Klasse " "verwaltet Vorgänge im Zusammenhang mit Feedback-Objekten, einschließlich " "Auflistung, Filterung und Abruf von Details. Der Zweck dieses ViewSets ist " -"es, verschiedene Serialisierer für verschiedene Aktionen bereitzustellen und " -"eine erlaubnisbasierte Handhabung von zugänglichen Feedback-Objekten zu " +"es, verschiedene Serialisierer für verschiedene Aktionen bereitzustellen und" +" eine erlaubnisbasierte Handhabung von zugänglichen Feedback-Objekten zu " "implementieren. Es erweitert das Basis `EvibesViewSet` und nutzt das " "Filtersystem von Django zur Abfrage von Daten." @@ -3279,16 +3311,16 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet zur Verwaltung von Aufträgen und zugehörigen Vorgängen. Diese Klasse " -"bietet Funktionen zum Abrufen, Ändern und Verwalten von Bestellobjekten. Sie " -"enthält verschiedene Endpunkte für die Handhabung von Bestellvorgängen wie " -"das Hinzufügen oder Entfernen von Produkten, die Durchführung von Käufen für " -"registrierte und nicht registrierte Benutzer und das Abrufen der " +"ViewSet zur Verwaltung von Aufträgen und zugehörigen Vorgängen. Diese Klasse" +" bietet Funktionen zum Abrufen, Ändern und Verwalten von Bestellobjekten. " +"Sie enthält verschiedene Endpunkte für die Handhabung von Bestellvorgängen " +"wie das Hinzufügen oder Entfernen von Produkten, die Durchführung von Käufen" +" für registrierte und nicht registrierte Benutzer und das Abrufen der " "ausstehenden Bestellungen des aktuell authentifizierten Benutzers. Das " "ViewSet verwendet mehrere Serialisierer, die auf der spezifischen Aktion " "basieren, die durchgeführt wird, und erzwingt die entsprechenden " @@ -3298,16 +3330,16 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Bietet ein Viewset für die Verwaltung von OrderProduct-Entitäten. Dieses " "Viewset ermöglicht CRUD-Vorgänge und benutzerdefinierte Aktionen speziell " "für das OrderProduct-Modell. Es umfasst Filterung, Berechtigungsprüfungen " "und Serializer-Umschaltung auf der Grundlage der angeforderten Aktion. " -"Außerdem bietet es eine detaillierte Aktion für die Bearbeitung von Feedback " -"zu OrderProduct-Instanzen" +"Außerdem bietet es eine detaillierte Aktion für die Bearbeitung von Feedback" +" zu OrderProduct-Instanzen" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " @@ -3334,15 +3366,15 @@ msgstr "Erledigt Vorgänge im Zusammenhang mit Bestandsdaten im System." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet für die Verwaltung von Wishlist-Vorgängen. Das WishlistViewSet " -"bietet Endpunkte für die Interaktion mit der Wunschliste eines Benutzers und " -"ermöglicht das Abrufen, Ändern und Anpassen von Produkten innerhalb der " +"bietet Endpunkte für die Interaktion mit der Wunschliste eines Benutzers und" +" ermöglicht das Abrufen, Ändern und Anpassen von Produkten innerhalb der " "Wunschliste. Dieses ViewSet erleichtert Funktionen wie das Hinzufügen, " "Entfernen und Massenaktionen für Produkte auf der Wunschliste. " "Berechtigungsprüfungen sind integriert, um sicherzustellen, dass Benutzer " @@ -3358,8 +3390,8 @@ msgid "" "on the request context." msgstr "" "Diese Klasse bietet Viewset-Funktionalität für die Verwaltung von " -"\"Address\"-Objekten. Die Klasse AddressViewSet ermöglicht CRUD-Operationen, " -"Filterung und benutzerdefinierte Aktionen im Zusammenhang mit " +"\"Address\"-Objekten. Die Klasse AddressViewSet ermöglicht CRUD-Operationen," +" Filterung und benutzerdefinierte Aktionen im Zusammenhang mit " "Adressentitäten. Sie umfasst spezielle Verhaltensweisen für verschiedene " "HTTP-Methoden, Serialisierungsüberschreibungen und die Behandlung von " "Berechtigungen auf der Grundlage des Anfragekontexts." @@ -3380,7 +3412,6 @@ msgstr "" "Bearbeitet Vorgänge im Zusammenhang mit Produkt-Tags innerhalb der " "Anwendung. Diese Klasse bietet Funktionen zum Abrufen, Filtern und " "Serialisieren von Produkt-Tag-Objekten. Sie unterstützt die flexible " -"Filterung nach bestimmten Attributen unter Verwendung des angegebenen Filter-" -"Backends und verwendet dynamisch verschiedene Serialisierer auf der " +"Filterung nach bestimmten Attributen unter Verwendung des angegebenen " +"Filter-Backends und verwendet dynamisch verschiedene Serialisierer auf der " "Grundlage der durchgeführten Aktion." - diff --git a/engine/core/locale/en_GB/LC_MESSAGES/django.mo b/engine/core/locale/en_GB/LC_MESSAGES/django.mo index 1d4fcd36bcb5474db8f6466308e10ff9e8240bb7..8c58df4643caa0365eb3ce2829694c1f50c3be00 100644 GIT binary patch delta 14944 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 MD(Cw~xfTTe2U@~7V*mgE delta 13845 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 Dc_ZBo diff --git a/engine/core/locale/en_GB/LC_MESSAGES/django.po b/engine/core/locale/en_GB/LC_MESSAGES/django.po index 2b8d777a..b6d47185 100644 --- a/engine/core/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/core/locale/en_GB/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 Egor "fureunoir" Gorbunov # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -31,9 +31,11 @@ msgstr "Is Active" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"If set to false, this object can't be seen by users without needed permission" +"If set to false, this object can't be seen by users without needed " +"permission" #: engine/core/abstract.py:23 engine/core/choices.py:18 msgid "created" @@ -157,7 +159,8 @@ msgstr "Delivered" msgid "canceled" msgstr "Canceled" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Failed" @@ -185,11 +188,25 @@ msgstr "Momental" msgid "successful" msgstr "Successful" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI schema in selected format with selected language" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -197,31 +214,35 @@ msgstr "" "Apply only a key to read permitted data from cache.\n" "Apply key, data and timeout with authentication to write data to cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Get a list of supported languages" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Get application's exposable parameters" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Send a message to the support team" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Search between products, categories and brands" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Global search endpoint to query across project's tables" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Purchase an order as a Business" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -229,206 +250,213 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "download a digital asset from purchased digital order" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Create an attribute group" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Create an attribute" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Delete an attribute" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Create an attribute value" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Category UUID or slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Create a category" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Delete a category" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Returns a snapshot of the category's SEO meta data" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "For non-staff users, only their own orders are returned." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter orders with buy_time >= this ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter orders with buy_time <= this ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filter by exact order UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filter by exact human-readable order ID" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filter by user's email (case-insensitive exact match)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filter by user's UUID" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filter by order status (case-insensitive substring match)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Order UUID or human-readable id" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Create an attribute" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Delete an attribute" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Purchase price at order time" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -438,19 +466,27 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "retrieve current pending order of a user" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "retrieves a current pending order of an authenticated user" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Add a product to the order" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -458,11 +494,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "Add a list of products to order, quantities will not count" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -470,11 +506,11 @@ msgstr "" "Adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Remove a product from the order" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -482,11 +518,11 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Remove a product from order, quantities will not count" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -494,417 +530,409 @@ msgstr "" "Removes a list of products from an order using the provided `product_uuid` " "and `attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Create an attribute" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Delete an attribute" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "retrieve current pending wishlist of a user" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "retrieves a current pending wishlist of an authenticated user" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Add a product to the order" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Create a product" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Delete a product" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "lists all permitted feedbacks for a product" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Returns a snapshot of the product's SEO meta data" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "List all addresses" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Create a new address" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Delete an address" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Update an entire address" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Partially update an address" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "list all feedbacks (simple view)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "retrieve a single feedback (detailed view)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "create a feedback" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "delete a feedback" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "rewrite an existing feedback saving non-editables" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "rewrite some fields of an existing feedback saving non-editables" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "list all order–product relations (simple view)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "retrieve a single order–product relation (detailed view)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "create a new order–product relation" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "replace an existing order–product relation" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "partially update an existing order–product relation" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "delete an order–product relation" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "add or remove feedback on an order–product relation" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "List all brands (simple view)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Retrieve a single brand (detailed view)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Brand UUID or slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Create a brand" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Delete a brand" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Rewrite an existing brand saving non-editables" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "Rewrite some fields of an existing brand saving non-editables" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot for brand" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "List all vendors (simple view)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Retrieve a single vendor (detailed view)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Create a vendor" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Delete a vendor" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Rewrite an existing vendor saving non-editables" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "Rewrite some fields of an existing vendor saving non-editables" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "List all product images (simple view)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Retrieve a single product image (detailed view)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Create a product image" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Delete a product image" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "Rewrite an existing product image saving non-editables" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "Rewrite some fields of an existing product image saving non-editables" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "List all promo codes (simple view)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Retrieve a single promo code (detailed view)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Create a promo code" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Delete a promo code" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Rewrite an existing promo code saving non-editables" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "Rewrite some fields of an existing promo code saving non-editables" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "List all promotions (simple view)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Retrieve a single promotion (detailed view)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Create a promotion" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Delete a promotion" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Rewrite an existing promotion saving non-editables" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "Rewrite some fields of an existing promotion saving non-editables" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "List all stocks (simple view)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Retrieve a single stock (detailed view)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Create a stock record" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Delete a stock record" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "Rewrite an existing stock record saving non-editables" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "Rewrite some fields of an existing stock record saving non-editables" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "List all product tags (simple view)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Retrieve a single product tag (detailed view)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Create a product tag" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Delete a product tag" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Rewrite an existing product tag saving non-editables" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "Rewrite some fields of an existing product tag saving non-editables" @@ -1056,7 +1084,7 @@ msgstr "Cached data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -1140,11 +1168,11 @@ msgstr "Buy an order" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"Please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1218,7 +1246,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." @@ -1691,12 +1720,14 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." #: engine/core/models.py:448 msgid "name of this brand" @@ -1740,15 +1771,15 @@ msgstr "Categories" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1892,15 +1923,15 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." #: engine/core/models.py:733 @@ -1962,13 +1993,13 @@ msgstr "Attribute" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." #: engine/core/models.py:788 msgid "attribute of this value" @@ -1985,14 +2016,14 @@ msgstr "The specific value for this attribute" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." @@ -2034,15 +2065,15 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2110,15 +2141,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." #: engine/core/models.py:998 msgid "documentary" @@ -2134,23 +2165,23 @@ msgstr "Unresolved" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2305,15 +2336,15 @@ msgstr "Invalid discount type for promocode {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." @@ -2484,7 +2515,8 @@ msgid "feedback comments" msgstr "Feedback comments" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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" @@ -2628,16 +2660,16 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." #: engine/core/models.py:1961 msgid "download" @@ -2694,12 +2726,11 @@ msgstr "Hello %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " -"have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" +" have taken your order into work. Below are the details of your order:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2809,12 +2840,11 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are " -"the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are" +" the details of your order:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2883,7 +2913,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Image dimensions should not exceed w{max_width} x h{max_height} pixels!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2891,7 +2921,7 @@ msgstr "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2901,17 +2931,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returns a list of supported languages and their corresponding information." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Returns the parameters of the website as a JSON object." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2919,11 +2949,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2931,69 +2961,65 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Handles the logic of buying as a business without registration." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "order product does not exist" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "the order must be paid before downloading the digital asset" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." @@ -3013,15 +3039,17 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." #: engine/core/viewsets.py:176 msgid "" @@ -3044,14 +3072,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." #: engine/core/viewsets.py:214 msgid "" @@ -3116,15 +3144,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." #: engine/core/viewsets.py:615 @@ -3132,31 +3160,31 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" #: engine/core/viewsets.py:867 @@ -3183,16 +3211,16 @@ msgstr "Handles operations related to Stock data in the system." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3229,4 +3257,3 @@ msgstr "" "Product Tag objects. It supports flexible filtering on specific attributes " "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." - diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.mo b/engine/core/locale/en_US/LC_MESSAGES/django.mo index 707f99a076c2412d24ae5475cd007f674c0746cd..54052d9c2a4a799e0d9998cb58e3e3c83527750b 100644 GIT binary patch delta 14985 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 delta 13860 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 X?0rzew<*xqdS0gu1^05>4Wa)7af#LK diff --git a/engine/core/locale/en_US/LC_MESSAGES/django.po b/engine/core/locale/en_US/LC_MESSAGES/django.po index 52a0a691..d0621464 100644 --- a/engine/core/locale/en_US/LC_MESSAGES/django.po +++ b/engine/core/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,9 +27,11 @@ msgstr "Is Active" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"If set to false, this object can't be seen by users without needed permission" +"If set to false, this object can't be seen by users without needed " +"permission" #: engine/core/abstract.py:23 engine/core/choices.py:18 msgid "created" @@ -153,7 +155,8 @@ msgstr "Delivered" msgid "canceled" msgstr "Canceled" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Failed" @@ -181,11 +184,25 @@ msgstr "Momental" msgid "successful" msgstr "Successful" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI schema in selected format with selected language" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -193,31 +210,35 @@ msgstr "" "Apply only a key to read permitted data from cache.\n" "Apply key, data and timeout with authentication to write data to cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Get a list of supported languages" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Get application's exposable parameters" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Send a message to the support team" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Search between products, categories and brands" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Global search endpoint to query across project's tables" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Purchase an order as a Business" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -225,206 +246,213 @@ msgstr "" "Purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "download a digital asset from purchased digital order" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "List all attribute groups (simple view)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Retrieve a single attribute group (detailed view)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Create an attribute group" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Delete an attribute group" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Rewrite some fields of an existing attribute group saving non-editables" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "List all attributes (simple view)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Create an attribute" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Delete an attribute" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "List all attribute values (simple view)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Retrieve a single attribute value (detailed view)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Create an attribute value" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Delete an attribute value" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Rewrite some fields of an existing attribute value saving non-editables" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "List all categories (simple view)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Category UUID or slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Create a category" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Delete a category" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Returns a snapshot of the category's SEO meta data" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "List all categories (simple view)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "For non-staff users, only their own orders are returned." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter orders with buy_time >= this ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter orders with buy_time <= this ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filter by exact order UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filter by exact human-readable order ID" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filter by user's email (case-insensitive exact match)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filter by user's UUID" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filter by order status (case-insensitive substring match)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Retrieve a single category (detailed view)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Order UUID or human-readable id" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Create an attribute" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Delete an attribute" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Rewrite an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Rewrite some fields of an existing category saving non-editables" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Purchase price at order time" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -434,19 +462,27 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "retrieve current pending order of a user" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "retrieves a current pending order of an authenticated user" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Add a product to the order" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -454,11 +490,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "Add a list of products to order, quantities will not count" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -466,11 +502,11 @@ msgstr "" "Adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Remove a product from the order" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -478,11 +514,11 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Remove a product from order, quantities will not count" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -490,416 +526,409 @@ msgstr "" "Removes a list of products from an order using the provided `product_uuid` " "and `attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Create an attribute" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Delete an attribute" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "retrieve current pending wishlist of a user" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "retrieves a current pending wishlist of an authenticated user" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Add a product to the order" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…`\n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Create a product" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Delete a product" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "lists all permitted feedbacks for a product" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Returns a snapshot of the product's SEO meta data" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "List all addresses" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Create a new address" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Delete an address" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Update an entire address" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Partially update an address" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limits the results amount, 1 < limit < 10, default: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "list all feedbacks (simple view)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "retrieve a single feedback (detailed view)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "create a feedback" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "delete a feedback" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "rewrite an existing feedback saving non-editables" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "rewrite some fields of an existing feedback saving non-editables" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "list all order–product relations (simple view)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "retrieve a single order–product relation (detailed view)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "create a new order–product relation" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "replace an existing order–product relation" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "partially update an existing order–product relation" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "delete an order–product relation" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "add or remove feedback on an order–product relation" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "List all brands (simple view)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Retrieve a single brand (detailed view)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Brand UUID or slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Create a brand" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Delete a brand" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Rewrite an existing brand saving non-editables" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "Rewrite some fields of an existing brand saving non-editables" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot for brand" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "List all vendors (simple view)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Retrieve a single vendor (detailed view)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Create a vendor" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Delete a vendor" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Rewrite an existing vendor saving non-editables" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "Rewrite some fields of an existing vendor saving non-editables" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "List all product images (simple view)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Retrieve a single product image (detailed view)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Create a product image" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Delete a product image" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "Rewrite an existing product image saving non-editables" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "Rewrite some fields of an existing product image saving non-editables" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "List all promo codes (simple view)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Retrieve a single promo code (detailed view)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Create a promo code" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Delete a promo code" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Rewrite an existing promo code saving non-editables" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "Rewrite some fields of an existing promo code saving non-editables" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "List all promotions (simple view)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Retrieve a single promotion (detailed view)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Create a promotion" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Delete a promotion" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Rewrite an existing promotion saving non-editables" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "Rewrite some fields of an existing promotion saving non-editables" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "List all stocks (simple view)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Retrieve a single stock (detailed view)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Create a stock record" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Delete a stock record" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "Rewrite an existing stock record saving non-editables" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "Rewrite some fields of an existing stock record saving non-editables" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "List all product tags (simple view)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Retrieve a single product tag (detailed view)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Create a product tag" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Delete a product tag" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Rewrite an existing product tag saving non-editables" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "Rewrite some fields of an existing product tag saving non-editables" @@ -1051,7 +1080,7 @@ msgstr "Cached data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON data from the requested URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Only URLs starting with http(s):// are allowed" @@ -1135,11 +1164,11 @@ msgstr "Buy an order" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"Please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1213,7 +1242,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimum and maximum prices for products in this category, if available." @@ -1686,12 +1716,14 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." #: engine/core/models.py:448 msgid "name of this brand" @@ -1735,15 +1767,15 @@ msgstr "Categories" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1887,15 +1919,15 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." #: engine/core/models.py:733 @@ -1957,13 +1989,13 @@ msgstr "Attribute" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." #: engine/core/models.py:788 msgid "attribute of this value" @@ -1980,14 +2012,14 @@ msgstr "The specific value for this attribute" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." @@ -2029,15 +2061,15 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Represents a promotional campaign for products with a discount. This class " "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2105,15 +2137,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Represents a documentary record tied to a product. This class is used to " "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." #: engine/core/models.py:998 msgid "documentary" @@ -2129,23 +2161,23 @@ msgstr "Unresolved" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2300,15 +2332,15 @@ msgstr "Invalid discount type for promocode {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." @@ -2479,7 +2511,8 @@ msgid "feedback comments" msgstr "Feedback comments" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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" @@ -2623,16 +2656,16 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." #: engine/core/models.py:1961 msgid "download" @@ -2689,12 +2722,11 @@ msgstr "Hello %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " -"have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" +" have taken your order into work. Below are the details of your order:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2804,12 +2836,11 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are " -"the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are" +" the details of your order:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2878,7 +2909,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Image dimensions should not exceed w{max_width} x h{max_height} pixels!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2886,7 +2917,7 @@ msgstr "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2896,17 +2927,17 @@ msgstr "" "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returns a list of supported languages and their corresponding information." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Returns the parameters of the website as a JSON object." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2914,11 +2945,11 @@ msgstr "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Handles `contact us` form submissions." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2926,69 +2957,65 @@ msgstr "" "Handles requests for processing and validating URLs from incoming POST " "requests." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Handles global search queries." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Handles the logic of buying as a business without registration." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid is required" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "order product does not exist" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "You can only download the digital asset once" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "the order must be paid before downloading the digital asset" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "The order product does not have a product" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon not found" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Returns current version of the eVibes." @@ -3008,15 +3035,17 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." #: engine/core/viewsets.py:176 msgid "" @@ -3039,14 +3068,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." #: engine/core/viewsets.py:214 msgid "" @@ -3111,15 +3140,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." #: engine/core/viewsets.py:615 @@ -3127,31 +3156,31 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" #: engine/core/viewsets.py:867 @@ -3178,16 +3207,16 @@ msgstr "Handles operations related to Stock data in the system." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3224,4 +3253,3 @@ msgstr "" "Product Tag objects. It supports flexible filtering on specific attributes " "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." - diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.mo b/engine/core/locale/es_ES/LC_MESSAGES/django.mo index 35501b0a42bc3dbda31f760f8d45aee86a183a00..dfca910fac028160b4b8b2c0093854d47b9ea230 100644 GIT binary patch delta 15004 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 T*>*%!^i9mRV_E~>wDA7{2hZx& diff --git a/engine/core/locale/es_ES/LC_MESSAGES/django.po b/engine/core/locale/es_ES/LC_MESSAGES/django.po index 962bf4de..92d7c877 100644 --- a/engine/core/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/core/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Está activo" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Si se establece en false, este objeto no puede ser visto por los usuarios " "sin el permiso necesario" @@ -156,7 +157,8 @@ msgstr "Entregado" msgid "canceled" msgstr "Cancelado" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Fallido" @@ -184,266 +186,291 @@ msgstr "Momento" msgid "successful" msgstr "Éxito" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Esquema OpenAPI en el formato seleccionado con el idioma seleccionado" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Esquema OpenApi3 para esta API. El formato se puede seleccionar mediante la " +"negociación de contenido. El idioma se puede seleccionar tanto con Accept-" +"Language como con el parámetro de consulta." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "E/S de caché" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Aplicar sólo una clave para leer datos permitidos de la caché.\n" -"Aplicar clave, datos y tiempo de espera con autenticación para escribir " -"datos en la caché." +"Aplicar clave, datos y tiempo de espera con autenticación para escribir datos en la caché." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Obtener los parámetros exponibles de la aplicación" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Enviar un mensaje al equipo de asistencia" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Solicitar una URL CORSed. Solo se permite https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Búsqueda entre productos, categorías y marcas" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Punto final de búsqueda global para consultar todas las tablas del proyecto" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Comprar un pedido como empresa" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Compra un pedido como empresa, utilizando los `productos` proporcionados con " -"`product_uuid` y `attributes`." +"Compra un pedido como empresa, utilizando los `productos` proporcionados con" +" `product_uuid` y `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "descargar un activo digital de un pedido digital adquirido" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Lista de todos los grupos de atributos (vista simple)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar un único grupo de atributos (vista detallada)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Crear un grupo de atributos" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Eliminar un grupo de atributos" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescribir un grupo de atributos existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Crear un atributo" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Borrar un atributo" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Reescribir algunos campos de un atributo existente guardando los no editables" +"Reescribir algunos campos de un atributo existente guardando los no " +"editables" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Listar todos los valores de atributos (vista simple)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar un único valor de atributo (vista detallada)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Crear un valor de atributo" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Borrar un valor de atributo" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescribir un valor de atributo existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Reescribir algunos campos de un valor de atributo existente guardando los no " -"editables" +"Reescribir algunos campos de un valor de atributo existente guardando los no" +" editables" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "UUID o slug de la categoría" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Crear una categoría" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Eliminar una categoría" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Devuelve una instantánea de los metadatos SEO de la categoría" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Lista de todas las categorías (vista simple)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 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." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Búsqueda de subcadenas sin distinción entre mayúsculas y minúsculas en " -"human_readable_id, order_products.product.name y order_products.product." -"partnumber" +"human_readable_id, order_products.product.name y " +"order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrar los pedidos con buy_time >= esta fecha ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrar pedidos con hora de compra <= esta fecha ISO 8601" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrar por UUID de pedido exacto" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrar por ID de pedido exacto legible por el ser humano" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -"Filtrar por correo electrónico del usuario (coincidencia exacta insensible a " -"mayúsculas y minúsculas)" +"Filtrar por correo electrónico del usuario (coincidencia exacta insensible a" +" mayúsculas y minúsculas)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrar por UUID de usuario" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrar por estado del pedido (coincidencia de subcadenas insensible a " "mayúsculas y minúsculas)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordenar por: uuid, human_readable_id, user_email, user, status, created, " "modified, buy_time, random. Utilice el prefijo '-' para orden descendente " "(por ejemplo, '-tiempo_compra')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Recuperar una sola categoría (vista detallada)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "UUID del pedido o identificador legible" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Crear un atributo" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Borrar un atributo" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Reescribir una categoría existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Precio de compra en el momento del pedido" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -453,19 +480,27 @@ msgstr "" "finaliza utilizando el saldo del usuario; Si se utiliza `force_payment`, se " "inicia una transacción." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "recuperar el pedido pendiente actual de un usuario" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "recupera un pedido pendiente actual de un usuario autenticado" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "comprar un pedido sin crear una cuenta" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza la compra del pedido para un usuario no registrado." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Añadir un producto al pedido" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -473,11 +508,11 @@ msgstr "" "Añade un producto a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -485,11 +520,11 @@ msgstr "" "Añade una lista de productos a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Eliminar un producto del pedido" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -497,11 +532,11 @@ msgstr "" "Elimina un producto de un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Eliminar un producto del pedido, las cantidades no contarán" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -509,447 +544,440 @@ msgstr "" "Elimina una lista de productos de un pedido utilizando el `product_uuid` y " "los `attributes` proporcionados." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 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." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Crear un atributo" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Borrar un atributo" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Reescribir algunos campos de un atributo existente guardando los no editables" +"Reescribir algunos campos de un atributo existente guardando los no " +"editables" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "recuperar la lista de deseos pendiente de un usuario" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "recupera una lista de deseos pendiente de un usuario autenticado" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Añadir un producto al pedido" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Eliminar un producto de la lista de deseos" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Añadir muchos productos a la lista de deseos" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Eliminar un producto del pedido" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrar por uno o varios pares nombre/valor de atributo. \n" "- Sintaxis**: `nombre_attr=método-valor[;attr2=método2-valor2]...`.\n" -"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- Tipificación de valores**: Se intenta primero JSON (para poder pasar " -"listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso " -"contrario se trata como cadena. \n" -"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin " -"procesar. \n" +"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Tipificación de valores**: Se intenta primero JSON (para poder pasar listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso contrario se trata como cadena. \n" +"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin procesar. \n" "Ejemplos: \n" -"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", " -"\"bluetooth\"]`,\n" +"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "UUID (exacto) del producto" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` " -"para que sea descendente. \n" +"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` para que sea descendente. \n" "**Permitido:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Crear un producto" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Eliminar un producto" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "enumera todas las opiniones permitidas sobre un producto" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Devuelve una instantánea de los metadatos SEO del producto" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Enumerar todas las direcciones" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Recuperar una única dirección" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Crear una nueva dirección" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Borrar una dirección" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Actualizar una dirección completa" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Actualizar parcialmente una dirección" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autocompletar direcciones" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la cantidad de resultados, 1 < límite < 10, por defecto: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "lista de todas las reacciones (vista simple)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "recuperar una sola respuesta (vista detallada)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "crear una retroalimentación" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "eliminar un comentario" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "reescribir una respuesta existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "listar todas las relaciones pedido-producto (vista simple)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperar una única relación pedido-producto (vista detallada)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "crear una nueva relación pedido-producto" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "sustituir una relación pedido-producto existente" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "actualizar parcialmente una relación pedido-producto existente" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "suprimir una relación pedido-producto" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "añadir o eliminar comentarios en una relación pedido-producto" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Lista de todas las marcas (vista simple)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Recuperar una sola marca (vista detallada)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID o slug de la marca" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Crear una marca" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Borrar una marca" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Reescribir una marca existente ahorrando no editables" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot para la marca" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Listar todos los vendedores (vista simple)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Recuperar un único proveedor (vista detallada)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Crear un proveedor" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Eliminar un proveedor" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Reescribir un proveedor existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Listar todas las imágenes de los productos (vista simple)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Recuperar una sola imagen del producto (vista detallada)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Crear una imagen del producto" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Eliminar la imagen de un producto" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" -msgstr "Reescribir una imagen de producto existente guardando los no editables" +msgstr "" +"Reescribir una imagen de producto existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Listar todos los códigos promocionales (vista simple)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Recuperar un único código promocional (vista detallada)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Crear un código promocional" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Eliminar un código promocional" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Reescribir un código promocional existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Lista de todas las promociones (vista simple)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Recuperar una sola promoción (vista detallada)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Crear una promoción" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Eliminar una promoción" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Reescribir una promoción existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Listar todas las acciones (vista simple)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Recuperar una sola acción (vista detallada)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Crear una ficha de existencias" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Borrar una ficha de existencias" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Reescribir un registro de existencias existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " "editables" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Listar todas las etiquetas de productos (vista simple)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Recuperar una sola etiqueta de producto (vista detallada)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Crear una etiqueta de producto" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Eliminar una etiqueta de producto" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Reescribir una etiqueta de producto existente guardando los no editables" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Reescribir algunos campos de una categoría existente guardando los no " @@ -1035,7 +1063,8 @@ msgstr "SKU" #: engine/core/filters.py:184 msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "Debe haber un category_uuid para usar la bandera include_subcategories" +msgstr "" +"Debe haber un category_uuid para usar la bandera include_subcategories" #: engine/core/filters.py:353 msgid "Search (ID, product name or part number)" @@ -1103,7 +1132,7 @@ msgstr "Datos en caché" msgid "camelized JSON data from the requested URL" msgstr "Datos JSON camelizados de la URL solicitada" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Sólo se permiten URL que empiecen por http(s)://." @@ -1136,7 +1165,8 @@ msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" #: engine/core/graphene/mutations.py:237 engine/core/graphene/mutations.py:502 #: engine/core/graphene/mutations.py:544 engine/core/viewsets.py:704 msgid "wrong type came from order.buy() method: {type(instance)!s}" -msgstr "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" +msgstr "" +"Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}" #: engine/core/graphene/mutations.py:246 msgid "perform an action on a list of products in the order" @@ -1187,11 +1217,11 @@ msgstr "Comprar un pedido" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Por favor, envíe los atributos como una cadena formateada como attr1=valor1," -"attr2=valor2" +"Por favor, envíe los atributos como una cadena formateada como " +"attr1=valor1,attr2=valor2" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1266,7 +1296,8 @@ msgstr "" "Qué atributos y valores se pueden utilizar para filtrar esta categoría." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Precios mínimo y máximo de los productos de esta categoría, si están " "disponibles." @@ -1299,7 +1330,8 @@ msgstr "Cómo" #: engine/core/graphene/object_types.py:484 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -"Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está configurado." +"Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está " +"configurado." #: engine/core/graphene/object_types.py:367 msgid "represents feedback from a user." @@ -1542,8 +1574,8 @@ msgstr "" "Representa un grupo de atributos, que puede ser jerárquico. Esta clase se " "utiliza para gestionar y organizar grupos de atributos. Un grupo de " "atributos puede tener un grupo padre, formando una estructura jerárquica. " -"Esto puede ser útil para categorizar y gestionar los atributos de manera más " -"eficaz en un sistema complejo." +"Esto puede ser útil para categorizar y gestionar los atributos de manera más" +" eficaz en un sistema complejo." #: engine/core/models.py:91 msgid "parent of this group" @@ -1573,11 +1605,11 @@ msgid "" msgstr "" "Representa una entidad de proveedor capaz de almacenar información sobre " "proveedores externos y sus requisitos de interacción. La clase Proveedor se " -"utiliza para definir y gestionar la información relacionada con un proveedor " -"externo. Almacena el nombre del vendedor, los detalles de autenticación " +"utiliza para definir y gestionar la información relacionada con un proveedor" +" externo. Almacena el nombre del vendedor, los detalles de autenticación " "necesarios para la comunicación y el porcentaje de marcado aplicado a los " -"productos recuperados del vendedor. Este modelo también mantiene metadatos y " -"restricciones adicionales, lo que lo hace adecuado para su uso en sistemas " +"productos recuperados del vendedor. Este modelo también mantiene metadatos y" +" restricciones adicionales, lo que lo hace adecuado para su uso en sistemas " "que interactúan con proveedores externos." #: engine/core/models.py:124 @@ -1750,7 +1782,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Representa un objeto Marca en el sistema. Esta clase maneja información y " "atributos relacionados con una marca, incluyendo su nombre, logotipos, " @@ -1800,8 +1833,8 @@ msgstr "Categorías" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1810,8 +1843,8 @@ msgstr "" "Representa el stock de un producto gestionado en el sistema. Esta clase " "proporciona detalles sobre la relación entre vendedores, productos y su " "información de existencias, así como propiedades relacionadas con el " -"inventario como precio, precio de compra, cantidad, SKU y activos digitales. " -"Forma parte del sistema de gestión de inventario para permitir el " +"inventario como precio, precio de compra, cantidad, SKU y activos digitales." +" Forma parte del sistema de gestión de inventario para permitir el " "seguimiento y la evaluación de los productos disponibles de varios " "vendedores." @@ -1894,13 +1927,13 @@ msgstr "" "Representa un producto con atributos como categoría, marca, etiquetas, " "estado digital, nombre, descripción, número de pieza y babosa. Proporciona " "propiedades de utilidad relacionadas para recuperar valoraciones, recuentos " -"de comentarios, precio, cantidad y total de pedidos. Diseñado para su uso en " -"un sistema que gestiona el comercio electrónico o la gestión de inventarios. " -"Esta clase interactúa con modelos relacionados (como Category, Brand y " -"ProductTag) y gestiona el almacenamiento en caché de las propiedades a las " -"que se accede con frecuencia para mejorar el rendimiento. Se utiliza para " -"definir y manipular datos de productos y su información asociada dentro de " -"una aplicación." +"de comentarios, precio, cantidad y total de pedidos. Diseñado para su uso en" +" un sistema que gestiona el comercio electrónico o la gestión de " +"inventarios. Esta clase interactúa con modelos relacionados (como Category, " +"Brand y ProductTag) y gestiona el almacenamiento en caché de las propiedades" +" a las que se accede con frecuencia para mejorar el rendimiento. Se utiliza " +"para definir y manipular datos de productos y su información asociada dentro" +" de una aplicación." #: engine/core/models.py:585 msgid "category this product belongs to" @@ -1955,14 +1988,14 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Representa un atributo en el sistema. Esta clase se utiliza para definir y " "gestionar atributos, que son datos personalizables que pueden asociarse a " -"otras entidades. Los atributos tienen asociadas categorías, grupos, tipos de " -"valores y nombres. El modelo admite varios tipos de valores, como cadenas, " +"otras entidades. Los atributos tienen asociadas categorías, grupos, tipos de" +" valores y nombres. El modelo admite varios tipos de valores, como cadenas, " "enteros, flotantes, booleanos, matrices y objetos. Esto permite una " "estructuración dinámica y flexible de los datos." @@ -2026,9 +2059,9 @@ msgstr "Atributo" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representa un valor específico para un atributo vinculado a un producto. " "Vincula el \"atributo\" a un \"valor\" único, lo que permite una mejor " @@ -2049,8 +2082,8 @@ msgstr "El valor específico de este atributo" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2099,8 +2132,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Representa una campaña promocional para productos con descuento. Esta clase " "se utiliza para definir y gestionar campañas promocionales que ofrecen un " @@ -2176,8 +2209,8 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Representa un registro documental vinculado a un producto. Esta clase se " "utiliza para almacenar información sobre documentales relacionados con " @@ -2200,14 +2233,14 @@ msgstr "Sin resolver" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representa una entidad de dirección que incluye detalles de ubicación y " "asociaciones con un usuario. Proporciona funcionalidad para el " @@ -2216,8 +2249,8 @@ msgstr "" "información detallada sobre direcciones, incluidos componentes como calle, " "ciudad, región, país y geolocalización (longitud y latitud). Admite la " "integración con API de geocodificación, permitiendo el almacenamiento de " -"respuestas API sin procesar para su posterior procesamiento o inspección. La " -"clase también permite asociar una dirección a un usuario, facilitando el " +"respuestas API sin procesar para su posterior procesamiento o inspección. La" +" clase también permite asociar una dirección a un usuario, facilitando el " "manejo personalizado de los datos." #: engine/core/models.py:1029 @@ -2375,8 +2408,8 @@ msgstr "¡Tipo de descuento no válido para el código promocional {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2384,9 +2417,9 @@ msgstr "" "dentro de la aplicación, incluyendo sus diversos atributos como información " "de facturación y envío, estado, usuario asociado, notificaciones y " "operaciones relacionadas. Los pedidos pueden tener productos asociados, se " -"pueden aplicar promociones, establecer direcciones y actualizar los datos de " -"envío o facturación. Del mismo modo, la funcionalidad permite gestionar los " -"productos en el ciclo de vida del pedido." +"pueden aplicar promociones, establecer direcciones y actualizar los datos de" +" envío o facturación. Del mismo modo, la funcionalidad permite gestionar los" +" productos en el ciclo de vida del pedido." #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2559,7 +2592,8 @@ msgid "feedback comments" msgstr "Comentarios" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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" @@ -2594,8 +2628,8 @@ msgstr "" "atributos del producto y su estado. Gestiona las notificaciones para el " "usuario y los administradores y maneja operaciones como la devolución del " "saldo del producto o la adición de comentarios. Este modelo también " -"proporciona métodos y propiedades que soportan la lógica de negocio, como el " -"cálculo del precio total o la generación de una URL de descarga para " +"proporciona métodos y propiedades que soportan la lógica de negocio, como el" +" cálculo del precio total o la generación de una URL de descarga para " "productos digitales. El modelo se integra con los modelos Pedido y Producto " "y almacena una referencia a ellos." @@ -2707,16 +2741,17 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Representa la funcionalidad de descarga de activos digitales asociados a " -"pedidos. La clase DigitalAssetDownload proporciona la capacidad de gestionar " -"y acceder a descargas relacionadas con productos de pedidos. Mantiene " +"pedidos. La clase DigitalAssetDownload proporciona la capacidad de gestionar" +" y acceder a descargas relacionadas con productos de pedidos. Mantiene " "información sobre el producto del pedido asociado, el número de descargas y " -"si el activo es visible públicamente. Incluye un método para generar una URL " -"para descargar el activo cuando el pedido asociado está en estado completado." +"si el activo es visible públicamente. Incluye un método para generar una URL" +" para descargar el activo cuando el pedido asociado está en estado " +"completado." #: engine/core/models.py:1961 msgid "download" @@ -2774,8 +2809,7 @@ msgstr "Hola %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "¡Gracias por su pedido #%(order.pk)s! Nos complace informarle de que hemos " @@ -2889,8 +2923,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Gracias por su pedido. Nos complace confirmarle su compra. A continuación " @@ -2965,16 +2998,16 @@ msgstr "" "Las dimensiones de la imagen no deben superar w{max_width} x h{max_height} " "píxeles." -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"Gestiona la solicitud del índice del mapa del sitio y devuelve una respuesta " -"XML. Se asegura de que la respuesta incluya el encabezado de tipo de " +"Gestiona la solicitud del índice del mapa del sitio y devuelve una respuesta" +" XML. Se asegura de que la respuesta incluya el encabezado de tipo de " "contenido apropiado para XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2984,17 +3017,18 @@ msgstr "" "función procesa la solicitud, obtiene la respuesta detallada del mapa del " "sitio y establece el encabezado Content-Type para XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -"Devuelve una lista de los idiomas admitidos y su información correspondiente." +"Devuelve una lista de los idiomas admitidos y su información " +"correspondiente." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Devuelve los parámetros del sitio web como un objeto JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3002,11 +3036,11 @@ msgstr "" "Gestiona las operaciones de caché, como la lectura y el establecimiento de " "datos de caché con una clave y un tiempo de espera especificados." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Gestiona los formularios de contacto." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3014,70 +3048,66 @@ msgstr "" "Gestiona las solicitudes de procesamiento y validación de URL de las " "solicitudes POST entrantes." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Gestiona las consultas de búsqueda global." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Maneja la lógica de la compra como empresa sin registro." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestiona la descarga de un activo digital asociado a un pedido.\n" -"Esta función intenta servir el archivo del activo digital ubicado en el " -"directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se " -"genera un error HTTP 404 para indicar que el recurso no está disponible." +"Esta función intenta servir el archivo del activo digital ubicado en el directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se genera un error HTTP 404 para indicar que el recurso no está disponible." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid es obligatorio" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "pedir producto no existe" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Sólo puede descargar el activo digital una vez" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "el pedido debe pagarse antes de descargar el activo digital" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "El producto del pedido no tiene un producto" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon no encontrado" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestiona las peticiones del favicon de un sitio web.\n" -"Esta función intenta servir el archivo favicon ubicado en el directorio " -"estático del proyecto. Si no se encuentra el archivo favicon, se genera un " -"error HTTP 404 para indicar que el recurso no está disponible." +"Esta función intenta servir el archivo favicon ubicado en el directorio estático del proyecto. Si no se encuentra el archivo favicon, se genera un error HTTP 404 para indicar que el recurso no está disponible." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Redirige la petición a la página índice de administración. La función " "gestiona las peticiones HTTP entrantes y las redirige a la página de índice " -"de la interfaz de administración de Django. Utiliza la función `redirect` de " -"Django para gestionar la redirección HTTP." +"de la interfaz de administración de Django. Utiliza la función `redirect` de" +" Django para gestionar la redirección HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Devuelve la versión actual del eVibes." @@ -3097,15 +3127,16 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representa un conjunto de vistas para gestionar objetos AttributeGroup. " "Maneja operaciones relacionadas con AttributeGroup, incluyendo filtrado, " -"serialización y recuperación de datos. Esta clase forma parte de la capa API " -"de la aplicación y proporciona una forma estandarizada de procesar las " +"serialización y recuperación de datos. Esta clase forma parte de la capa API" +" de la aplicación y proporciona una forma estandarizada de procesar las " "solicitudes y respuestas de los datos de AttributeGroup." #: engine/core/viewsets.py:176 @@ -3117,10 +3148,10 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Gestiona las operaciones relacionadas con los objetos Attribute dentro de la " -"aplicación. Proporciona un conjunto de puntos finales de la API para " -"interactuar con los datos de los atributos. Esta clase gestiona la consulta, " -"el filtrado y la serialización de objetos Attribute, lo que permite un " +"Gestiona las operaciones relacionadas con los objetos Attribute dentro de la" +" aplicación. Proporciona un conjunto de puntos finales de la API para " +"interactuar con los datos de los atributos. Esta clase gestiona la consulta," +" el filtrado y la serialización de objetos Attribute, lo que permite un " "control dinámico de los datos devueltos, como el filtrado por campos " "específicos o la recuperación de información detallada o simplificada en " "función de la solicitud." @@ -3130,12 +3161,12 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Conjunto de vistas para gestionar objetos AttributeValue. Este conjunto de " -"vistas proporciona funcionalidad para listar, recuperar, crear, actualizar y " -"eliminar objetos AttributeValue. Se integra con los mecanismos viewset de " +"vistas proporciona funcionalidad para listar, recuperar, crear, actualizar y" +" eliminar objetos AttributeValue. Se integra con los mecanismos viewset de " "Django REST Framework y utiliza serializadores apropiados para diferentes " "acciones. Las capacidades de filtrado se proporcionan a través de " "DjangoFilterBackend." @@ -3151,8 +3182,8 @@ msgstr "" "Gestiona vistas para operaciones relacionadas con Categorías. La clase " "CategoryViewSet se encarga de gestionar las operaciones relacionadas con el " "modelo Category del sistema. Permite recuperar, filtrar y serializar datos " -"de categorías. El conjunto de vistas también aplica permisos para garantizar " -"que sólo los usuarios autorizados puedan acceder a datos específicos." +"de categorías. El conjunto de vistas también aplica permisos para garantizar" +" que sólo los usuarios autorizados puedan acceder a datos específicos." #: engine/core/viewsets.py:326 msgid "" @@ -3162,9 +3193,9 @@ msgid "" "endpoints for Brand objects." msgstr "" "Representa un conjunto de vistas para gestionar instancias de Brand. Esta " -"clase proporciona funcionalidad para consultar, filtrar y serializar objetos " -"Brand. Utiliza el marco ViewSet de Django para simplificar la implementación " -"de puntos finales de API para objetos Brand." +"clase proporciona funcionalidad para consultar, filtrar y serializar objetos" +" Brand. Utiliza el marco ViewSet de Django para simplificar la " +"implementación de puntos finales de API para objetos Brand." #: engine/core/viewsets.py:438 msgid "" @@ -3178,11 +3209,12 @@ msgid "" msgstr "" "Gestiona las operaciones relacionadas con el modelo `Producto` en el " "sistema. Esta clase proporciona un conjunto de vistas para la gestión de " -"productos, incluyendo su filtrado, serialización y operaciones en instancias " -"específicas. Se extiende desde `EvibesViewSet` para utilizar funcionalidades " -"comunes y se integra con el framework Django REST para operaciones RESTful " -"API. Incluye métodos para recuperar detalles del producto, aplicar permisos " -"y acceder a comentarios relacionados de un producto." +"productos, incluyendo su filtrado, serialización y operaciones en instancias" +" específicas. Se extiende desde `EvibesViewSet` para utilizar " +"funcionalidades comunes y se integra con el framework Django REST para " +"operaciones RESTful API. Incluye métodos para recuperar detalles del " +"producto, aplicar permisos y acceder a comentarios relacionados de un " +"producto." #: engine/core/viewsets.py:568 msgid "" @@ -3204,8 +3236,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representación de un conjunto de vistas que maneja objetos Feedback. Esta " @@ -3213,34 +3245,34 @@ msgstr "" "incluyendo el listado, filtrado y recuperación de detalles. El propósito de " "este conjunto de vistas es proporcionar diferentes serializadores para " "diferentes acciones e implementar el manejo basado en permisos de los " -"objetos Feedback accesibles. Extiende la base `EvibesViewSet` y hace uso del " -"sistema de filtrado de Django para la consulta de datos." +"objetos Feedback accesibles. Extiende la base `EvibesViewSet` y hace uso del" +" sistema de filtrado de Django para la consulta de datos." #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet para la gestión de pedidos y operaciones relacionadas. Esta clase " "proporciona funcionalidad para recuperar, modificar y gestionar objetos de " -"pedido. Incluye varios puntos finales para gestionar operaciones de pedidos, " -"como añadir o eliminar productos, realizar compras para usuarios registrados " -"y no registrados, y recuperar los pedidos pendientes del usuario autenticado " -"actual. ViewSet utiliza varios serializadores en función de la acción " -"específica que se esté realizando y aplica los permisos correspondientes al " -"interactuar con los datos del pedido." +"pedido. Incluye varios puntos finales para gestionar operaciones de pedidos," +" como añadir o eliminar productos, realizar compras para usuarios " +"registrados y no registrados, y recuperar los pedidos pendientes del usuario" +" autenticado actual. ViewSet utiliza varios serializadores en función de la " +"acción específica que se esté realizando y aplica los permisos " +"correspondientes al interactuar con los datos del pedido." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Proporciona un conjunto de vistas para gestionar entidades OrderProduct. " @@ -3277,8 +3309,8 @@ msgstr "" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3303,8 +3335,8 @@ msgstr "" "Esta clase proporciona la funcionalidad viewset para la gestión de objetos " "`Address`. La clase AddressViewSet permite operaciones CRUD, filtrado y " "acciones personalizadas relacionadas con entidades de direcciones. Incluye " -"comportamientos especializados para diferentes métodos HTTP, anulaciones del " -"serializador y gestión de permisos basada en el contexto de la solicitud." +"comportamientos especializados para diferentes métodos HTTP, anulaciones del" +" serializador y gestión de permisos basada en el contexto de la solicitud." #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3325,4 +3357,3 @@ msgstr "" "de atributos específicos mediante el backend de filtrado especificado y " "utiliza dinámicamente diferentes serializadores en función de la acción que " "se esté realizando." - diff --git a/engine/core/locale/fa_IR/LC_MESSAGES/django.po b/engine/core/locale/fa_IR/LC_MESSAGES/django.po index cba44d1a..bc0ab9f7 100644 --- a/engine/core/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/core/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -183,359 +183,395 @@ msgstr "" msgid "successful" msgstr "" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:78 +#: engine/core/docs/drf/viewsets.py:96 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:132 +#: engine/core/docs/drf/viewsets.py:186 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" "Case-insensitive substring search across human_readable_id, order_products." "product.name, and order_products.product.partnumber" msgstr "" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" "Order by one of: uuid, human_readable_id, user_email, user, status, created, " "modified, buy_time, random. Prefix with '-' for descending (e.g. '-" "buy_time')." msgstr "" -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 "" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -552,317 +588,313 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" @@ -1014,7 +1046,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2692,53 +2724,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2746,27 +2778,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2774,14 +2810,14 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "" diff --git a/engine/core/locale/fr_FR/LC_MESSAGES/django.mo b/engine/core/locale/fr_FR/LC_MESSAGES/django.mo index c3211e1cbb122f7274b56fa6a4c7e0cb458b3ffa..d4d58a9bfbeb6a04c9db838b83931da4720dae70 100644 GIT binary patch delta 15008 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Est actif" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Si la valeur est fixée à false, cet objet ne peut pas être vu par les " "utilisateurs qui n'ont pas l'autorisation nécessaire." @@ -156,7 +157,8 @@ msgstr "Livré" msgid "canceled" msgstr "Annulé" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Échec" @@ -184,46 +186,62 @@ msgstr "Momental" msgid "successful" msgstr "Réussite" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Schéma OpenAPI dans le format et la langue sélectionnés" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Schéma OpenApi3 pour cette API. Le format peut être sélectionné via la " +"négociation de contenu. La langue peut être sélectionnée avec Accept-" +"Language et le paramètre de requête." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"Appliquer uniquement une clé pour lire les données autorisées dans la " -"mémoire cache.\n" -"Appliquer une clé, des données et un délai d'attente avec authentification " -"pour écrire des données dans la mémoire cache." +"Appliquer uniquement une clé pour lire les données autorisées dans la mémoire cache.\n" +"Appliquer une clé, des données et un délai d'attente avec authentification pour écrire des données dans la mémoire cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Obtenir les paramètres exposables de l'application" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Envoyer un message à l'équipe d'assistance" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Demander une URL CORSée. Seul https est autorisé." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Recherche entre produits, catégories et marques" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Point d'arrivée de la recherche globale pour interroger les tables du projet" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Acheter une commande en tant qu'entreprise" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -231,247 +249,263 @@ msgstr "" "Acheter une commande en tant qu'entreprise, en utilisant les `produits` " "fournis avec `product_uuid` et `attributs`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "" +"télécharger un bien numérique à partir d'une commande numérique achetée" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Liste de tous les groupes d'attributs (vue simple)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Récupérer un seul groupe d'attributs (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Créer un groupe d'attributs" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Supprimer un groupe d'attributs" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Réécrire un groupe d'attributs existant en sauvegardant les éléments non " "modifiables" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Créer un attribut" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Supprimer un attribut" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " -"non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" +" non modifiables" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Liste de toutes les valeurs d'attributs (vue simple)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Récupérer une seule valeur d'attribut (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Créer une valeur d'attribut" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Supprimer une valeur d'attribut" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Réécrire une valeur d'attribut existante en sauvegardant les éléments non " "modifiables" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Catégorie UUID ou slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Créer une catégorie" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Supprimer une catégorie" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Réécrire une catégorie existante en sauvegardant les non-éditables" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 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" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "Méta snapshot SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Renvoie un instantané des métadonnées SEO de la catégorie." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Liste de toutes les catégories (vue simple)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "Pour les utilisateurs non fonctionnaires, seules leurs propres commandes " "sont renvoyées." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Recherche insensible à la casse dans human_readable_id, order_products." -"product.name, et order_products.product.partnumber" +"Recherche insensible à la casse dans human_readable_id, " +"order_products.product.name, et order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrer les commandes dont l'heure d'achat est >= cette date ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrer les commandes avec buy_time <= this ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtre sur l'UUID exact de l'ordre" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtre sur l'identifiant exact de la commande, lisible par l'homme" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtre sur l'adresse électronique de l'utilisateur (correspondance exacte " "insensible à la casse)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrer par UUID de l'utilisateur" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtre sur l'état de la commande (correspondance insensible aux majuscules " "et aux minuscules)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordonner par l'un des éléments suivants : uuid, human_readable_id, " -"user_email, user, status, created, modified, buy_time, random. Préfixer avec " -"'-' pour l'ordre décroissant (par exemple '-buy_time')." +"user_email, user, status, created, modified, buy_time, random. Préfixer avec" +" '-' pour l'ordre décroissant (par exemple '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Récupérer une seule catégorie (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "UUID de la commande ou identifiant lisible par l'homme" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Créer un attribut" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Supprimer un attribut" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Réécrire une catégorie existante en sauvegardant les non-éditables" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 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" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Prix d'achat au moment de la commande" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est " -"complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " +"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est" +" complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " "utilisé, une transaction est initiée." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "récupérer la commande en cours d'un utilisateur" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "récupère une commande en cours d'un utilisateur authentifié" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "acheter une commande sans créer de compte" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finalise l'achat d'une commande pour un utilisateur non enregistré." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Ajouter un produit à la commande" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -479,13 +513,13 @@ msgstr "" "Ajoute un produit à une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -493,11 +527,11 @@ msgstr "" "Ajoute une liste de produits à une commande en utilisant le `product_uuid` " "et les `attributs` fournis." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Supprimer un produit de la commande" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -505,472 +539,465 @@ msgstr "" "Supprime un produit d'une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 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" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -"Supprime une liste de produits d'une commande en utilisant le `product_uuid` " -"et les `attributs` fournis." +"Supprime une liste de produits d'une commande en utilisant le `product_uuid`" +" et les `attributs` fournis." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 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." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Créer un attribut" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Supprimer un attribut" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " -"non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" +" non modifiables" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "récupérer la liste de souhaits en cours d'un utilisateur" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"récupération d'une liste de vœux en attente d'un utilisateur authentifié" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Ajouter un produit à la commande" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Supprimer un produit de la liste de souhaits" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Ajouter plusieurs produits à la liste de souhaits" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Supprimer un produit de la commande" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtre sur une ou plusieurs paires nom/valeur d'attribut. \n" "- **Syntaxe** : `nom_attr=méthode-valeur[;attr2=méthode2-valeur2]...`\n" -"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`\n" -"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez " -"passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les " -"flottants ; sinon traité comme une chaîne de caractères. \n" -"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de " -"manière sûre pour l'URL. \n" +"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les flottants ; sinon traité comme une chaîne de caractères. \n" +"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de manière sûre pour l'URL. \n" "Exemples : \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "UUID (exact) du produit" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un " -"tri descendant. \n" +"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un tri descendant. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Créer un produit" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Réécrire un produit existant en préservant les champs non modifiables" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Supprimer un produit" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "liste tous les commentaires autorisés pour un produit" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Renvoie un instantané des métadonnées SEO du produit" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Liste de toutes les adresses" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Récupérer une seule adresse" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Créer une nouvelle adresse" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Supprimer une adresse" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Mise à jour d'une adresse entière" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Mise à jour partielle d'une adresse" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Saisie automatique des adresses" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limite la quantité de résultats, 1 < limite < 10, par défaut : 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "liste de tous les commentaires (vue simple)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "récupérer un seul retour d'information (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "créer un retour d'information" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "supprimer un feedback" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "réécrire un feedback existant en sauvegardant les éléments non modifiables" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "lister toutes les relations commande-produit (vue simple)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "récupérer une seule relation commande-produit (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "créer une nouvelle relation commande-produit" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "remplacer une relation commande-produit existante" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "mettre à jour partiellement une relation commande-produit existante" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "supprimer une relation commande-produit" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "" "ajouter ou supprimer un retour d'information sur une relation commande-" "produit" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Liste de toutes les marques (vue simple)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Récupérer une seule marque (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID ou slug de la marque" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Créer une marque" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Supprimer une marque" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Réécrire une marque existante en sauvegardant les non-éditables" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "Meta snapshot SEO pour la marque" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Liste de tous les fournisseurs (vue simple)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Récupérer un seul fournisseur (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Créer un fournisseur" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Supprimer un fournisseur" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" "Réécrire un vendeur existant en sauvegardant les éléments non modifiables" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Liste de toutes les images de produits (vue simple)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Récupérer l'image d'un seul produit (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Créer une image du produit" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Supprimer une image de produit" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Réécrire l'image d'un produit existant en sauvegardant les éléments non " "modifiables" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Liste de tous les codes promo (vue simple)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Récupérer un seul code promo (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Créer un code promo" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Supprimer un code promo" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Réécrire un code promo existant en sauvegardant les non-éditables" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Liste de toutes les promotions (vue simple)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Récupérer une seule promotion (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Créer une promotion" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Supprimer une promotion" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" -"Réécrire une promotion existante en sauvegardant les éléments non modifiables" +"Réécrire une promotion existante en sauvegardant les éléments non " +"modifiables" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Liste de toutes les actions (vue simple)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Récupérer une seule action (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Créer une fiche de stock" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Supprimer une fiche de stock" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Réécrire une fiche de stock existante en sauvegardant les éléments non " "modifiables" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" "éditables" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Liste de toutes les étiquettes de produits (vue simple)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Récupérer une seule étiquette de produit (vue détaillée)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Créer une étiquette de produit" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Supprimer une étiquette de produit" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" -"Réécrire une étiquette de produit existante en sauvegardant les éléments non " -"modifiables" +"Réécrire une étiquette de produit existante en sauvegardant les éléments non" +" modifiables" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Réécrire certains champs d'une catégorie existante en sauvegardant les non-" @@ -1126,7 +1153,7 @@ msgstr "Données mises en cache" msgid "camelized JSON data from the requested URL" msgstr "Données JSON camélisées provenant de l'URL demandée" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Seuls les URL commençant par http(s):// sont autorisés." @@ -1214,8 +1241,8 @@ msgstr "Acheter une commande" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Veuillez envoyer les attributs sous la forme d'une chaîne formatée comme " "attr1=valeur1,attr2=valeur2." @@ -1296,7 +1323,8 @@ msgstr "" "catégorie." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Prix minimum et maximum pour les produits de cette catégorie, s'ils sont " "disponibles." @@ -1360,8 +1388,8 @@ msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -"Adresse d'expédition pour cette commande, laisser vide si elle est identique " -"à l'adresse de facturation ou si elle n'est pas applicable" +"Adresse d'expédition pour cette commande, laisser vide si elle est identique" +" à l'adresse de facturation ou si elle n'est pas applicable" #: engine/core/graphene/object_types.py:415 msgid "total price of this order" @@ -1603,8 +1631,8 @@ msgid "" msgstr "" "Représente une entité fournisseur capable de stocker des informations sur " "les fournisseurs externes et leurs exigences en matière d'interaction. La " -"classe Vendeur est utilisée pour définir et gérer les informations relatives " -"à un fournisseur externe. Elle stocke le nom du fournisseur, les détails " +"classe Vendeur est utilisée pour définir et gérer les informations relatives" +" à un fournisseur externe. Elle stocke le nom du fournisseur, les détails " "d'authentification requis pour la communication et le pourcentage de " "majoration appliqué aux produits récupérés auprès du fournisseur. Ce modèle " "gère également des métadonnées et des contraintes supplémentaires, ce qui " @@ -1696,9 +1724,9 @@ msgid "" "attributes for an internal tag identifier and a user-friendly display name." msgstr "" "Représente une étiquette de catégorie utilisée pour les produits. Cette " -"classe modélise une balise de catégorie qui peut être utilisée pour associer " -"et classer des produits. Elle comprend des attributs pour un identifiant de " -"balise interne et un nom d'affichage convivial." +"classe modélise une balise de catégorie qui peut être utilisée pour associer" +" et classer des produits. Elle comprend des attributs pour un identifiant de" +" balise interne et un nom d'affichage convivial." #: engine/core/models.py:254 msgid "category tag" @@ -1725,8 +1753,8 @@ msgstr "" "avoir des relations hiérarchiques avec d'autres catégories, en prenant en " "charge les relations parent-enfant. La classe comprend des champs pour les " "métadonnées et la représentation visuelle, qui servent de base aux " -"fonctionnalités liées aux catégories. Cette classe est généralement utilisée " -"pour définir et gérer des catégories de produits ou d'autres regroupements " +"fonctionnalités liées aux catégories. Cette classe est généralement utilisée" +" pour définir et gérer des catégories de produits ou d'autres regroupements " "similaires au sein d'une application, permettant aux utilisateurs ou aux " "administrateurs de spécifier le nom, la description et la hiérarchie des " "catégories, ainsi que d'attribuer des attributs tels que des images, des " @@ -1782,13 +1810,14 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Représente un objet Marque dans le système. Cette classe gère les " "informations et les attributs liés à une marque, y compris son nom, ses " "logos, sa description, ses catégories associées, un nom unique et un ordre " -"de priorité. Elle permet d'organiser et de représenter les données relatives " -"à la marque dans l'application." +"de priorité. Elle permet d'organiser et de représenter les données relatives" +" à la marque dans l'application." #: engine/core/models.py:448 msgid "name of this brand" @@ -1832,8 +1861,8 @@ msgstr "Catégories" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1843,8 +1872,8 @@ msgstr "" "des détails sur la relation entre les fournisseurs, les produits et leurs " "informations de stock, ainsi que des propriétés liées à l'inventaire telles " "que le prix, le prix d'achat, la quantité, l'UGS et les actifs numériques. " -"Elle fait partie du système de gestion des stocks pour permettre le suivi et " -"l'évaluation des produits disponibles auprès de différents fournisseurs." +"Elle fait partie du système de gestion des stocks pour permettre le suivi et" +" l'évaluation des produits disponibles auprès de différents fournisseurs." #: engine/core/models.py:520 msgid "the vendor supplying this product stock" @@ -1923,8 +1952,8 @@ msgid "" "product data and its associated information within an application." msgstr "" "Représente un produit avec des attributs tels que la catégorie, la marque, " -"les étiquettes, l'état numérique, le nom, la description, le numéro de pièce " -"et l'étiquette. Fournit des propriétés utilitaires connexes pour récupérer " +"les étiquettes, l'état numérique, le nom, la description, le numéro de pièce" +" et l'étiquette. Fournit des propriétés utilitaires connexes pour récupérer " "les évaluations, le nombre de commentaires, le prix, la quantité et le " "nombre total de commandes. Conçue pour être utilisée dans un système de " "commerce électronique ou de gestion des stocks. Cette classe interagit avec " @@ -1986,14 +2015,14 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Représente un attribut dans le système. Cette classe est utilisée pour " "définir et gérer les attributs, qui sont des données personnalisables " -"pouvant être associées à d'autres entités. Les attributs sont associés à des " -"catégories, des groupes, des types de valeurs et des noms. Le modèle prend " +"pouvant être associées à d'autres entités. Les attributs sont associés à des" +" catégories, des groupes, des types de valeurs et des noms. Le modèle prend " "en charge plusieurs types de valeurs, notamment les chaînes de caractères, " "les entiers, les flottants, les booléens, les tableaux et les objets. Cela " "permet une structuration dynamique et flexible des données." @@ -2059,13 +2088,14 @@ msgstr "Attribut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Représente une valeur spécifique pour un attribut lié à un produit. Il relie " -"l'\"attribut\" à une \"valeur\" unique, ce qui permet une meilleure " -"organisation et une représentation dynamique des caractéristiques du produit." +"Représente une valeur spécifique pour un attribut lié à un produit. Il relie" +" l'\"attribut\" à une \"valeur\" unique, ce qui permet une meilleure " +"organisation et une représentation dynamique des caractéristiques du " +"produit." #: engine/core/models.py:788 msgid "attribute of this value" @@ -2082,16 +2112,16 @@ msgstr "La valeur spécifique de cet attribut" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"Représente une image de produit associée à un produit dans le système. Cette " -"classe est conçue pour gérer les images des produits, y compris la " +"Représente une image de produit associée à un produit dans le système. Cette" +" classe est conçue pour gérer les images des produits, y compris la " "fonctionnalité de téléchargement des fichiers d'image, leur association à " -"des produits spécifiques et la détermination de leur ordre d'affichage. Elle " -"comprend également une fonction d'accessibilité avec un texte alternatif " +"des produits spécifiques et la détermination de leur ordre d'affichage. Elle" +" comprend également une fonction d'accessibilité avec un texte alternatif " "pour les images." #: engine/core/models.py:826 @@ -2132,8 +2162,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Représente une campagne promotionnelle pour des produits avec une remise. " "Cette classe est utilisée pour définir et gérer des campagnes " @@ -2186,7 +2216,8 @@ msgstr "" "gestion des produits souhaités. La classe fournit des fonctionnalités " "permettant de gérer une collection de produits, en prenant en charge des " "opérations telles que l'ajout et la suppression de produits, ainsi que des " -"opérations permettant d'ajouter et de supprimer plusieurs produits à la fois." +"opérations permettant d'ajouter et de supprimer plusieurs produits à la " +"fois." #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2210,11 +2241,11 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Représente un enregistrement documentaire lié à un produit. Cette classe est " -"utilisée pour stocker des informations sur les documentaires liés à des " +"Représente un enregistrement documentaire lié à un produit. Cette classe est" +" utilisée pour stocker des informations sur les documentaires liés à des " "produits spécifiques, y compris les téléchargements de fichiers et leurs " "métadonnées. Elle contient des méthodes et des propriétés permettant de " "gérer le type de fichier et le chemin de stockage des fichiers " @@ -2235,24 +2266,24 @@ msgstr "Non résolu" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Représente une entité d'adresse qui comprend des détails de localisation et " "des associations avec un utilisateur. Elle fournit des fonctionnalités de " "stockage de données géographiques et d'adresses, ainsi qu'une intégration " "avec des services de géocodage. Cette classe est conçue pour stocker des " -"informations détaillées sur les adresses, y compris des éléments tels que la " -"rue, la ville, la région, le pays et la géolocalisation (longitude et " +"informations détaillées sur les adresses, y compris des éléments tels que la" +" rue, la ville, la région, le pays et la géolocalisation (longitude et " "latitude). Elle prend en charge l'intégration avec les API de géocodage, ce " -"qui permet de stocker les réponses brutes de l'API en vue d'un traitement ou " -"d'une inspection ultérieurs. La classe permet également d'associer une " +"qui permet de stocker les réponses brutes de l'API en vue d'un traitement ou" +" d'une inspection ultérieurs. La classe permet également d'associer une " "adresse à un utilisateur, ce qui facilite le traitement personnalisé des " "données." @@ -2319,8 +2350,8 @@ msgid "" msgstr "" "Représente un code promotionnel qui peut être utilisé pour des remises, en " "gérant sa validité, le type de remise et l'application. La classe PromoCode " -"stocke les détails d'un code promotionnel, notamment son identifiant unique, " -"les propriétés de la remise (montant ou pourcentage), la période de " +"stocke les détails d'un code promotionnel, notamment son identifiant unique," +" les propriétés de la remise (montant ou pourcentage), la période de " "validité, l'utilisateur associé (le cas échéant) et l'état de son " "utilisation. Elle comprend une fonctionnalité permettant de valider et " "d'appliquer le code promotionnel à une commande tout en veillant à ce que " @@ -2328,7 +2359,8 @@ msgstr "" #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" -msgstr "Code unique utilisé par un utilisateur pour bénéficier d'une réduction" +msgstr "" +"Code unique utilisé par un utilisateur pour bénéficier d'une réduction" #: engine/core/models.py:1088 msgid "promo code identifier" @@ -2336,7 +2368,8 @@ msgstr "Identifiant du code promotionnel" #: engine/core/models.py:1095 msgid "fixed discount amount applied if percent is not used" -msgstr "Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" +msgstr "" +"Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé" #: engine/core/models.py:1096 msgid "fixed discount amount" @@ -2344,7 +2377,8 @@ msgstr "Montant de l'escompte fixe" #: engine/core/models.py:1102 msgid "percentage discount applied if fixed amount is not used" -msgstr "Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" +msgstr "" +"Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé" #: engine/core/models.py:1103 msgid "percentage discount" @@ -2369,8 +2403,8 @@ msgstr "Heure de début de validité" #: engine/core/models.py:1120 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore " -"été utilisé." +"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore" +" été utilisé." #: engine/core/models.py:1121 msgid "usage timestamp" @@ -2413,18 +2447,18 @@ msgstr "Type de réduction non valide pour le code promo {self.uuid} !" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"Représente une commande passée par un utilisateur. Cette classe modélise une " -"commande dans l'application, y compris ses différents attributs tels que les " -"informations de facturation et d'expédition, le statut, l'utilisateur " -"associé, les notifications et les opérations connexes. Les commandes peuvent " -"être associées à des produits, des promotions peuvent être appliquées, des " -"adresses peuvent être définies et les détails d'expédition ou de facturation " -"peuvent être mis à jour. De même, la fonctionnalité permet de gérer les " +"Représente une commande passée par un utilisateur. Cette classe modélise une" +" commande dans l'application, y compris ses différents attributs tels que " +"les informations de facturation et d'expédition, le statut, l'utilisateur " +"associé, les notifications et les opérations connexes. Les commandes peuvent" +" être associées à des produits, des promotions peuvent être appliquées, des " +"adresses peuvent être définies et les détails d'expédition ou de facturation" +" peuvent être mis à jour. De même, la fonctionnalité permet de gérer les " "produits dans le cycle de vie de la commande." #: engine/core/models.py:1213 @@ -2500,7 +2534,8 @@ msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !" #: engine/core/models.py:1351 msgid "you cannot add products to an order that is not a pending one" msgstr "" -"Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en cours." +"Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en " +"cours." #: engine/core/models.py:1356 msgid "you cannot add inactive products to order" @@ -2607,7 +2642,8 @@ msgid "feedback comments" msgstr "Commentaires" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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." @@ -2636,16 +2672,17 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"Représente les produits associés aux commandes et leurs attributs. Le modèle " -"OrderProduct conserve les informations relatives à un produit faisant partie " -"d'une commande, y compris des détails tels que le prix d'achat, la quantité, " -"les attributs du produit et le statut. Il gère les notifications destinées à " -"l'utilisateur et aux administrateurs, ainsi que des opérations telles que le " -"renvoi du solde du produit ou l'ajout de commentaires. Ce modèle fournit " -"également des méthodes et des propriétés qui prennent en charge la logique " -"commerciale, comme le calcul du prix total ou la génération d'une URL de " -"téléchargement pour les produits numériques. Le modèle s'intègre aux modèles " -"de commande et de produit et stocke une référence à ces derniers." +"Représente les produits associés aux commandes et leurs attributs. Le modèle" +" OrderProduct conserve les informations relatives à un produit faisant " +"partie d'une commande, y compris des détails tels que le prix d'achat, la " +"quantité, les attributs du produit et le statut. Il gère les notifications " +"destinées à l'utilisateur et aux administrateurs, ainsi que des opérations " +"telles que le renvoi du solde du produit ou l'ajout de commentaires. Ce " +"modèle fournit également des méthodes et des propriétés qui prennent en " +"charge la logique commerciale, comme le calcul du prix total ou la " +"génération d'une URL de téléchargement pour les produits numériques. Le " +"modèle s'intègre aux modèles de commande et de produit et stocke une " +"référence à ces derniers." #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2657,7 +2694,8 @@ msgstr "Prix d'achat au moment de la commande" #: engine/core/models.py:1763 msgid "internal comments for admins about this ordered product" -msgstr "Commentaires internes pour les administrateurs sur ce produit commandé" +msgstr "" +"Commentaires internes pour les administrateurs sur ce produit commandé" #: engine/core/models.py:1764 msgid "internal comments" @@ -2755,9 +2793,9 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Représente la fonctionnalité de téléchargement des ressources numériques " "associées aux commandes. La classe DigitalAssetDownload permet de gérer et " @@ -2823,8 +2861,7 @@ msgstr "Bonjour %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Merci pour votre commande #%(order.pk)s ! Nous avons le plaisir de vous " @@ -2939,8 +2976,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Nous vous remercions pour votre commande ! Nous avons le plaisir de " @@ -2979,8 +3015,8 @@ msgstr "Les données et le délai d'attente sont tous deux nécessaires" #: engine/core/utils/caching.py:46 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" -"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre " -"0 et 216000 secondes." +"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre" +" 0 et 216000 secondes." #: engine/core/utils/emailing.py:27 #, python-brace-format @@ -3017,7 +3053,7 @@ msgstr "" "Les dimensions de l'image ne doivent pas dépasser w{max_width} x " "h{max_height} pixels." -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3025,28 +3061,28 @@ msgstr "" "Gère la demande d'index sitemap et renvoie une réponse XML. Il s'assure que " "la réponse inclut l'en-tête de type de contenu approprié pour XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Gère la réponse détaillée d'un plan du site. Cette fonction traite la " -"demande, récupère la réponse détaillée appropriée du plan du site et définit " -"l'en-tête Content-Type pour XML." +"demande, récupère la réponse détaillée appropriée du plan du site et définit" +" l'en-tête Content-Type pour XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Renvoie une liste des langues prises en charge et des informations " "correspondantes." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Renvoie les paramètres du site web sous la forme d'un objet JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3054,11 +3090,11 @@ msgstr "" "Gère les opérations de cache telles que la lecture et la définition des " "données de cache avec une clé et un délai spécifiés." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Gère les soumissions du formulaire `contact us`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3066,71 +3102,66 @@ msgstr "" "Gère les demandes de traitement et de validation des URL à partir des " "requêtes POST entrantes." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Traite les demandes de recherche globales." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Gère la logique de l'achat en tant qu'entreprise sans enregistrement." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gère le téléchargement d'un bien numérique associé à une commande.\n" -"Cette fonction tente de servir le fichier de ressource numérique situé dans " -"le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une " -"erreur HTTP 404 est générée pour indiquer que la ressource n'est pas " -"disponible." +"Cette fonction tente de servir le fichier de ressource numérique situé dans le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid est obligatoire" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "le produit de la commande n'existe pas" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "la commande doit être payée avant le téléchargement du bien numérique" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Le produit de la commande n'a pas de produit" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon introuvable" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gère les demandes de favicon d'un site web.\n" -"Cette fonction tente de servir le fichier favicon situé dans le répertoire " -"statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP " -"404 est générée pour indiquer que la ressource n'est pas disponible." +"Cette fonction tente de servir le fichier favicon situé dans le répertoire statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Redirige la requête vers la page d'index de l'interface d'administration. " -"Cette fonction gère les requêtes HTTP entrantes et les redirige vers la page " -"d'index de l'interface d'administration de Django. Elle utilise la fonction " -"`redirect` de Django pour gérer la redirection HTTP." +"Cette fonction gère les requêtes HTTP entrantes et les redirige vers la page" +" d'index de l'interface d'administration de Django. Elle utilise la fonction" +" `redirect` de Django pour gérer la redirection HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Renvoie la version actuelle d'eVibes." @@ -3151,10 +3182,11 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Représente un jeu de vues pour la gestion des objets AttributeGroup. Gère " "les opérations liées à l'AttributeGroup, notamment le filtrage, la " @@ -3184,14 +3216,15 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Un viewset pour la gestion des objets AttributeValue. Ce viewset fournit des " -"fonctionnalités pour lister, récupérer, créer, mettre à jour et supprimer " +"Un viewset pour la gestion des objets AttributeValue. Ce viewset fournit des" +" fonctionnalités pour lister, récupérer, créer, mettre à jour et supprimer " "des objets AttributeValue. Il s'intègre aux mécanismes de viewset du cadre " "REST de Django et utilise les sérialiseurs appropriés pour les différentes " -"actions. Les capacités de filtrage sont fournies par le backend DjangoFilter." +"actions. Les capacités de filtrage sont fournies par le backend " +"DjangoFilter." #: engine/core/viewsets.py:214 msgid "" @@ -3202,8 +3235,8 @@ msgid "" "can access specific data." msgstr "" "Gère les vues pour les opérations liées à la catégorie. La classe " -"CategoryViewSet est responsable de la gestion des opérations liées au modèle " -"Category dans le système. Elle permet d'extraire, de filtrer et de " +"CategoryViewSet est responsable de la gestion des opérations liées au modèle" +" Category dans le système. Elle permet d'extraire, de filtrer et de " "sérialiser les données relatives aux catégories. Le jeu de vues applique " "également des permissions pour s'assurer que seuls les utilisateurs " "autorisés peuvent accéder à des données spécifiques." @@ -3217,9 +3250,9 @@ msgid "" msgstr "" "Représente un jeu de vues pour la gestion des instances de marque. Cette " "classe fournit des fonctionnalités d'interrogation, de filtrage et de " -"sérialisation des objets Brand. Elle utilise le cadre ViewSet de Django pour " -"simplifier la mise en œuvre des points d'extrémité de l'API pour les objets " -"Brand." +"sérialisation des objets Brand. Elle utilise le cadre ViewSet de Django pour" +" simplifier la mise en œuvre des points d'extrémité de l'API pour les objets" +" Brand." #: engine/core/viewsets.py:438 msgid "" @@ -3236,8 +3269,8 @@ msgstr "" "sérialisation et les opérations sur des instances spécifiques. Elle s'étend " "à partir de `EvibesViewSet` pour utiliser des fonctionnalités communes et " "s'intègre au framework REST de Django pour les opérations API RESTful. Il " -"comprend des méthodes pour récupérer les détails d'un produit, appliquer des " -"permissions et accéder aux commentaires connexes d'un produit." +"comprend des méthodes pour récupérer les détails d'un produit, appliquer des" +" permissions et accéder aux commentaires connexes d'un produit." #: engine/core/viewsets.py:568 msgid "" @@ -3247,8 +3280,8 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Représente un jeu de vues pour la gestion des objets Vendeur. Ce jeu de vues " -"permet d'extraire, de filtrer et de sérialiser les données relatives aux " +"Représente un jeu de vues pour la gestion des objets Vendeur. Ce jeu de vues" +" permet d'extraire, de filtrer et de sérialiser les données relatives aux " "vendeurs. Il définit l'ensemble de requêtes, les configurations de filtrage " "et les classes de sérialisation utilisées pour gérer les différentes " "actions. L'objectif de cette classe est de fournir un accès simplifié aux " @@ -3260,8 +3293,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Représentation d'un ensemble de vues gérant des objets de retour " @@ -3278,9 +3311,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet pour la gestion des commandes et des opérations connexes. Cette " @@ -3297,15 +3330,15 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Fournit un jeu de vues pour la gestion des entités OrderProduct. Ce jeu de " "vues permet d'effectuer des opérations CRUD et des actions personnalisées " "spécifiques au modèle OrderProduct. Il inclut le filtrage, les contrôles de " -"permission et le changement de sérialiseur en fonction de l'action demandée. " -"En outre, il fournit une action détaillée pour gérer le retour " +"permission et le changement de sérialiseur en fonction de l'action demandée." +" En outre, il fournit une action détaillée pour gérer le retour " "d'informations sur les instances OrderProduct." #: engine/core/viewsets.py:867 @@ -3332,8 +3365,8 @@ msgstr "Gère les opérations liées aux données de stock dans le système." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3341,9 +3374,9 @@ msgstr "" "Jeu de vues pour la gestion des opérations de la liste de souhaits. Le jeu " "de vues WishlistViewSet fournit des points d'extrémité pour interagir avec " "la liste de souhaits d'un utilisateur, permettant la récupération, la " -"modification et la personnalisation des produits de la liste de souhaits. Ce " -"jeu de vues facilite les fonctionnalités telles que l'ajout, la suppression " -"et les actions en bloc pour les produits de la liste de souhaits. Des " +"modification et la personnalisation des produits de la liste de souhaits. Ce" +" jeu de vues facilite les fonctionnalités telles que l'ajout, la suppression" +" et les actions en bloc pour les produits de la liste de souhaits. Des " "contrôles de permissions sont intégrés pour s'assurer que les utilisateurs " "ne peuvent gérer que leur propre liste de souhaits, sauf si des permissions " "explicites sont accordées." @@ -3357,11 +3390,11 @@ msgid "" "on the request context." msgstr "" "Cette classe fournit une fonctionnalité de viewset pour la gestion des " -"objets `Address`. La classe AddressViewSet permet d'effectuer des opérations " -"CRUD, des filtrages et des actions personnalisées liées aux entités adresse. " -"Elle inclut des comportements spécialisés pour différentes méthodes HTTP, " -"des dérogations au sérialiseur et une gestion des autorisations basée sur le " -"contexte de la demande." +"objets `Address`. La classe AddressViewSet permet d'effectuer des opérations" +" CRUD, des filtrages et des actions personnalisées liées aux entités " +"adresse. Elle inclut des comportements spécialisés pour différentes méthodes" +" HTTP, des dérogations au sérialiseur et une gestion des autorisations basée" +" sur le contexte de la demande." #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3381,4 +3414,3 @@ msgstr "" "de produits. Elle permet un filtrage flexible sur des attributs spécifiques " "en utilisant le backend de filtrage spécifié et utilise dynamiquement " "différents sérialiseurs en fonction de l'action effectuée." - diff --git a/engine/core/locale/he_IL/LC_MESSAGES/django.mo b/engine/core/locale/he_IL/LC_MESSAGES/django.mo index 34bcde02548fc645e1b60f5d995e27dd663461e0..a8bd344212daae755a6508eb9bc1d8eba3e26c4c 100644 GIT binary patch delta 15054 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 iBHCj7(DbgR3WN{pyc`ZH@&)E-UMrq!C=XsfDd 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "פעיל" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "אם מוגדר כ-false, אובייקט זה לא יהיה גלוי למשתמשים ללא ההרשאה הנדרשת." #: engine/core/abstract.py:23 engine/core/choices.py:18 @@ -152,7 +153,8 @@ msgstr "נמסר" msgid "canceled" msgstr "בוטל" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "נכשל" @@ -180,11 +182,24 @@ msgstr "Momental" msgid "successful" msgstr "מוצלח" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "סכימת OpenAPI בפורמט נבחר בשפה נבחרת" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"סכימת OpenApi3 עבור ממשק API זה. ניתן לבחור את הפורמט באמצעות משא ומתן על " +"תוכן. ניתן לבחור את השפה באמצעות Accept-Language ופרמטר שאילתה." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "קלט/פלט מטמון" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -192,708 +207,719 @@ msgstr "" "החל רק מפתח לקריאת נתונים מותרים מהמטמון. החל מפתח, נתונים וזמן המתנה עם " "אימות כדי לכתוב נתונים למטמון." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "קבל רשימה של השפות הנתמכות" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "קבל את הפרמטרים החשופים של היישום" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "שלח הודעה לצוות התמיכה" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "בקש כתובת URL של CORS. מותר להשתמש רק ב-https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "חפש בין מוצרים, קטגוריות ומותגים" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "נקודת קצה לחיפוש גלובלי לשאילתות בטבלאות הפרויקט" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "רכשו הזמנה כעסק" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" "רכשו הזמנה כעסק, באמצעות `products` המסופק עם `product_uuid` ו-`attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "הורדת נכס דיגיטלי מהזמנה דיגיטלית שנרכשה" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "הצג את כל קבוצות התכונות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "איתור קבוצת תכונות אחת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "צור קבוצת תכונות" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "מחיקת קבוצת תכונות" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "שכתוב קבוצת תכונות קיימת תוך שמירת תכונות שאינן ניתנות לעריכה" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "שכתוב שדות מסוימים בקבוצת תכונות קיימת תוך שמירת תכונות שאינן ניתנות לעריכה" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "הצג את כל התכונות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "איתור תכונה בודדת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "צור תכונה" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "מחיקת תכונה" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "שכתוב תכונה קיימת תוך שמירת תכונות שאינן ניתנות לעריכה" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "שכתוב שדות מסוימים של תכונה קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "רשימת כל ערכי התכונות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "איתור ערך תכונה בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "צור ערך תכונה" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "מחיקת ערך תכונה" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "שכתוב ערך תכונה קיים תוך שמירת תכונות שאינן ניתנות לעריכה" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "שכתוב שדות מסוימים של ערך תכונה קיים תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "הצג את כל הקטגוריות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "איתור קטגוריה אחת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "קטגוריה UUID או slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "צור קטגוריה" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "מחק קטגוריה" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "שכתוב קטגוריה קיימת תוך שמירת פריטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "שכתוב שדות מסוימים בקטגוריה קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "תמונת מצב SEO Meta" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "מחזיר תמונת מצב של מטא-נתוני SEO של הקטגוריה" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "הצג את כל הקטגוריות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "למשתמשים שאינם אנשי צוות, מוצגות רק ההזמנות שלהם." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "חיפוש תת-מחרוזת ללא הבחנה בין אותיות גדולות וקטנות ב-human_readable_id, " "order_products.product.name ו-order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "סנן הזמנות עם buy_time >= תאריך ושעה זה ב-ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "סנן הזמנות עם buy_time <= תאריך ושעה זה ב-ISO 8601" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "סינון לפי UUID של הזמנה מדויק" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "סינון לפי מספר הזמנה מדויק הניתן לקריאה על ידי בני אדם" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "סינון לפי כתובת הדוא\"ל של המשתמש (התאמה מדויקת ללא הבחנה בין אותיות רישיות " "לאותיות קטנות)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "סינון לפי UUID של המשתמש" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "סינון לפי סטטוס הזמנה (התאמת תת-מחרוזת ללא הבחנה בין אותיות גדולות וקטנות)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "מיין לפי אחד מהפרמטרים הבאים: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. הוסף קידומת '-' עבור מיון יורד " "(לדוגמה, '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "איתור קטגוריה אחת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "הזמן UUID או מזהה קריא לאדם" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "צור תכונה" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "לא עובד עבור משתמשים שאינם עובדים." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "מחיקת תכונה" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "שכתוב קטגוריה קיימת תוך שמירת פריטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "שכתוב שדות מסוימים בקטגוריה קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "מחיר הרכישה בעת ההזמנה" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"מסיים את רכישת ההזמנה. אם נעשה שימוש ב-`force_balance`, הרכישה תושלם באמצעות " -"היתרה של המשתמש; אם נעשה שימוש ב-`force_payment`, תתבצע עסקה." +"מסיים את רכישת ההזמנה. אם נעשה שימוש ב-`force_balance`, הרכישה תושלם באמצעות" +" היתרה של המשתמש; אם נעשה שימוש ב-`force_payment`, תתבצע עסקה." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "איתור הזמנה מושהית נוכחית של משתמש" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "מאתר הזמנה ממתנה נוכחית של משתמש מאומת" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "לרכוש הזמנה ללא יצירת חשבון" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "מסיים את רכישת ההזמנה עבור משתמש לא רשום." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "הוסף מוצר להזמנה" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "מוסיף מוצר להזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "הוסף רשימת מוצרים להזמנה, הכמויות לא ייספרו" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" "מוסיף רשימת מוצרים להזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "הסר מוצר מההזמנה" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "מסיר מוצר מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "הסר מוצר מההזמנה, הכמויות לא ייספרו" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "מסיר רשימת מוצרים מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." +msgstr "" +"מסיר רשימת מוצרים מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "הצג את כל התכונות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "למשתמשים שאינם אנשי צוות, מוצגות רק רשימות המשאלות שלהם." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "איתור תכונה בודדת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "צור תכונה" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "לא עובד עבור משתמשים שאינם עובדים." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "מחיקת תכונה" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "שכתוב תכונה קיימת תוך שמירת תכונות שאינן ניתנות לעריכה" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "שכתוב שדות מסוימים של תכונה קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "איתור רשימת המשאלות הנוכחית של משתמש" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "מציג רשימת משאלות בהמתנה של משתמש מאומת" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "הוסף מוצר להזמנה" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "מוסיף מוצר לרשימת המשאלות באמצעות `product_uuid` שסופק." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "הסר מוצר מרשימת המשאלות" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "מסיר מוצר מרשימת המשאלות באמצעות `product_uuid` שסופק." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "הוסף מוצרים רבים לרשימת המשאלות" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "מוסיף מוצרים רבים לרשימת המשאלות באמצעות `product_uuids` שסופק." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "הסר מוצר מההזמנה" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "מסיר מוצרים רבים מרשימת המשאלות באמצעות `product_uuids` שסופק." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -"סינון לפי זוגות שם/ערך של תכונה אחת או יותר. • **תחביר**: `attr_name=method-" -"value[;attr2=method2-value2]…` • **שיטות** (ברירת המחדל היא `icontains` אם " -"לא צוין): `iexact`, `exact`, `icontains`, `contains`, `isnull`, " -"`startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, " -"`lt`, `lte`, `gt`, `gte`, `in` • **הקלדת ערכים**: תחילה מתבצע ניסיון JSON " -"(כך שניתן להעביר רשימות/מילונים), `true`/`false` עבור ערכי בוליאניים, מספרים " -"שלמים, מספרים צפים; אחרת מטופל כמחרוזת. • **Base64**: קידומת עם `b64-` כדי " -"לקודד את הערך הגולמי ב-base64 בטוח ל-URL. \n" -"דוגמאות: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" +"סינון לפי זוגות שם/ערך של תכונה אחת או יותר. • **תחביר**: `attr_name=method-value[;attr2=method2-value2]…` • **שיטות** (ברירת המחדל היא `icontains` אם לא צוין): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **הקלדת ערכים**: תחילה מתבצע ניסיון JSON (כך שניתן להעביר רשימות/מילונים), `true`/`false` עבור ערכי בוליאניים, מספרים שלמים, מספרים צפים; אחרת מטופל כמחרוזת. • **Base64**: קידומת עם `b64-` כדי לקודד את הערך הגולמי ב-base64 בטוח ל-URL. \n" +"דוגמאות: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "הצג את כל המוצרים (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(מדויק) UUID של המוצר" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"רשימה של שדות למיון, מופרדים בפסיקים. קידומת `-` למיון יורד. **מותר:** uuid, " -"rating, name, slug, created, modified, price, random" +"רשימה של שדות למיון, מופרדים בפסיקים. קידומת `-` למיון יורד. **מותר:** uuid," +" rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "איתור מוצר בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID או Slug של המוצר" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "צור מוצר" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "שכתוב מוצר קיים, תוך שמירה על שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "עדכן שדות מסוימים של מוצר קיים, תוך שמירה על שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "מחק מוצר" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "מפרט את כל המשובים המותרים עבור מוצר" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "מחזיר תמונת מצב של מטא-נתוני SEO של המוצר" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "רשימת כל הכתובות" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "איתור כתובת אחת" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "צור כתובת חדשה" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "מחק כתובת" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "עדכון כתובת שלמה" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "עדכון חלקי של כתובת" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "השלמת כתובת אוטומטית" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "מחרוזת שאילתת נתונים גולמיים, אנא הוסף נתונים מנקודת הקצה של geo-IP" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "מגביל את כמות התוצאות, 1 < limit < 10, ברירת מחדל: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "הצג את כל המשובים (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "איתור משוב בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "ליצור משוב" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "מחק משוב" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "לשכתב משוב קיים תוך שמירת פריטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "לשכתב כמה שדות של משוב קיים תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "רשימת כל קשרי ההזמנות-מוצרים (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "איתור קשר יחיד בין הזמנה למוצר (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "יצירת קשר חדש בין הזמנה למוצר" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "החלפת קשר בין הזמנה למוצר קיים" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "עדכון חלקי של קשר בין הזמנה למוצר קיים" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "מחיקת קשר בין הזמנה למוצר" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "הוספה או הסרה של משוב על קשר בין הזמנה למוצר" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "הצג את כל המותגים (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "איתור מותג בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID או סלאג של המותג" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "יצירת מותג" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "מחק מותג" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "שכתוב מותג קיים תוך שמירה על אלמנטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "שכתוב שדות מסוימים של מותג קיים תוך שמירה על שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "תמונת מצב SEO Meta עבור המותג" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "הצג את כל הספקים (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "איתור ספק בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "צור ספק" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "מחק את הספק" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "שכתוב ספק קיים תוך שמירת פריטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "שכתוב שדות מסוימים של ספק קיים תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "הצג את כל תמונות המוצר (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "איתור תמונה של מוצר בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "צור תמונה של המוצר" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "מחיקת תמונת מוצר" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "שכתוב תמונה קיימת של מוצר תוך שמירת אלמנטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "שכתוב שדות מסוימים בתמונת מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "הצג את כל קודי המבצע (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "איתור קוד קידום מכירות בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "צור קוד קידום מכירות" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "מחק את קוד המבצע" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "שכתוב קוד קידום מכירות קיים תוך שמירה על תוכן שאינו ניתן לעריכה" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "שכתוב שדות מסוימים בקוד קידום מכירות קיים תוך שמירה על שדות שאינם ניתנים " "לעריכה" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "הצג את כל המבצעים (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "איתור מבצע בודד (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "צור מבצע" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "מחק מבצע" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "שכתוב מבצע קיים תוך שמירת פריטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "שכתוב שדות מסוימים של מבצע קיים תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "הצג את כל המניות (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "איתור מניה בודדת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "צור רישום מלאי" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "מחיקת רשומת מלאי" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "שכתוב רשומת מלאי קיימת תוך שמירת פריטים שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "שכתוב שדות מסוימים ברשומת מלאי קיימת תוך שמירת שדות שאינם ניתנים לעריכה" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "הצג את כל תגי המוצר (תצוגה פשוטה)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "איתור תגית מוצר בודדת (תצוגה מפורטת)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "צור תגית מוצר" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "מחק תווית מוצר" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "שכתוב תגית מוצר קיימת תוך שמירת תוכן שאינו ניתן לעריכה" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" -msgstr "שכתוב שדות מסוימים בתגית מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה" +msgstr "" +"שכתוב שדות מסוימים בתגית מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה" #: engine/core/elasticsearch/__init__.py:122 #: engine/core/elasticsearch/__init__.py:570 @@ -1043,7 +1069,7 @@ msgstr "נתונים במטמון" msgid "camelized JSON data from the requested URL" msgstr "נתוני JSON שעברו קמלאיזציה מה-URL המבוקש" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "רק כתובות URL המתחילות ב-http(s):// מותרות" @@ -1127,8 +1153,8 @@ msgstr "קנה הזמנה" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "אנא שלחו את התכונות כמחרוזת מעוצבת כך: attr1=value1,attr2=value2" #: engine/core/graphene/mutations.py:550 @@ -1203,7 +1229,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "אילו תכונות וערכים ניתן להשתמש בהם לסינון קטגוריה זו." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "מחירים מינימליים ומקסימליים עבור מוצרים בקטגוריה זו, אם זמינים." #: engine/core/graphene/object_types.py:206 @@ -1557,8 +1584,8 @@ msgid "" msgstr "" "מייצג תגית מוצר המשמשת לסיווג או זיהוי מוצרים. מחלקת ProductTag נועדה לזהות " "ולסווג מוצרים באופן ייחודי באמצעות שילוב של מזהה תגית פנימי ושם תצוגה " -"ידידותי למשתמש. היא תומכת בפעולות המיוצאות באמצעות mixins ומספקת התאמה אישית " -"של מטא-נתונים למטרות ניהוליות." +"ידידותי למשתמש. היא תומכת בפעולות המיוצאות באמצעות mixins ומספקת התאמה אישית" +" של מטא-נתונים למטרות ניהוליות." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1587,8 +1614,8 @@ msgid "" "attributes for an internal tag identifier and a user-friendly display name." msgstr "" "מייצג תווית קטגוריה המשמשת למוצרים. מחלקה זו מדגמת תווית קטגוריה שניתן " -"להשתמש בה כדי לקשר ולסווג מוצרים. היא כוללת תכונות עבור מזהה תווית פנימי ושם " -"תצוגה ידידותי למשתמש." +"להשתמש בה כדי לקשר ולסווג מוצרים. היא כוללת תכונות עבור מזהה תווית פנימי ושם" +" תצוגה ידידותי למשתמש." #: engine/core/models.py:254 msgid "category tag" @@ -1666,10 +1693,11 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"מייצג אובייקט מותג במערכת. מחלקה זו מטפלת במידע ובתכונות הקשורים למותג, כולל " -"שמו, לוגואים, תיאור, קטגוריות קשורות, סלוגן ייחודי וסדר עדיפות. היא מאפשרת " +"מייצג אובייקט מותג במערכת. מחלקה זו מטפלת במידע ובתכונות הקשורים למותג, כולל" +" שמו, לוגואים, תיאור, קטגוריות קשורות, סלוגן ייחודי וסדר עדיפות. היא מאפשרת " "ארגון וייצוג של נתונים הקשורים למותג בתוך היישום." #: engine/core/models.py:448 @@ -1714,8 +1742,8 @@ msgstr "קטגוריות" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1803,11 +1831,11 @@ msgid "" "product data and its associated information within an application." msgstr "" "מייצג מוצר עם תכונות כגון קטגוריה, מותג, תגיות, סטטוס דיגיטלי, שם, תיאור, " -"מספר חלק ו-slug. מספק תכונות שירות נלוות לאחזור דירוגים, ספירת משובים, מחיר, " -"כמות והזמנות סה\"כ. מיועד לשימוש במערכת המטפלת במסחר אלקטרוני או בניהול " +"מספר חלק ו-slug. מספק תכונות שירות נלוות לאחזור דירוגים, ספירת משובים, מחיר," +" כמות והזמנות סה\"כ. מיועד לשימוש במערכת המטפלת במסחר אלקטרוני או בניהול " "מלאי. מחלקה זו מתקשרת עם מודלים נלווים (כגון קטגוריה, מותג ותגית מוצר) " -"ומנהלת את המטמון עבור תכונות הנגישות בתדירות גבוהה כדי לשפר את הביצועים. הוא " -"משמש להגדרה ולעיבוד נתוני מוצר והמידע הקשור אליו בתוך יישום." +"ומנהלת את המטמון עבור תכונות הנגישות בתדירות גבוהה כדי לשפר את הביצועים. הוא" +" משמש להגדרה ולעיבוד נתוני מוצר והמידע הקשור אליו בתוך יישום." #: engine/core/models.py:585 msgid "category this product belongs to" @@ -1862,14 +1890,15 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "מייצג תכונה במערכת. מחלקה זו משמשת להגדרת תכונות ולניהולן. תכונות הן נתונים " -"הניתנים להתאמה אישית, שניתן לקשר לישויות אחרות. לתכונות יש קטגוריות, קבוצות, " -"סוגי ערכים ושמות משויכים. המודל תומך בסוגים רבים של ערכים, כולל מחרוזת, מספר " -"שלם, מספר צף, בוליאני, מערך ואובייקט. הדבר מאפשר בניית נתונים דינמית וגמישה." +"הניתנים להתאמה אישית, שניתן לקשר לישויות אחרות. לתכונות יש קטגוריות, קבוצות," +" סוגי ערכים ושמות משויכים. המודל תומך בסוגים רבים של ערכים, כולל מחרוזת, " +"מספר שלם, מספר צף, בוליאני, מערך ואובייקט. הדבר מאפשר בניית נתונים דינמית " +"וגמישה." #: engine/core/models.py:733 msgid "group of this attribute" @@ -1930,9 +1959,9 @@ msgstr "תכונה" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "מייצג ערך ספציפי עבור תכונה המקושרת למוצר. הוא מקשר את ה\"תכונה\" ל\"ערך\" " "ייחודי, ומאפשר ארגון טוב יותר וייצוג דינמי של מאפייני המוצר." @@ -1952,8 +1981,8 @@ msgstr "הערך הספציפי עבור תכונה זו" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -1999,8 +2028,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "מייצג קמפיין קידום מכירות למוצרים בהנחה. מחלקה זו משמשת להגדרת וניהול " "קמפיינים לקידום מכירות המציעים הנחה באחוזים על מוצרים. המחלקה כוללת תכונות " @@ -2072,8 +2101,8 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "מייצג תיעוד הקשור למוצר. מחלקה זו משמשת לאחסון מידע על תיעוד הקשור למוצרים " "ספציפיים, כולל העלאת קבצים ומטא-נתונים שלהם. היא מכילה שיטות ותכונות לטיפול " @@ -2094,21 +2123,22 @@ msgstr "לא פתור" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "מייצג ישות כתובת הכוללת פרטים על מיקום וקשרים עם משתמש. מספק פונקציונליות " "לאחסון נתונים גיאוגרפיים וכתובות, וכן אינטגרציה עם שירותי קידוד גיאוגרפי. " -"מחלקה זו נועדה לאחסן מידע מפורט על כתובות, כולל רכיבים כגון רחוב, עיר, אזור, " -"מדינה ומיקום גיאוגרפי (קו אורך וקו רוחב). היא תומכת באינטגרציה עם ממשקי API " -"לקידוד גיאוגרפי, ומאפשרת אחסון של תגובות API גולמיות לעיבוד או בדיקה נוספים. " -"הסוג גם מאפשר לקשר כתובת למשתמש, מה שמקל על טיפול בנתונים מותאמים אישית." +"מחלקה זו נועדה לאחסן מידע מפורט על כתובות, כולל רכיבים כגון רחוב, עיר, אזור," +" מדינה ומיקום גיאוגרפי (קו אורך וקו רוחב). היא תומכת באינטגרציה עם ממשקי API" +" לקידוד גיאוגרפי, ומאפשרת אחסון של תגובות API גולמיות לעיבוד או בדיקה " +"נוספים. הסוג גם מאפשר לקשר כתובת למשתמש, מה שמקל על טיפול בנתונים מותאמים " +"אישית." #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2174,8 +2204,8 @@ msgstr "" "מייצג קוד קידום מכירות שניתן להשתמש בו לקבלת הנחות, לניהול תוקפו, סוג ההנחה " "והשימוש בו. מחלקת PromoCode מאחסנת פרטים אודות קוד קידום מכירות, כולל המזהה " "הייחודי שלו, מאפייני ההנחה (סכום או אחוז), תקופת התוקף, המשתמש המשויך (אם " -"יש) ומצב השימוש בו. היא כוללת פונקציונליות לאימות והחלת קוד הקידום על הזמנה, " -"תוך הקפדה על עמידה באילוצים." +"יש) ומצב השימוש בו. היא כוללת פונקציונליות לאימות והחלת קוד הקידום על הזמנה," +" תוך הקפדה על עמידה באילוצים." #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2261,16 +2291,16 @@ msgstr "סוג הנחה לא חוקי עבור קוד קידום מכירות {s msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "מייצג הזמנה שבוצעה על ידי משתמש. מחלקה זו מדמה הזמנה בתוך היישום, כולל " "תכונותיה השונות כגון פרטי חיוב ומשלוח, סטטוס, משתמש קשור, התראות ופעולות " "נלוות. להזמנות יכולות להיות מוצרים נלווים, ניתן להחיל עליהן מבצעים, להגדיר " -"כתובות ולעדכן פרטי משלוח או חיוב. כמו כן, הפונקציונליות תומכת בניהול המוצרים " -"במחזור החיים של ההזמנה." +"כתובות ולעדכן פרטי משלוח או חיוב. כמו כן, הפונקציונליות תומכת בניהול המוצרים" +" במחזור החיים של ההזמנה." #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2424,8 +2454,8 @@ msgid "" msgstr "" "מנהל משוב משתמשים על מוצרים. מחלקה זו נועדה לאסוף ולאחסן משוב משתמשים על " "מוצרים ספציפיים שרכשו. היא מכילה תכונות לאחסון הערות משתמשים, הפניה למוצר " -"הקשור בהזמנה ודירוג שהוקצה על ידי המשתמש. המחלקה משתמשת בשדות מסד נתונים כדי " -"למדל ולנהל ביעילות נתוני משוב." +"הקשור בהזמנה ודירוג שהוקצה על ידי המשתמש. המחלקה משתמשת בשדות מסד נתונים כדי" +" למדל ולנהל ביעילות נתוני משוב." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2436,7 +2466,8 @@ msgid "feedback comments" msgstr "הערות משוב" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "מתייחס למוצר הספציפי בהזמנה שעליה מתייחס משוב זה." #: engine/core/models.py:1720 @@ -2463,8 +2494,8 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"מייצג מוצרים הקשורים להזמנות ותכונותיהם. מודל OrderProduct שומר מידע על מוצר " -"שהוא חלק מהזמנה, כולל פרטים כגון מחיר הרכישה, כמות, תכונות המוצר ומצב. הוא " +"מייצג מוצרים הקשורים להזמנות ותכונותיהם. מודל OrderProduct שומר מידע על מוצר" +" שהוא חלק מהזמנה, כולל פרטים כגון מחיר הרכישה, כמות, תכונות המוצר ומצב. הוא " "מנהל התראות למשתמש ולמנהלים ומטפל בפעולות כגון החזרת יתרת המוצר או הוספת " "משוב. מודל זה מספק גם שיטות ותכונות התומכות בלוגיקה עסקית, כגון חישוב המחיר " "הכולל או יצירת כתובת URL להורדה עבור מוצרים דיגיטליים. המודל משתלב עם מודלי " @@ -2576,14 +2607,14 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "מייצג את פונקציונליות ההורדה של נכסים דיגיטליים הקשורים להזמנות. מחלקת " "DigitalAssetDownload מספקת את היכולת לנהל ולהיכנס להורדות הקשורות למוצרים " -"שהוזמנו. היא שומרת מידע על המוצר שהוזמן, מספר ההורדות והאם הנכס גלוי לציבור. " -"היא כוללת שיטה ליצירת כתובת URL להורדת הנכס כאשר ההזמנה הקשורה נמצאת במצב " +"שהוזמנו. היא שומרת מידע על המוצר שהוזמן, מספר ההורדות והאם הנכס גלוי לציבור." +" היא כוללת שיטה ליצירת כתובת URL להורדת הנכס כאשר ההזמנה הקשורה נמצאת במצב " "'הושלמה'." #: engine/core/models.py:1961 @@ -2640,12 +2671,11 @@ msgstr "שלום %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"תודה על הזמנתך #%(order.pk)s! אנו שמחים להודיע לך שהזמנתך נכנסה לעיבוד. להלן " -"פרטי הזמנתך:" +"תודה על הזמנתך #%(order.pk)s! אנו שמחים להודיע לך שהזמנתך נכנסה לעיבוד. להלן" +" פרטי הזמנתך:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2746,8 +2776,7 @@ msgstr "תודה על שהייתכם איתנו! הענקנו לכם קוד קי #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "תודה על הזמנתך! אנו שמחים לאשר את רכישתך. להלן פרטי הזמנתך:" @@ -2815,15 +2844,15 @@ msgstr "יש להגדיר את הפרמטר NOMINATIM_URL!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "מידות התמונה לא יעלו על w{max_width} x h{max_height} פיקסלים!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול " -"את כותרת סוג התוכן המתאימה ל-XML." +"מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול" +" את כותרת סוג התוכן המתאימה ל-XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2832,93 +2861,93 @@ msgstr "" "מטפל בתגובה לתצוגה מפורטת של מפת אתר. פונקציה זו מעבדת את הבקשה, משיגה את " "התגובה המתאימה לפרטי מפת האתר, וקובעת את כותרת Content-Type עבור XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "מחזיר רשימה של שפות נתמכות והמידע המתאים להן." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "מחזיר את הפרמטרים של האתר כאובייקט JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" "מטפל בפעולות מטמון כגון קריאה והגדרת נתוני מטמון עם מפתח וזמן המתנה מוגדרים." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "מטפל בהגשת טפסי \"צור קשר\"." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "מטפל בבקשות לעיבוד ואימות כתובות URL מבקשות POST נכנסות." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "מטפל בשאילתות חיפוש גלובליות." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "מטפל בהיגיון הרכישה כעסק ללא רישום." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "מטפל בהורדת נכס דיגיטלי הקשור להזמנה. פונקציה זו מנסה להציג את קובץ הנכס " "הדיגיטלי הנמצא בספריית האחסון של הפרויקט. אם הקובץ לא נמצא, מתקבלת שגיאת " "HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid נדרש" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "המוצר שהוזמן אינו קיים" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "ניתן להוריד את הנכס הדיגיטלי פעם אחת בלבד" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "יש לשלם את ההזמנה לפני הורדת הנכס הדיגיטלי" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "למוצר ההזמנה אין מוצר" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "לא נמצא סמל מועדף" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "מטפל בבקשות לסמל המועדף של אתר אינטרנט. פונקציה זו מנסה להציג את קובץ הסמל " "המועדף הנמצא בספרייה הסטטית של הפרויקט. אם קובץ הסמל המועדף לא נמצא, מתקבלת " "שגיאת HTTP 404 המציינת שהמשאב אינו זמין." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"מנתב את הבקשה לדף האינדקס של המנהל. הפונקציה מטפלת בבקשות HTTP נכנסות ומנתבת " -"אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` של " -"Django לטיפול בהפניה HTTP." +"מנתב את הבקשה לדף האינדקס של המנהל. הפונקציה מטפלת בבקשות HTTP נכנסות ומנתבת" +" אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` " +"של Django לטיפול בהפניה HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "מחזיר את הגרסה הנוכחית של eVibes." @@ -2930,17 +2959,18 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-Evibes. מחלקת EvibesViewSet יורשת " -"מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות Evibes. " -"היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה הנוכחית, " -"הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד." +"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-Evibes. מחלקת EvibesViewSet יורשת" +" מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות " +"Evibes. היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה " +"הנוכחית, הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "מייצג קבוצת תצוגות לניהול אובייקטי AttributeGroup. מטפל בפעולות הקשורות " "ל-AttributeGroup, כולל סינון, סידור סדרתי ואחזור נתונים. מחלקה זו היא חלק " @@ -2966,8 +2996,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "סט תצוגה לניהול אובייקטי AttributeValue. סט תצוגה זה מספק פונקציונליות " "לרישום, אחזור, יצירה, עדכון ומחיקה של אובייקטי AttributeValue. הוא משתלב " @@ -3008,10 +3038,10 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"מנהל פעולות הקשורות למודל `Product` במערכת. מחלקה זו מספקת מערך תצוגה לניהול " -"מוצרים, כולל סינון, סידור סדרתי ופעולות על מופעים ספציפיים. היא מרחיבה את " -"`EvibesViewSet` כדי להשתמש בפונקציונליות משותפת ומשתלבת עם מסגרת Django REST " -"עבור פעולות RESTful API. כוללת שיטות לאחזור פרטי מוצר, החלת הרשאות וגישה " +"מנהל פעולות הקשורות למודל `Product` במערכת. מחלקה זו מספקת מערך תצוגה לניהול" +" מוצרים, כולל סינון, סידור סדרתי ופעולות על מופעים ספציפיים. היא מרחיבה את " +"`EvibesViewSet` כדי להשתמש בפונקציונליות משותפת ומשתלבת עם מסגרת Django REST" +" עבור פעולות RESTful API. כוללת שיטות לאחזור פרטי מוצר, החלת הרשאות וגישה " "למשוב הקשור למוצר." #: engine/core/viewsets.py:568 @@ -3023,8 +3053,8 @@ msgid "" "Vendor-related resources through the Django REST framework." msgstr "" "מייצג קבוצת תצוגות לניהול אובייקטי ספק. קבוצת תצוגות זו מאפשרת לאחזר, לסנן " -"ולסדר נתוני ספק. היא מגדירה את קבוצת השאילתות, תצורות המסננים ומחלקות הסידור " -"המשמשות לטיפול בפעולות שונות. מטרת מחלקה זו היא לספק גישה יעילה למשאבים " +"ולסדר נתוני ספק. היא מגדירה את קבוצת השאילתות, תצורות המסננים ומחלקות הסידור" +" המשמשות לטיפול בפעולות שונות. מטרת מחלקה זו היא לספק גישה יעילה למשאבים " "הקשורים לספק באמצעות מסגרת Django REST." #: engine/core/viewsets.py:588 @@ -3032,29 +3062,29 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "ייצוג של קבוצת תצוגה המטפלת באובייקטי משוב. מחלקה זו מנהלת פעולות הקשורות " -"לאובייקטי משוב, כולל רישום, סינון ואחזור פרטים. מטרת קבוצת תצוגה זו היא לספק " -"סדרנים שונים לפעולות שונות וליישם טיפול מבוסס הרשאות באובייקטי משוב נגישים. " -"היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django לשאילתת " -"נתונים." +"לאובייקטי משוב, כולל רישום, סינון ואחזור פרטים. מטרת קבוצת תצוגה זו היא לספק" +" סדרנים שונים לפעולות שונות וליישם טיפול מבוסס הרשאות באובייקטי משוב נגישים." +" היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django " +"לשאילתת נתונים." #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet לניהול הזמנות ופעולות נלוות. מחלקה זו מספקת פונקציונליות לאחזור, " -"שינוי וניהול אובייקטי הזמנה. היא כוללת נקודות קצה שונות לטיפול בפעולות הזמנה " -"כגון הוספה או הסרה של מוצרים, ביצוע רכישות עבור משתמשים רשומים ולא רשומים, " +"שינוי וניהול אובייקטי הזמנה. היא כוללת נקודות קצה שונות לטיפול בפעולות הזמנה" +" כגון הוספה או הסרה של מוצרים, ביצוע רכישות עבור משתמשים רשומים ולא רשומים, " "ואחזור הזמנות ממתנות של המשתמש המאושר הנוכחי. ViewSet משתמש במספר סדרנים " "בהתאם לפעולה הספציפית המתבצעת ומאכוף הרשאות בהתאם בעת אינטראקציה עם נתוני " "הזמנה." @@ -3063,8 +3093,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "מספק סט תצוגה לניהול ישויות OrderProduct. סט תצוגה זה מאפשר פעולות CRUD " @@ -3094,8 +3124,8 @@ msgstr "מטפל בפעולות הקשורות לנתוני המלאי במער msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3137,4 +3167,3 @@ msgstr "" "לאחזור, סינון וסידור אובייקטי תגי מוצר. היא תומכת בסינון גמיש של תכונות " "ספציפיות באמצעות מנגנון הסינון שצוין, ומשתמשת באופן דינמי במנגנוני סידור " "שונים בהתאם לפעולה המבוצעת." - diff --git a/engine/core/locale/hi_IN/LC_MESSAGES/django.po b/engine/core/locale/hi_IN/LC_MESSAGES/django.po index 3659ee7b..3c018310 100644 --- a/engine/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/core/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -183,359 +183,395 @@ msgstr "" msgid "successful" msgstr "" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:78 +#: engine/core/docs/drf/viewsets.py:96 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:132 +#: engine/core/docs/drf/viewsets.py:186 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" "Case-insensitive substring search across human_readable_id, order_products." "product.name, and order_products.product.partnumber" msgstr "" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" "Order by one of: uuid, human_readable_id, user_email, user, status, created, " "modified, buy_time, random. Prefix with '-' for descending (e.g. '-" "buy_time')." msgstr "" -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 "" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -552,317 +588,313 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" @@ -1014,7 +1046,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2692,53 +2724,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2746,27 +2778,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2774,14 +2810,14 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "" diff --git a/engine/core/locale/hr_HR/LC_MESSAGES/django.po b/engine/core/locale/hr_HR/LC_MESSAGES/django.po index cba44d1a..bc0ab9f7 100644 --- a/engine/core/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/core/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -183,359 +183,395 @@ msgstr "" msgid "successful" msgstr "" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:78 +#: engine/core/docs/drf/viewsets.py:96 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:132 +#: engine/core/docs/drf/viewsets.py:186 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" "Case-insensitive substring search across human_readable_id, order_products." "product.name, and order_products.product.partnumber" msgstr "" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" "Order by one of: uuid, human_readable_id, user_email, user, status, created, " "modified, buy_time, random. Prefix with '-' for descending (e.g. '-" "buy_time')." msgstr "" -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 "" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -552,317 +588,313 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" @@ -1014,7 +1046,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2692,53 +2724,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2746,27 +2778,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2774,14 +2810,14 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "" diff --git a/engine/core/locale/id_ID/LC_MESSAGES/django.mo b/engine/core/locale/id_ID/LC_MESSAGES/django.mo index 9272856c273cc83e2cd048bb1340e6f6b560db45..1ba9d622fefa9c98376d94cd1f60e6f828a973fd 100644 GIT binary patch delta 14890 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 sPaqp&D1H>44%bW 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 EKiyV3bpQYW delta 13831 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 V+~^Xx_fToizuESltm#=7@?RSo(0Kp= diff --git a/engine/core/locale/id_ID/LC_MESSAGES/django.po b/engine/core/locale/id_ID/LC_MESSAGES/django.po index 64bf9915..1dc80d22 100644 --- a/engine/core/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/core/locale/id_ID/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -19,7 +19,8 @@ msgstr "ID unik" #: engine/core/abstract.py:13 msgid "unique id is used to surely identify any database object" -msgstr "ID unik digunakan untuk mengidentifikasi objek basis data secara pasti" +msgstr "" +"ID unik digunakan untuk mengidentifikasi objek basis data secara pasti" #: engine/core/abstract.py:20 msgid "is active" @@ -27,7 +28,8 @@ msgstr "Aktif" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Jika diset ke false, objek ini tidak dapat dilihat oleh pengguna tanpa izin " "yang diperlukan" @@ -154,7 +156,8 @@ msgstr "Disampaikan." msgid "canceled" msgstr "Dibatalkan" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Gagal" @@ -182,45 +185,61 @@ msgstr "Momental" msgid "successful" msgstr "Berhasil" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Skema OpenAPI dalam format yang dipilih dengan bahasa yang dipilih" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Skema OpenApi3 untuk API ini. Format dapat dipilih melalui negosiasi konten." +" Bahasa dapat dipilih dengan parameter Accept-Language dan parameter kueri." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "I/O Cache" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Terapkan hanya kunci untuk membaca data yang diizinkan dari cache.\n" -"Menerapkan kunci, data, dan batas waktu dengan autentikasi untuk menulis " -"data ke cache." +"Menerapkan kunci, data, dan batas waktu dengan autentikasi untuk menulis data ke cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Dapatkan daftar bahasa yang didukung" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Dapatkan parameter aplikasi yang dapat diekspos" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Kirim pesan ke tim dukungan" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Meminta URL CORSed. Hanya https yang diizinkan." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Mencari di antara produk, kategori, dan merek" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Titik akhir pencarian global untuk melakukan kueri di seluruh tabel proyek" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Beli pesanan sebagai Bisnis" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -228,228 +247,236 @@ msgstr "" "Beli pesanan sebagai bisnis, menggunakan `produk` yang disediakan dengan " "`product_uuid` dan `atribut`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "mengunduh aset digital dari pesanan digital yang dibeli" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Buat daftar semua grup atribut (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Mengambil grup atribut tunggal (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Membuat grup atribut" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Menghapus grup atribut" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Menulis ulang grup atribut yang sudah ada dan menyimpan grup yang tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari grup atribut yang sudah ada sehingga " "tidak dapat diedit" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Daftar semua atribut (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Mengambil atribut tunggal (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Membuat atribut" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Menghapus atribut" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Menulis ulang atribut yang sudah ada dengan menyimpan atribut yang tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari atribut yang sudah ada sehingga tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Daftar semua nilai atribut (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Mengambil nilai atribut tunggal (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Membuat nilai atribut" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Menghapus nilai atribut" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Menulis ulang nilai atribut yang sudah ada dan menyimpan nilai yang tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari nilai atribut yang sudah ada sehingga " "tidak dapat diedit" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Daftar semua kategori (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Mengambil satu kategori (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Kategori UUID atau siput" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Membuat kategori" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Menghapus kategori" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" "Menulis ulang kategori yang sudah ada dan menyimpan kategori yang tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari kategori yang sudah ada sehingga tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "Cuplikan Meta SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Mengembalikan cuplikan data meta SEO kategori" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Daftar semua kategori (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "Untuk pengguna non-staf, hanya pesanan mereka sendiri yang dikembalikan." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Pencarian substring yang tidak peka huruf besar/kecil di human_readable_id, " "order_produk.product.name, dan order_produk.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter pesanan dengan waktu_beli >= waktu_data ISO 8601 ini" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter pesanan dengan waktu_beli <= waktu_data ISO 8601 ini" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filter berdasarkan urutan yang tepat UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filter berdasarkan ID pesanan yang dapat dibaca manusia" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -"Filter berdasarkan email pengguna (pencocokan persis tanpa huruf besar-kecil)" +"Filter berdasarkan email pengguna (pencocokan persis tanpa huruf besar-" +"kecil)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Memfilter berdasarkan UUID pengguna" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filter berdasarkan status pesanan (pencocokan substring yang tidak peka " "huruf besar-kecil)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Urutkan berdasarkan salah satu dari: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Awalan dengan '-' untuk " "menurun (contoh: '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Mengambil satu kategori (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Pesan UUID atau id yang dapat dibaca manusia" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Membuat atribut" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Tidak dapat digunakan oleh pengguna non-staf." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Menghapus atribut" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" "Menulis ulang kategori yang sudah ada dan menyimpan kategori yang tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari kategori yang sudah ada sehingga tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Harga pembelian pada saat pemesanan" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -459,19 +486,27 @@ msgstr "" "diselesaikan menggunakan saldo pengguna; Jika `force_payment` digunakan, " "transaksi dimulai." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "mengambil pesanan yang tertunda saat ini dari pengguna" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "mengambil pesanan tertunda saat ini dari pengguna yang diautentikasi" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "membeli pesanan tanpa pembuatan akun" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "menyelesaikan pembelian pesanan untuk pengguna yang tidak terdaftar." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Menambahkan produk ke pesanan" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -479,11 +514,11 @@ msgstr "" "Menambahkan produk ke pesanan menggunakan `product_uuid` dan `atribut` yang " "disediakan." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "Tambahkan daftar produk yang akan dipesan, jumlah tidak akan dihitung" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -491,11 +526,11 @@ msgstr "" "Menambahkan daftar produk ke pesanan menggunakan `product_uuid` dan " "`atribut` yang disediakan." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Menghapus produk dari pesanan" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -503,11 +538,11 @@ msgstr "" "Menghapus produk dari pesanan menggunakan `product_uuid` dan `atribut` yang " "disediakan." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Menghapus produk dari pesanan, jumlah tidak akan dihitung" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -515,464 +550,457 @@ msgstr "" "Menghapus daftar produk dari pesanan menggunakan `product_uuid` dan " "`atribut` yang disediakan." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Daftar semua atribut (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Untuk pengguna non-staf, hanya daftar keinginan mereka sendiri yang " "dikembalikan." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Mengambil atribut tunggal (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Membuat atribut" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Tidak dapat digunakan oleh pengguna non-staf." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Menghapus atribut" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Menulis ulang atribut yang sudah ada dengan menyimpan atribut yang tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Menulis ulang beberapa bidang dari atribut yang sudah ada sehingga tidak " "dapat diedit" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "mengambil daftar keinginan yang tertunda dari pengguna saat ini" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"mengambil daftar keinginan yang tertunda saat ini dari pengguna yang " +"diautentikasi" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Menambahkan produk ke pesanan" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Menambahkan produk ke daftar keinginan menggunakan `product_uuid` yang " "disediakan" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Menghapus produk dari daftar keinginan" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Menghapus produk dari daftar keinginan menggunakan `product_uuid` yang " "disediakan" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Tambahkan banyak produk ke daftar keinginan" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Menambahkan banyak produk ke daftar keinginan menggunakan `product_uuids` " "yang disediakan" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Menghapus produk dari pesanan" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Menghapus banyak produk dari daftar keinginan menggunakan `product_uuids` " "yang disediakan" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Memfilter berdasarkan satu atau beberapa pasangan nama/nilai atribut. \n" "- **Sintaks**: `attr_name = metode-nilai[;attr2 = metode2-nilai2]...`\n" -"- **Metode** (default ke `icontains` jika dihilangkan): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Pengetikan nilai**: JSON dicoba terlebih dahulu (sehingga Anda dapat " -"mengoper daftar/diktat), `true`/`false` untuk boolean, bilangan bulat, " -"float; jika tidak, maka akan diperlakukan sebagai string. \n" -"- **Base64**: awalan dengan `b64-` untuk menyandikan base64 yang aman bagi " -"URL untuk menyandikan nilai mentah. \n" +"- **Metode** (default ke `icontains` jika dihilangkan): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Pengetikan nilai**: JSON dicoba terlebih dahulu (sehingga Anda dapat mengoper daftar/diktat), `true`/`false` untuk boolean, bilangan bulat, float; jika tidak, maka akan diperlakukan sebagai string. \n" +"- **Base64**: awalan dengan `b64-` untuk menyandikan base64 yang aman bagi URL untuk menyandikan nilai mentah. \n" "Contoh: \n" -"`warna=merah-pasti`, `ukuran=gt-10`, `fitur=dalam-[\"wifi\", " -"\"bluetooth\"]`,\n" +"`warna=merah-pasti`, `ukuran=gt-10`, `fitur=dalam-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description = berisi-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Daftar semua produk (tampilan sederhana)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "UUID Produk (persis)" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Daftar bidang yang dipisahkan koma untuk mengurutkan. Awalan dengan `-` " -"untuk mengurutkan. \n" -"**Diizinkan:** uuid, peringkat, nama, siput, dibuat, dimodifikasi, harga, " -"acak" +"Daftar bidang yang dipisahkan koma untuk mengurutkan. Awalan dengan `-` untuk mengurutkan. \n" +"**Diizinkan:** uuid, peringkat, nama, siput, dibuat, dimodifikasi, harga, acak" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Mengambil satu produk (tampilan detail)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID Produk atau Siput" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Membuat produk" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Menulis ulang produk yang sudah ada, mempertahankan bidang yang tidak dapat " "diedit" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Memperbarui beberapa bidang dari produk yang sudah ada, mempertahankan " "bidang yang tidak dapat diedit" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Menghapus produk" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "mencantumkan semua umpan balik yang diizinkan untuk suatu produk" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Mengembalikan cuplikan data meta SEO produk" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Daftar semua alamat" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Mengambil satu alamat" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Membuat alamat baru" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Menghapus alamat" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Memperbarui seluruh alamat" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Memperbarui sebagian alamat" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Masukan alamat pelengkapan otomatis" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"String kueri data mentah, harap tambahkan dengan data dari titik akhir geo-IP" +"String kueri data mentah, harap tambahkan dengan data dari titik akhir geo-" +"IP" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "membatasi jumlah hasil, 1 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 X?!Y!*Q_cVHF#dkWu0CBnjU)dL09SMB delta 13834 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 diff --git a/engine/core/locale/it_IT/LC_MESSAGES/django.po b/engine/core/locale/it_IT/LC_MESSAGES/django.po index fc89a4fc..4c559e13 100644 --- a/engine/core/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/core/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,10 +29,11 @@ msgstr "È attivo" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"Se impostato a false, questo oggetto non può essere visto dagli utenti senza " -"i necessari permessi." +"Se impostato a false, questo oggetto non può essere visto dagli utenti senza" +" i necessari permessi." #: engine/core/abstract.py:23 engine/core/choices.py:18 msgid "created" @@ -156,7 +157,8 @@ msgstr "Consegnato" msgid "canceled" msgstr "Annullato" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Fallito" @@ -184,45 +186,62 @@ msgstr "Momentale" msgid "successful" msgstr "Successo" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Schema OpenAPI nel formato selezionato con la lingua selezionata" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Schema OpenApi3 per questa API. Il formato può essere selezionato tramite la" +" negoziazione dei contenuti. La lingua può essere selezionata sia con " +"Accept-Language che con il parametro query." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "I/O della cache" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Applicare solo una chiave per leggere i dati consentiti dalla cache.\n" -"Applicare chiave, dati e timeout con autenticazione per scrivere dati nella " -"cache." +"Applicare chiave, dati e timeout con autenticazione per scrivere dati nella cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Ottenere i parametri esponibili dell'applicazione" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Inviate un messaggio al team di assistenza" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Richiedere un URL CORSed. È consentito solo https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Ricerca tra prodotti, categorie e marchi" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Endpoint di ricerca globale per interrogare tutte le tabelle del progetto" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Acquistare un ordine come azienda" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -230,249 +249,264 @@ msgstr "" "Acquistare un ordine come azienda, utilizzando i `prodotti` forniti con " "`product_uuid` e `attributi`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "scaricare un bene digitale da un ordine digitale acquistato" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Elenco di tutti i gruppi di attributi (vista semplice)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperare un singolo gruppo di attributi (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Creare un gruppo di attributi" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Cancellare un gruppo di attributi" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Riscrivere un gruppo di attributi esistente salvando i non modificabili" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Creare un attributo" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Cancellare un attributo" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Elenco di tutti i valori degli attributi (vista semplice)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperare il valore di un singolo attributo (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Creare un valore di attributo" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Cancellare il valore di un attributo" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Riscrivere il valore di un attributo esistente salvando gli elementi non " "modificabili" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "UUID o slug della categoria" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Creare una categoria" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Eliminare una categoria" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "Meta-immagine SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Restituisce un'istantanea dei meta-dati SEO della categoria." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Elenco di tutte le categorie (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 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." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Ricerca di sottostringhe senza distinzione di maiuscole e minuscole tra " -"human_readable_id, order_products.product.name e order_products.product." -"partnumber" +"human_readable_id, order_products.product.name e " +"order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtra gli ordini con buy_time >= questa data ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtra gli ordini con buy_time <= questa data ISO 8601" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrare per UUID dell'ordine esatto" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrare in base all'ID esatto dell'ordine leggibile dall'uomo" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtro per e-mail dell'utente (corrispondenza esatta senza distinzione tra " "maiuscole e minuscole)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrare per UUID dell'utente" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrare per stato dell'ordine (corrispondenza di sottostringhe senza " "distinzione tra maiuscole e minuscole)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordinare per uno dei seguenti criteri: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Prefisso con '-' per la " "decrescita (ad esempio, '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Recuperare una singola categoria (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "UUID dell'ordine o id leggibile dall'uomo" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Creare un attributo" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Cancellare un attributo" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Prezzo di acquisto al momento dell'ordine" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" "Finalizza l'acquisto dell'ordine. Se si utilizza `forza_bilancio`, " -"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza " -"`forza_pagamento`, viene avviata una transazione." +"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza" +" `forza_pagamento`, viene avviata una transazione." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "recuperare l'ordine in corso di un utente" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "recupera un ordine in sospeso di un utente autenticato" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "acquistare un ordine senza creare un account" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizza l'acquisto dell'ordine per un utente non registrato." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Aggiungere un prodotto all'ordine" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -480,13 +514,13 @@ msgstr "" "Aggiunge un prodotto a un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -494,11 +528,11 @@ msgstr "" "Aggiunge un elenco di prodotti a un ordine, utilizzando il `product_uuid` e " "gli `attributi` forniti." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Rimuovere un prodotto dall'ordine" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -506,12 +540,12 @@ msgstr "" "Rimuove un prodotto da un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" "Rimuovete un prodotto dall'ordine, le quantità non verranno conteggiate" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -519,456 +553,449 @@ msgstr "" "Rimuove un elenco di prodotti da un ordine utilizzando il `product_uuid` e " "gli `attributi` forniti." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"Per gli utenti che non fanno parte del personale, vengono restituite solo le " -"loro liste dei desideri." +"Per gli utenti che non fanno parte del personale, vengono restituite solo le" +" loro liste dei desideri." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Creare un attributo" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Cancellare un attributo" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "recuperare la lista dei desideri in sospeso di un utente" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "recupera la lista dei desideri in corso di un utente autenticato" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Rimuovere un prodotto dalla lista dei desideri" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Rimuove un prodotto da una wishlist utilizzando il `product_uuid` fornito." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Aggiungere molti prodotti alla lista dei desideri" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrare in base a una o più coppie nome/valore dell'attributo. \n" "- **Sintassi**: `nome_attraverso=metodo-valore[;attr2=metodo2-valore2]...`\n" -"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare " -"liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene " -"trattato come stringa. \n" -"- **Base64**: prefisso con `b64-` per codificare in base64 il valore " -"grezzo. \n" +"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene trattato come stringa. \n" +"- **Base64**: prefisso con `b64-` per codificare in base64 il valore grezzo. \n" "Esempi: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(esatto) UUID del prodotto" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per " -"l'ordinamento discendente. \n" +"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per l'ordinamento discendente. \n" "**Consentito:** uuid, rating, nome, slug, creato, modificato, prezzo, casuale" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Creare un prodotto" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" -msgstr "Riscrivere un prodotto esistente, preservando i campi non modificabili" +msgstr "" +"Riscrivere un prodotto esistente, preservando i campi non modificabili" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Eliminare un prodotto" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "elenca tutti i feedback consentiti per un prodotto" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Restituisce un'istantanea dei meta-dati SEO del prodotto." -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Elenco di tutti gli indirizzi" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Recuperare un singolo indirizzo" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Creare un nuovo indirizzo" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Cancellare un indirizzo" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Aggiornare un intero indirizzo" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Aggiornare parzialmente un indirizzo" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Inserimento automatico dell'indirizzo" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita la quantità di risultati, 1 < limite < 10, default: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "elencare tutti i feedback (vista semplice)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "recuperare un singolo feedback (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "creare un feedback" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "eliminare un feedback" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "elencare tutte le relazioni ordine-prodotto (vista semplice)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperare una singola relazione ordine-prodotto (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "creare una nuova relazione ordine-prodotto" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "sostituire una relazione ordine-prodotto esistente" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "aggiornare parzialmente una relazione ordine-prodotto esistente" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "eliminare una relazione ordine-prodotto" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "aggiungere o rimuovere un feedback su una relazione ordine-prodotto" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Elenco di tutti i marchi (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Recuperare un singolo marchio (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID o slug del marchio" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Creare un marchio" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Eliminare un marchio" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "Meta-immagine SEO per il marchio" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Elenco di tutti i fornitori (vista semplice)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Recuperare un singolo fornitore (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Create a vendor" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Eliminare un fornitore" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Elenco di tutte le immagini dei prodotti (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Recuperare l'immagine di un singolo prodotto (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Creare un'immagine del prodotto" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Eliminare l'immagine di un prodotto" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Elenco di tutti i codici promozionali (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Recuperare un singolo codice promozionale (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Create a promo code" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Cancellare un codice promozionale" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Elenco di tutte le promozioni (visualizzazione semplice)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Recuperare una singola promozione (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Creare una promozione" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Eliminare una promozione" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Elenco di tutti i titoli (vista semplice)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Recuperare un singolo titolo (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Creare un record di magazzino" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Cancellare un record di magazzino" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Elenco di tutti i tag dei prodotti (vista semplice)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Recuperare un singolo tag di prodotto (vista dettagliata)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Creare un'etichetta di prodotto" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Eliminare un tag di prodotto" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Riscrivere una categoria esistente salvando gli elementi non modificabili" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: engine/core/elasticsearch/__init__.py:122 #: engine/core/elasticsearch/__init__.py:570 @@ -1119,7 +1146,7 @@ msgstr "Dati in cache" msgid "camelized JSON data from the requested URL" msgstr "Dati JSON camelizzati dall'URL richiesto" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Sono consentiti solo gli URL che iniziano con http(s)://" @@ -1153,7 +1180,8 @@ msgstr "" #: engine/core/graphene/mutations.py:237 engine/core/graphene/mutations.py:502 #: engine/core/graphene/mutations.py:544 engine/core/viewsets.py:704 msgid "wrong type came from order.buy() method: {type(instance)!s}" -msgstr "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" +msgstr "" +"Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}" #: engine/core/graphene/mutations.py:246 msgid "perform an action on a list of products in the order" @@ -1204,11 +1232,11 @@ msgstr "Acquistare un ordine" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" -"Inviare gli attributi come stringa formattata come attr1=valore1," -"attr2=valore2" +"Inviare gli attributi come stringa formattata come " +"attr1=valore1,attr2=valore2" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1284,7 +1312,8 @@ msgstr "" "categoria." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Prezzi minimi e massimi per i prodotti di questa categoria, se disponibili." @@ -1555,9 +1584,9 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"Rappresenta un gruppo di attributi, che può essere gerarchico. Questa classe " -"viene utilizzata per gestire e organizzare i gruppi di attributi. Un gruppo " -"di attributi può avere un gruppo padre, formando una struttura gerarchica. " +"Rappresenta un gruppo di attributi, che può essere gerarchico. Questa classe" +" viene utilizzata per gestire e organizzare i gruppi di attributi. Un gruppo" +" di attributi può avere un gruppo padre, formando una struttura gerarchica. " "Questo può essere utile per categorizzare e gestire meglio gli attributi in " "un sistema complesso." @@ -1681,8 +1710,8 @@ msgid "" msgstr "" "Rappresenta un tag di categoria utilizzato per i prodotti. Questa classe " "modella un tag di categoria che può essere usato per associare e " -"classificare i prodotti. Include gli attributi per un identificatore interno " -"del tag e un nome di visualizzazione facile da usare." +"classificare i prodotti. Include gli attributi per un identificatore interno" +" del tag e un nome di visualizzazione facile da usare." #: engine/core/models.py:254 msgid "category tag" @@ -1706,12 +1735,12 @@ msgid "" msgstr "" "Rappresenta un'entità di categoria per organizzare e raggruppare gli " "elementi correlati in una struttura gerarchica. Le categorie possono avere " -"relazioni gerarchiche con altre categorie, supportando le relazioni genitore-" -"figlio. La classe include campi per i metadati e per la rappresentazione " -"visiva, che servono come base per le funzionalità legate alle categorie. " -"Questa classe viene tipicamente utilizzata per definire e gestire le " -"categorie di prodotti o altri raggruppamenti simili all'interno di " -"un'applicazione, consentendo agli utenti o agli amministratori di " +"relazioni gerarchiche con altre categorie, supportando le relazioni " +"genitore-figlio. La classe include campi per i metadati e per la " +"rappresentazione visiva, che servono come base per le funzionalità legate " +"alle categorie. Questa classe viene tipicamente utilizzata per definire e " +"gestire le categorie di prodotti o altri raggruppamenti simili all'interno " +"di un'applicazione, consentendo agli utenti o agli amministratori di " "specificare il nome, la descrizione e la gerarchia delle categorie, nonché " "di assegnare attributi come immagini, tag o priorità." @@ -1765,13 +1794,14 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Rappresenta un oggetto Marchio nel sistema. Questa classe gestisce le " "informazioni e gli attributi relativi a un marchio, tra cui il nome, il " "logo, la descrizione, le categorie associate, uno slug unico e l'ordine di " -"priorità. Permette di organizzare e rappresentare i dati relativi al marchio " -"all'interno dell'applicazione." +"priorità. Permette di organizzare e rappresentare i dati relativi al marchio" +" all'interno dell'applicazione." #: engine/core/models.py:448 msgid "name of this brand" @@ -1815,8 +1845,8 @@ msgstr "Categorie" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1824,10 +1854,10 @@ msgid "" msgstr "" "Rappresenta lo stock di un prodotto gestito nel sistema. Questa classe " "fornisce dettagli sulla relazione tra fornitori, prodotti e informazioni " -"sulle scorte, oltre a proprietà legate all'inventario come prezzo, prezzo di " -"acquisto, quantità, SKU e asset digitali. Fa parte del sistema di gestione " -"dell'inventario per consentire il monitoraggio e la valutazione dei prodotti " -"disponibili presso i vari fornitori." +"sulle scorte, oltre a proprietà legate all'inventario come prezzo, prezzo di" +" acquisto, quantità, SKU e asset digitali. Fa parte del sistema di gestione " +"dell'inventario per consentire il monitoraggio e la valutazione dei prodotti" +" disponibili presso i vari fornitori." #: engine/core/models.py:520 msgid "the vendor supplying this product stock" @@ -1912,8 +1942,8 @@ msgstr "" "sistema che gestisce il commercio elettronico o l'inventario. Questa classe " "interagisce con i modelli correlati (come Category, Brand e ProductTag) e " "gestisce la cache per le proprietà a cui si accede di frequente, per " -"migliorare le prestazioni. Viene utilizzata per definire e manipolare i dati " -"dei prodotti e le informazioni ad essi associate all'interno di " +"migliorare le prestazioni. Viene utilizzata per definire e manipolare i dati" +" dei prodotti e le informazioni ad essi associate all'interno di " "un'applicazione." #: engine/core/models.py:585 @@ -1969,16 +1999,16 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Rappresenta un attributo nel sistema. Questa classe viene utilizzata per " -"definire e gestire gli attributi, che sono dati personalizzabili che possono " -"essere associati ad altre entità. Gli attributi hanno categorie, gruppi, " -"tipi di valori e nomi associati. Il modello supporta diversi tipi di valori, " -"tra cui stringa, intero, float, booleano, array e oggetto. Ciò consente una " -"strutturazione dinamica e flessibile dei dati." +"definire e gestire gli attributi, che sono dati personalizzabili che possono" +" essere associati ad altre entità. Gli attributi hanno categorie, gruppi, " +"tipi di valori e nomi associati. Il modello supporta diversi tipi di valori," +" tra cui stringa, intero, float, booleano, array e oggetto. Ciò consente una" +" strutturazione dinamica e flessibile dei dati." #: engine/core/models.py:733 msgid "group of this attribute" @@ -2041,9 +2071,9 @@ msgstr "Attributo" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Rappresenta un valore specifico per un attributo collegato a un prodotto. " "Collega l'\"attributo\" a un \"valore\" unico, consentendo una migliore " @@ -2065,14 +2095,14 @@ msgstr "Il valore specifico per questo attributo" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Rappresenta l'immagine di un prodotto associata a un prodotto del sistema. " -"Questa classe è progettata per gestire le immagini dei prodotti, comprese le " -"funzionalità di caricamento dei file immagine, di associazione a prodotti " +"Questa classe è progettata per gestire le immagini dei prodotti, comprese le" +" funzionalità di caricamento dei file immagine, di associazione a prodotti " "specifici e di determinazione dell'ordine di visualizzazione. Include anche " "una funzione di accessibilità con testo alternativo per le immagini." @@ -2115,11 +2145,11 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Rappresenta una campagna promozionale per prodotti con sconto. Questa classe " -"viene utilizzata per definire e gestire campagne promozionali che offrono " +"Rappresenta una campagna promozionale per prodotti con sconto. Questa classe" +" viene utilizzata per definire e gestire campagne promozionali che offrono " "uno sconto in percentuale sui prodotti. La classe include attributi per " "impostare la percentuale di sconto, fornire dettagli sulla promozione e " "collegarla ai prodotti applicabili. Si integra con il catalogo dei prodotti " @@ -2192,13 +2222,13 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Rappresenta un record documentario legato a un prodotto. Questa classe viene " -"utilizzata per memorizzare informazioni sui documentari relativi a prodotti " -"specifici, compresi i file caricati e i relativi metadati. Contiene metodi e " -"proprietà per gestire il tipo di file e il percorso di archiviazione dei " +"Rappresenta un record documentario legato a un prodotto. Questa classe viene" +" utilizzata per memorizzare informazioni sui documentari relativi a prodotti" +" specifici, compresi i file caricati e i relativi metadati. Contiene metodi " +"e proprietà per gestire il tipo di file e il percorso di archiviazione dei " "file documentari. Estende le funzionalità di mixin specifici e fornisce " "ulteriori caratteristiche personalizzate." @@ -2216,14 +2246,14 @@ msgstr "Non risolto" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Rappresenta un'entità indirizzo che include dettagli sulla posizione e " "associazioni con un utente. Fornisce funzionalità per la memorizzazione di " @@ -2297,8 +2327,8 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"Rappresenta un codice promozionale che può essere utilizzato per gli sconti, " -"gestendone la validità, il tipo di sconto e l'applicazione. La classe " +"Rappresenta un codice promozionale che può essere utilizzato per gli sconti," +" gestendone la validità, il tipo di sconto e l'applicazione. La classe " "PromoCode memorizza i dettagli di un codice promozionale, tra cui il suo " "identificatore univoco, le proprietà dello sconto (importo o percentuale), " "il periodo di validità, l'utente associato (se presente) e lo stato di " @@ -2315,7 +2345,8 @@ msgstr "Identificatore del codice promozionale" #: engine/core/models.py:1095 msgid "fixed discount amount applied if percent is not used" -msgstr "Importo fisso dello sconto applicato se non si utilizza la percentuale" +msgstr "" +"Importo fisso dello sconto applicato se non si utilizza la percentuale" #: engine/core/models.py:1096 msgid "fixed discount amount" @@ -2376,8 +2407,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"È necessario definire un solo tipo di sconto (importo o percentuale), ma non " -"entrambi o nessuno." +"È necessario definire un solo tipo di sconto (importo o percentuale), ma non" +" entrambi o nessuno." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2392,18 +2423,19 @@ msgstr "Tipo di sconto non valido per il codice promozionale {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Rappresenta un ordine effettuato da un utente. Questa classe modella un " -"ordine all'interno dell'applicazione, includendo i suoi vari attributi, come " -"le informazioni di fatturazione e spedizione, lo stato, l'utente associato, " -"le notifiche e le operazioni correlate. Gli ordini possono avere prodotti " +"ordine all'interno dell'applicazione, includendo i suoi vari attributi, come" +" le informazioni di fatturazione e spedizione, lo stato, l'utente associato," +" le notifiche e le operazioni correlate. Gli ordini possono avere prodotti " "associati, possono essere applicate promozioni, impostati indirizzi e " "aggiornati i dettagli di spedizione o fatturazione. Allo stesso modo, la " -"funzionalità supporta la gestione dei prodotti nel ciclo di vita dell'ordine." +"funzionalità supporta la gestione dei prodotti nel ciclo di vita " +"dell'ordine." #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2567,8 +2599,8 @@ msgstr "" "per catturare e memorizzare i commenti degli utenti su prodotti specifici " "che hanno acquistato. Contiene attributi per memorizzare i commenti degli " "utenti, un riferimento al prodotto correlato nell'ordine e una valutazione " -"assegnata dall'utente. La classe utilizza campi del database per modellare e " -"gestire efficacemente i dati di feedback." +"assegnata dall'utente. La classe utilizza campi del database per modellare e" +" gestire efficacemente i dati di feedback." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2579,7 +2611,8 @@ msgid "feedback comments" msgstr "Commenti di feedback" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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." @@ -2725,9 +2758,9 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Rappresenta la funzionalità di download degli asset digitali associati agli " "ordini. La classe DigitalAssetDownload offre la possibilità di gestire e " @@ -2749,8 +2782,8 @@ msgstr "Scaricamento" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"per aggiungere un feedback è necessario fornire un commento, una valutazione " -"e l'uuid del prodotto dell'ordine." +"per aggiungere un feedback è necessario fornire un commento, una valutazione" +" e l'uuid del prodotto dell'ordine." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2793,8 +2826,7 @@ msgstr "Hello %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Grazie per il vostro ordine #%(order.pk)s! Siamo lieti di informarla che " @@ -2823,8 +2855,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " -"%(config.EMAIL_HOST_USER)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" +" %(config.EMAIL_HOST_USER)s." #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2876,8 +2908,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " -"%(contact_email)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" +" %(contact_email)s." #: engine/core/templates/digital_order_delivered_email.html:165 #: engine/core/templates/promocode_granted_email.html:108 @@ -2909,8 +2941,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Grazie per il vostro ordine! Siamo lieti di confermare il suo acquisto. Di " @@ -2982,10 +3013,10 @@ msgstr "Il parametro NOMINATIM_URL deve essere configurato!" #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height} " -"pixel" +"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}" +" pixel" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2994,7 +3025,7 @@ msgstr "" "XML. Assicura che la risposta includa l'intestazione del tipo di contenuto " "appropriato per XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3004,17 +3035,17 @@ msgstr "" "funzione elabora la richiesta, recupera la risposta dettagliata della " "sitemap e imposta l'intestazione Content-Type per XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Restituisce un elenco di lingue supportate e le informazioni corrispondenti." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Restituisce i parametri del sito web come oggetto JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3022,11 +3053,11 @@ msgstr "" "Gestisce le operazioni di cache, come la lettura e l'impostazione dei dati " "della cache con una chiave e un timeout specificati." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Gestisce l'invio del modulo `contatti`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3034,63 +3065,58 @@ msgstr "" "Gestisce le richieste di elaborazione e validazione degli URL dalle " "richieste POST in arrivo." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Gestisce le query di ricerca globali." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Gestisce la logica dell'acquisto come azienda senza registrazione." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestisce il download di una risorsa digitale associata a un ordine.\n" -"Questa funzione tenta di servire il file della risorsa digitale che si trova " -"nella directory di archiviazione del progetto. Se il file non viene trovato, " -"viene generato un errore HTTP 404 per indicare che la risorsa non è " -"disponibile." +"Questa funzione tenta di servire il file della risorsa digitale che si trova nella directory di archiviazione del progetto. Se il file non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid è obbligatorio" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "ordine prodotto non esistente" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "È possibile scaricare l'asset digitale una sola volta" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "l'ordine deve essere pagato prima di scaricare il bene digitale" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Il prodotto dell'ordine non ha un prodotto" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon non trovata" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestisce le richieste per la favicon di un sito web.\n" -"Questa funzione tenta di servire il file favicon situato nella cartella " -"statica del progetto. Se il file favicon non viene trovato, viene generato " -"un errore HTTP 404 per indicare che la risorsa non è disponibile." +"Questa funzione tenta di servire il file favicon situato nella cartella statica del progetto. Se il file favicon non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Reindirizza la richiesta alla pagina indice dell'amministrazione. La " @@ -3098,7 +3124,7 @@ msgstr "" "indice dell'interfaccia di amministrazione di Django. Utilizza la funzione " "`redirect` di Django per gestire il reindirizzamento HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Restituisce la versione corrente di eVibes." @@ -3113,19 +3139,20 @@ msgstr "" "Definisce un insieme di viste per la gestione delle operazioni relative a " "Evibes. La classe EvibesViewSet eredita da ModelViewSet e fornisce " "funzionalità per la gestione di azioni e operazioni sulle entità Evibes. " -"Include il supporto per classi di serializzatori dinamici in base all'azione " -"corrente, permessi personalizzabili e formati di rendering." +"Include il supporto per classi di serializzatori dinamici in base all'azione" +" corrente, permessi personalizzabili e formati di rendering." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Rappresenta un insieme di viste per la gestione degli oggetti " -"AttributeGroup. Gestisce le operazioni relative agli AttributeGroup, tra cui " -"il filtraggio, la serializzazione e il recupero dei dati. Questa classe fa " +"AttributeGroup. Gestisce le operazioni relative agli AttributeGroup, tra cui" +" il filtraggio, la serializzazione e il recupero dei dati. Questa classe fa " "parte del livello API dell'applicazione e fornisce un modo standardizzato " "per elaborare le richieste e le risposte per i dati di AttributeGroup." @@ -3142,16 +3169,16 @@ msgstr "" "dell'applicazione. Fornisce un insieme di endpoint API per interagire con i " "dati Attribute. Questa classe gestisce l'interrogazione, il filtraggio e la " "serializzazione degli oggetti Attribute, consentendo un controllo dinamico " -"sui dati restituiti, come il filtraggio per campi specifici o il recupero di " -"informazioni dettagliate o semplificate, a seconda della richiesta." +"sui dati restituiti, come il filtraggio per campi specifici o il recupero di" +" informazioni dettagliate o semplificate, a seconda della richiesta." #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Un insieme di viste per la gestione degli oggetti AttributeValue. Questo " "insieme di viste fornisce funzionalità per elencare, recuperare, creare, " @@ -3183,9 +3210,9 @@ msgid "" "endpoints for Brand objects." msgstr "" "Rappresenta un insieme di viste per la gestione delle istanze del marchio. " -"Questa classe fornisce funzionalità per interrogare, filtrare e serializzare " -"gli oggetti Brand. Utilizza il framework ViewSet di Django per semplificare " -"l'implementazione di endpoint API per gli oggetti Brand." +"Questa classe fornisce funzionalità per interrogare, filtrare e serializzare" +" gli oggetti Brand. Utilizza il framework ViewSet di Django per semplificare" +" l'implementazione di endpoint API per gli oggetti Brand." #: engine/core/viewsets.py:438 msgid "" @@ -3200,8 +3227,8 @@ msgstr "" "Gestisce le operazioni relative al modello `Product` nel sistema. Questa " "classe fornisce un insieme di viste per la gestione dei prodotti, compreso " "il loro filtraggio, la serializzazione e le operazioni su istanze " -"specifiche. Si estende da `EvibesViewSet` per utilizzare funzionalità comuni " -"e si integra con il framework Django REST per le operazioni API RESTful. " +"specifiche. Si estende da `EvibesViewSet` per utilizzare funzionalità comuni" +" e si integra con il framework Django REST per le operazioni API RESTful. " "Include metodi per recuperare i dettagli del prodotto, applicare i permessi " "e accedere ai feedback correlati di un prodotto." @@ -3213,9 +3240,9 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Rappresenta un insieme di viste per la gestione degli oggetti Vendor. Questo " -"insieme di viste consente di recuperare, filtrare e serializzare i dati del " -"fornitore. Definisce il queryset, le configurazioni dei filtri e le classi " +"Rappresenta un insieme di viste per la gestione degli oggetti Vendor. Questo" +" insieme di viste consente di recuperare, filtrare e serializzare i dati del" +" fornitore. Definisce il queryset, le configurazioni dei filtri e le classi " "di serializzazione utilizzate per gestire le diverse azioni. Lo scopo di " "questa classe è fornire un accesso semplificato alle risorse relative a " "Vendor attraverso il framework REST di Django." @@ -3225,14 +3252,14 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Rappresentazione di un insieme di viste che gestisce gli oggetti Feedback. " -"Questa classe gestisce le operazioni relative agli oggetti Feedback, tra cui " -"l'elencazione, il filtraggio e il recupero dei dettagli. Lo scopo di questo " -"insieme di viste è fornire serializzatori diversi per azioni diverse e " +"Questa classe gestisce le operazioni relative agli oggetti Feedback, tra cui" +" l'elencazione, il filtraggio e il recupero dei dettagli. Lo scopo di questo" +" insieme di viste è fornire serializzatori diversi per azioni diverse e " "implementare una gestione basata sui permessi degli oggetti Feedback " "accessibili. Estende l'insieme di base `EvibesViewSet` e fa uso del sistema " "di filtraggio di Django per interrogare i dati." @@ -3242,9 +3269,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet per la gestione degli ordini e delle operazioni correlate. Questa " @@ -3260,8 +3287,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Fornisce un insieme di viste per la gestione delle entità OrderProduct. " @@ -3274,7 +3301,8 @@ msgstr "" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " msgstr "" -"Gestisce le operazioni relative alle immagini dei prodotti nell'applicazione." +"Gestisce le operazioni relative alle immagini dei prodotti " +"nell'applicazione." #: engine/core/viewsets.py:880 msgid "" @@ -3296,8 +3324,8 @@ msgstr "Gestisce le operazioni relative ai dati delle scorte nel sistema." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3309,8 +3337,8 @@ msgstr "" "ViewSet facilita funzionalità quali l'aggiunta, la rimozione e le azioni di " "massa per i prodotti della lista dei desideri. I controlli delle " "autorizzazioni sono integrati per garantire che gli utenti possano gestire " -"solo la propria lista dei desideri, a meno che non vengano concessi permessi " -"espliciti." +"solo la propria lista dei desideri, a meno che non vengano concessi permessi" +" espliciti." #: engine/core/viewsets.py:1044 msgid "" @@ -3320,8 +3348,8 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Questa classe fornisce la funzionalità viewset per la gestione degli oggetti " -"`Address`. La classe AddressViewSet consente operazioni CRUD, filtri e " +"Questa classe fornisce la funzionalità viewset per la gestione degli oggetti" +" `Address`. La classe AddressViewSet consente operazioni CRUD, filtri e " "azioni personalizzate relative alle entità indirizzo. Include comportamenti " "specializzati per diversi metodi HTTP, override del serializzatore e " "gestione dei permessi in base al contesto della richiesta." @@ -3345,4 +3373,3 @@ msgstr "" "flessibile su attributi specifici, utilizzando il backend del filtro " "specificato e utilizzando dinamicamente diversi serializzatori in base " "all'azione da eseguire." - diff --git a/engine/core/locale/ja_JP/LC_MESSAGES/django.mo b/engine/core/locale/ja_JP/LC_MESSAGES/django.mo index 984e800d27bb01f7e84cca4eea386a0f440d78f2..806a78e9066b6224af512079fd8cbd2f0d4e620f 100644 GIT binary patch delta 15006 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 Ng23H_I{20p{twe86mtLo diff --git a/engine/core/locale/ja_JP/LC_MESSAGES/django.po b/engine/core/locale/ja_JP/LC_MESSAGES/django.po index 013441ea..47e902be 100644 --- a/engine/core/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/core/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -19,8 +19,7 @@ msgstr "ユニークID" #: engine/core/abstract.py:13 msgid "unique id is used to surely identify any database object" -msgstr "" -"ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" +msgstr "ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" #: engine/core/abstract.py:20 msgid "is active" @@ -28,10 +27,9 @@ msgstr "アクティブ" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" -msgstr "" -"falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーに" -"は見えない。" +"if set to false, this object can't be seen by users without needed " +"permission" +msgstr "falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーには見えない。" #: engine/core/abstract.py:23 engine/core/choices.py:18 msgid "created" @@ -155,7 +153,8 @@ msgstr "配信" msgid "canceled" msgstr "キャンセル" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "失敗" @@ -183,754 +182,738 @@ msgstr "モメンタル" msgid "successful" msgstr "成功" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "選択された言語と選択されたフォーマットのOpenAPIスキーマ" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"この API の OpenApi3 スキーマ。フォーマットはコンテントネゴシエーションで選択できる。言語は Accept-Language " +"とクエリパラメータで選択できる。" + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "キャッシュI/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "許可されたデータをキャッシュから読み出すには、キーのみを適用する。\n" -"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用" -"する。" +"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用する。" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "サポートされている言語のリストを取得する" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "アプリケーションの公開可能なパラメータを取得する" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "サポートチームにメッセージを送る" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "CORSされたURLを要求する。httpsのみ許可。" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "商品、カテゴリー、ブランド間の検索" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "プロジェクト全体のテーブルを検索するグローバル検索エンドポイント" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "ビジネスとして注文を購入する" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスと" -"して注文を購入する。" +msgstr "提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスとして注文を購入する。" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "購入したデジタル注文からデジタル資産をダウンロードする" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "すべての属性グループをリストアップ(シンプルビュー)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "単一の属性グループを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "属性グループの作成" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "属性グループの削除" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "" -"既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存す" -"る。" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "属性を作成する" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "属性を削除する" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "既存の属性を書き換える。" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "すべての属性値をリストアップ(シンプルビュー)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "単一の属性値を取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "属性値の作成" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "属性値の削除" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "" -"既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "カテゴリーUUIDまたはスラッグ" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "カテゴリーを作成する" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "カテゴリーの削除" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEOメタ・スナップショット" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "カテゴリのSEOメタデータのスナップショットを返します。" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "全カテゴリーを一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "スタッフ以外のユーザーについては、自分の注文のみが返却される。" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"human_readable_id、order_products.product.name、order_products.product." -"partnumberの大文字小文字を区別しない部分文字列検索" +"human_readable_id、order_products.product.name、order_products.product.partnumberの大文字小文字を区別しない部分文字列検索" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "buy_time >= このISO 8601の日時を持つ注文をフィルタリングする。" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "buy_time <= このISO 8601の日付時間の注文をフィルタリングする。" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "正確な順序UUIDによるフィルタリング" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "人間が読み取れる正確な注文IDによるフィルタリング" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" -msgstr "" -"ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" +msgstr "ユーザーのEメールによるフィルタリング(大文字・小文字を区別しない完全一致)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "ユーザーのUUIDによるフィルタリング" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" -msgstr "" -"注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッ" -"チ)" +msgstr "注文ステータスによるフィルタリング(大文字と小文字を区別しない部分文字列マッチ)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"uuid、human_readable_id、user_email、user、status、created、modified、" -"buy_time、randomのいずれかによる順序。降順の場合は'-'をプレフィックスとしてつ" -"ける(例:'-buy_time')。" +"uuid、human_readable_id、user_email、user、status、created、modified、buy_time、randomのいずれかによる順序。降順の場合は'-'をプレフィックスとしてつける(例:'-buy_time')。" -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "単一のカテゴリーを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "注文UUIDまたは人間が読めるID" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "属性を作成する" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "属性を削除する" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "既存のカテゴリーを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "編集不可を保存している既存のカテゴリのいくつかのフィールドを書き換える" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "注文時の購入価格" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用し" -"て購入が完了します。 `force_payment` が使用された場合、トランザクションが開始" -"されます。" +"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " +"が使用された場合、トランザクションが開始されます。" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "ユーザーの現在の保留中の注文を取得する" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "認証されたユーザーの現在の保留中の注文を取得します。" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "アカウントを作成せずに注文を購入する" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "は、未登録ユーザーの注文購入を確定します。" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "注文に商品を追加する" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" +msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "数量はカウントされません。" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追" -"加する。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文に商品のリストを追加する。" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "注文から商品を削除する" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文から商品を削除す" -"る。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "注文から商品を削除すると、数量はカウントされません。" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "" -"指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削" -"除する。" +msgstr "指定された `product_uuid` と `attributes` を用いて、注文から商品のリストを削除する。" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "スタッフ以外のユーザーには、自分のウィッシュリストのみが返されます。" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "属性を作成する" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "属性を削除する" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "既存の属性を書き換える。" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "ユーザの現在の保留中のウィッシュリストを取得する" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "認証されたユーザーの現在の保留中のウィッシュリストを取得します。" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "注文に商品を追加する" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストに商品を追加する。" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "ウィッシュリストから商品を削除する" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "" -"指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" +msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "ウィッシュリストに多くの商品を追加する" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "注文から商品を削除する" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "1つまたは複数の属性名/値のペアでフィルタリングします。 \n" "- シンタックス**:attr_name=method-value[;attr2=method2-value2]...`。\n" -"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場" -"合は文字列として扱う。 \n" -"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとして" -"つけると、生の値を URL-safe base64-encode することができる。 \n" +"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場合は文字列として扱う。 \n" +"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとしてつけると、生の値を URL-safe base64-encode することができる。 \n" "例 \n" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" "b64-description=icontains-aGVhdC1jb2xk`。" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(正確には)製品UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスと" -"してつける。 \n" +"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" "**許可:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "製品を作る" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "" -"編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新す" -"る。" +msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "製品を削除する" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "製品に対して許可されたすべてのフィードバックを一覧表示します。" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "商品のSEOメタデータのスナップショットを返します。" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "全住所のリスト" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "単一アドレスの取得" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "新しいアドレスを作成する" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "アドレスの削除" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "アドレス全体の更新" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "アドレスの一部更新" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "オートコンプリート住所入力" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"docker compose exec app poetry run python manage.py deepl_translate -l en-gb " -"-l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " "it-it -l ja-jp -l kk-kz -l n-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" "hans -a core -a geo -a payments -a vibes_auth -a blog" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "結果を制限する, 1 < limit < 10, デフォルト: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "すべてのフィードバックを表示する(シンプルな表示)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "単一のフィードバックを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "フィードバックを作成する" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "フィードバックを削除する" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "既存のフィードバックを書き換える。" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "" -"既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保" -"存する。" +msgstr "既存のフィードバックのいくつかのフィールドを書き換えて、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "すべての注文と商品の関係をリストアップする(シンプルビュー)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "単一の注文と商品の関係を取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "新しい注文と商品の関係を作る" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "既存の注文と商品の関係を置き換える" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "既存の注文と商品の関係を部分的に更新する" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "注文と商品の関係を削除する" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "注文と商品の関係に関するフィードバックを追加または削除する。" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "すべてのブランドをリストアップ(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "単一ブランドの検索(詳細表示)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "ブランドUUIDまたはスラッグ" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "ブランドを作る" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "ブランドの削除" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "編集不可の既存ブランドをリライトする" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" -msgstr "" -"編集不可能なフィールドを保存している既存ブランドのフィールドを書き換える。" +msgstr "編集不可能なフィールドを保存している既存ブランドのフィールドを書き換える。" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "ブランドのSEOメタ・スナップショット" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "全ベンダーのリスト(シンプルビュー)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "単一ベンダーの検索(詳細表示)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "ベンダーの作成" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "ベンダーの削除" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "既存のベンダーを書き換え、編集不可能な部分を保存する。" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" -msgstr "" -"既存のベンダーのいくつかのフィールドを書き換えて、編集不可能なフィールドを保" -"存する。" +msgstr "既存のベンダーのいくつかのフィールドを書き換えて、編集不可能なフィールドを保存する。" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "すべての商品画像を一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "1枚の商品画像を取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "製品イメージの作成" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "商品画像を削除する" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "既存の商品画像を書き換え、編集不可能な部分を保存する。" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" -msgstr "" -"既存の商品画像のいくつかのフィールドを書き換えて、編集不可能な部分を保存す" -"る。" +msgstr "既存の商品画像のいくつかのフィールドを書き換えて、編集不可能な部分を保存する。" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "すべてのプロモコードを一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "単一のプロモコードを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "プロモコードを作成する" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "プロモコードを削除する" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "既存のプロモコードを書き換え、編集不可のプロモコードを保存する" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" -msgstr "" -"既存のプロモコードの一部のフィールドを書き換えて、編集不可能な部分を保存す" -"る。" +msgstr "既存のプロモコードの一部のフィールドを書き換えて、編集不可能な部分を保存する。" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "すべてのプロモーションを一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "単一のプロモーションを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "プロモーションの作成" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "プロモーションの削除" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "既存のプロモーションを書き換える。" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" -msgstr "" -"既存のプロモーションのいくつかのフィールドを書き換え、編集不可能な部分を保存" -"する。" +msgstr "既存のプロモーションのいくつかのフィールドを書き換え、編集不可能な部分を保存する。" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "全銘柄リスト(シンプルビュー)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "単一銘柄の取得(詳細表示)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "ストックレコードの作成" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "ストックレコードの削除" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "既存のストックレコードを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" -msgstr "" -"編集不可能なフィールドを保存している既存のストックレコードの一部のフィールド" -"を書き換える。" +msgstr "編集不可能なフィールドを保存している既存のストックレコードの一部のフィールドを書き換える。" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "すべての商品タグを一覧表示(シンプル表示)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "単一の商品タグを取得する(詳細表示)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "商品タグの作成" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "商品タグの削除" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "既存の商品タグを書き換え、編集不可能なものを保存する。" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" -msgstr "" -"既存の商品タグの一部のフィールドを書き換えて、編集不可能な部分を保存する。" +msgstr "既存の商品タグの一部のフィールドを書き換えて、編集不可能な部分を保存する。" #: engine/core/elasticsearch/__init__.py:122 #: engine/core/elasticsearch/__init__.py:570 @@ -1012,8 +995,7 @@ msgstr "SKU" #: engine/core/filters.py:184 msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "" -"include_subcategoriesフラグを使うには、category_uuidがなければならない。" +msgstr "include_subcategoriesフラグを使うには、category_uuidがなければならない。" #: engine/core/filters.py:353 msgid "Search (ID, product name or part number)" @@ -1081,7 +1063,7 @@ msgstr "キャッシュ・データ" msgid "camelized JSON data from the requested URL" msgstr "リクエストされたURLからキャメル化されたJSONデータ" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://で始まるURLのみが許可されます。" @@ -1165,10 +1147,9 @@ msgstr "注文する" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" -msgstr "" -"属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" +msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1242,7 +1223,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "このカテゴリのフィルタリングに使用できる属性と値。" #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "このカテゴリーの商品の最低価格と最高価格がある場合。" #: engine/core/graphene/object_types.py:206 @@ -1509,10 +1491,7 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"属性グループを表し、階層化することができます。このクラスは、属性グループの管" -"理と整理に使用します。属性グループは親グループを持つことができ、階層構造を形" -"成します。これは、複雑なシステムで属性をより効果的に分類・管理するのに便利で" -"す。" +"属性グループを表し、階層化することができます。このクラスは、属性グループの管理と整理に使用します。属性グループは親グループを持つことができ、階層構造を形成します。これは、複雑なシステムで属性をより効果的に分類・管理するのに便利です。" #: engine/core/models.py:91 msgid "parent of this group" @@ -1540,12 +1519,8 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"外部ベンダーとその相互作用要件に関する情報を格納できるベンダー・エンティティ" -"を表します。Vendor クラスは、外部ベンダーに関連する情報を定義・管理するために" -"使用します。これは、ベンダーの名前、通信に必要な認証の詳細、ベンダーから取得" -"した商品に適用されるパーセンテージのマークアップを格納します。このモデルは、" -"追加のメタデータと制約も保持するため、サードパーティ・ベンダーとやり取りする" -"システムでの使用に適しています。" +"外部ベンダーとその相互作用要件に関する情報を格納できるベンダー・エンティティを表します。Vendor " +"クラスは、外部ベンダーに関連する情報を定義・管理するために使用します。これは、ベンダーの名前、通信に必要な認証の詳細、ベンダーから取得した商品に適用されるパーセンテージのマークアップを格納します。このモデルは、追加のメタデータと制約も保持するため、サードパーティ・ベンダーとやり取りするシステムでの使用に適しています。" #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" @@ -1595,11 +1570,8 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"製品を分類または識別するために使用される製品タグを表します。ProductTag クラス" -"は、内部タグ識別子とユーザーフレンドリーな表示名の組み合わせによって、製品を" -"一意に識別および分類するように設計されています。ミキシンを通じてエクスポート" -"される操作をサポートし、管理目的のためにメタデータのカスタマイズを提供しま" -"す。" +"製品を分類または識別するために使用される製品タグを表します。ProductTag " +"クラスは、内部タグ識別子とユーザーフレンドリーな表示名の組み合わせによって、製品を一意に識別および分類するように設計されています。ミキシンを通じてエクスポートされる操作をサポートし、管理目的のためにメタデータのカスタマイズを提供します。" #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1627,9 +1599,7 @@ msgid "" "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"商品に使用されるカテゴリータグを表します。このクラスは、商品の関連付けと分類" -"に使用できるカテゴリタグをモデル化します。内部タグ識別子とユーザーフレンド" -"リーな表示名の属性が含まれます。" +"商品に使用されるカテゴリータグを表します。このクラスは、商品の関連付けと分類に使用できるカテゴリタグをモデル化します。内部タグ識別子とユーザーフレンドリーな表示名の属性が含まれます。" #: engine/core/models.py:254 msgid "category tag" @@ -1651,13 +1621,7 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"関連するアイテムを階層構造で整理し、グループ化するためのカテゴリ・エンティ" -"ティを表します。カテゴリは、親子関係をサポートする他のカテゴリとの階層関係を" -"持つことができます。このクラスには、カテゴリ関連機能の基盤となるメタデータお" -"よび視覚表現のためのフィールドが含まれます。このクラスは通常、アプリケーショ" -"ン内で商品カテゴリやその他の類似のグループ化を定義および管理するために使用さ" -"れ、ユーザや管理者がカテゴリの名前、説明、階層を指定したり、画像、タグ、優先" -"度などの属性を割り当てることができます。" +"関連するアイテムを階層構造で整理し、グループ化するためのカテゴリ・エンティティを表します。カテゴリは、親子関係をサポートする他のカテゴリとの階層関係を持つことができます。このクラスには、カテゴリ関連機能の基盤となるメタデータおよび視覚表現のためのフィールドが含まれます。このクラスは通常、アプリケーション内で商品カテゴリやその他の類似のグループ化を定義および管理するために使用され、ユーザや管理者がカテゴリの名前、説明、階層を指定したり、画像、タグ、優先度などの属性を割り当てることができます。" #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1708,12 +1672,10 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"システム内のブランド・オブジェクトを表します。このクラスは、名前、ロゴ、説" -"明、関連カテゴリ、一意のスラッグ、および優先順位など、ブランドに関連する情報" -"と属性を処理します。このクラスによって、アプリケーション内でブランド関連デー" -"タを整理し、表現することができます。" +"システム内のブランド・オブジェクトを表します。このクラスは、名前、ロゴ、説明、関連カテゴリ、一意のスラッグ、および優先順位など、ブランドに関連する情報と属性を処理します。このクラスによって、アプリケーション内でブランド関連データを整理し、表現することができます。" #: engine/core/models.py:448 msgid "name of this brand" @@ -1757,17 +1719,14 @@ msgstr "カテゴリー" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"システムで管理されている商品の在庫を表します。このクラスは、ベンダー、商品、" -"およびそれらの在庫情報間の関係の詳細や、価格、購入価格、数量、SKU、デジタル資" -"産などの在庫関連プロパティを提供します。これは在庫管理システムの一部で、さま" -"ざまなベンダーから入手可能な製品の追跡と評価を可能にします。" +"システムで管理されている商品の在庫を表します。このクラスは、ベンダー、商品、およびそれらの在庫情報間の関係の詳細や、価格、購入価格、数量、SKU、デジタル資産などの在庫関連プロパティを提供します。これは在庫管理システムの一部で、さまざまなベンダーから入手可能な製品の追跡と評価を可能にします。" #: engine/core/models.py:520 msgid "the vendor supplying this product stock" @@ -1845,13 +1804,9 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"カテゴリ、ブランド、タグ、デジタルステータス、名前、説明、品番、スラッグなど" -"の属性を持つ製品を表します。評価、フィードバック数、価格、数量、注文総数を取" -"得するための関連ユーティリティ・プロパティを提供します。電子商取引や在庫管理" -"を扱うシステムで使用するように設計されています。このクラスは、関連するモデル " -"(Category、Brand、ProductTag など) と相互作用し、パフォーマンスを向上させるた" -"めに、頻繁にアクセスされるプロパティのキャッシュを管理します。アプリケーショ" -"ン内で商品データとその関連情報を定義し、操作するために使用されます。" +"カテゴリ、ブランド、タグ、デジタルステータス、名前、説明、品番、スラッグなどの属性を持つ製品を表します。評価、フィードバック数、価格、数量、注文総数を取得するための関連ユーティリティ・プロパティを提供します。電子商取引や在庫管理を扱うシステムで使用するように設計されています。このクラスは、関連するモデル" +" (Category、Brand、ProductTag など) " +"と相互作用し、パフォーマンスを向上させるために、頻繁にアクセスされるプロパティのキャッシュを管理します。アプリケーション内で商品データとその関連情報を定義し、操作するために使用されます。" #: engine/core/models.py:585 msgid "category this product belongs to" @@ -1906,16 +1861,12 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"システム内の属性を表します。このクラスは、属性を定義および管理するために使用" -"されます。属性は、他のエンティティに関連付けることができる、カスタマイズ可能" -"なデータの部分です。属性には、関連するカテゴリ、グループ、値型、および名前が" -"あります。このモデルは、string、integer、float、boolean、array、object などの" -"複数の型の値をサポートしています。これにより、動的で柔軟なデータ構造化が可能" -"になります。" +"システム内の属性を表します。このクラスは、属性を定義および管理するために使用されます。属性は、他のエンティティに関連付けることができる、カスタマイズ可能なデータの部分です。属性には、関連するカテゴリ、グループ、値型、および名前があります。このモデルは、string、integer、float、boolean、array、object" +" などの複数の型の値をサポートしています。これにより、動的で柔軟なデータ構造化が可能になります。" #: engine/core/models.py:733 msgid "group of this attribute" @@ -1976,12 +1927,11 @@ msgstr "属性" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"製品にリンクされている属性の特定の値を表します。これは、「属性」を一意の" -"「値」にリンクし、製品特性のより良い編成と動的な表現を可能にします。" +"製品にリンクされている属性の特定の値を表します。これは、「属性」を一意の「値」にリンクし、製品特性のより良い編成と動的な表現を可能にします。" #: engine/core/models.py:788 msgid "attribute of this value" @@ -1998,15 +1948,12 @@ msgstr "この属性の具体的な値" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"システム内の商品に関連付けられた商品画像を表します。このクラスは商品の画像を" -"管理するために設計されており、画像ファイルのアップロード、特定の商品との関連" -"付け、表示順の決定などの機能を提供します。また、画像の代替テキストによるアク" -"セシビリティ機能も備えています。" +"システム内の商品に関連付けられた商品画像を表します。このクラスは商品の画像を管理するために設計されており、画像ファイルのアップロード、特定の商品との関連付け、表示順の決定などの機能を提供します。また、画像の代替テキストによるアクセシビリティ機能も備えています。" #: engine/core/models.py:826 msgid "provide alternative text for the image for accessibility" @@ -2046,14 +1993,10 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"割引を伴う商品の販促キャンペーンを表します。このクラスは、商品に対してパーセ" -"ンテージベースの割引を提供する販促キャンペーンを定義および管理するために使用" -"します。このクラスには、割引率を設定し、プロモーションの詳細を提供し、該当す" -"る商品にリンクするための属性が含まれます。商品カタログと統合して、キャンペー" -"ンの対象商品を決定します。" +"割引を伴う商品の販促キャンペーンを表します。このクラスは、商品に対してパーセンテージベースの割引を提供する販促キャンペーンを定義および管理するために使用します。このクラスには、割引率を設定し、プロモーションの詳細を提供し、該当する商品にリンクするための属性が含まれます。商品カタログと統合して、キャンペーンの対象商品を決定します。" #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2094,10 +2037,7 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"希望する商品を保存・管理するためのユーザーのウィッシュリストを表します。この" -"クラスは、商品のコレクションを管理する機能を提供し、商品の追加や削除などの操" -"作をサポートし、複数の商品を一度に追加したり削除したりする操作をサポートしま" -"す。" +"希望する商品を保存・管理するためのユーザーのウィッシュリストを表します。このクラスは、商品のコレクションを管理する機能を提供し、商品の追加や削除などの操作をサポートし、複数の商品を一度に追加したり削除したりする操作をサポートします。" #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2121,14 +2061,10 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"商品に関連付けられたドキュメンタリーのレコードを表します。このクラスは、ファ" -"イルのアップロードとそのメタデータを含む、特定の商品に関連するドキュメンタ" -"リーに関する情報を格納するために使用されます。ドキュメントファイルのファイル" -"タイプと保存パスを処理するメソッドとプロパティが含まれています。特定のミック" -"スインから機能を拡張し、追加のカスタム機能を提供します。" +"商品に関連付けられたドキュメンタリーのレコードを表します。このクラスは、ファイルのアップロードとそのメタデータを含む、特定の商品に関連するドキュメンタリーに関する情報を格納するために使用されます。ドキュメントファイルのファイルタイプと保存パスを処理するメソッドとプロパティが含まれています。特定のミックスインから機能を拡張し、追加のカスタム機能を提供します。" #: engine/core/models.py:998 msgid "documentary" @@ -2144,23 +2080,20 @@ msgstr "未解決" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"場所の詳細とユーザーとの関連付けを含む住所エンティティを表します。地理データ" -"および住所データを保存する機能と、ジオコーディングサービスとの統合機能を提供" -"します。このクラスは、street、city、region、country、geolocation (longitude " -"and latitude) のようなコンポーネントを含む詳細な住所情報を格納するように設計" -"されています。ジオコーディング API との統合をサポートしており、 生の API レス" -"ポンスを保存してさらなる処理や検査を行うことができます。また、このクラスは住" -"所とユーザを関連付けることができ、 パーソナライズされたデータの取り扱いを容易" -"にします。" +"場所の詳細とユーザーとの関連付けを含む住所エンティティを表します。地理データおよび住所データを保存する機能と、ジオコーディングサービスとの統合機能を提供します。このクラスは、street、city、region、country、geolocation" +" (longitude and latitude) のようなコンポーネントを含む詳細な住所情報を格納するように設計されています。ジオコーディング API" +" との統合をサポートしており、 生の API " +"レスポンスを保存してさらなる処理や検査を行うことができます。また、このクラスは住所とユーザを関連付けることができ、 " +"パーソナライズされたデータの取り扱いを容易にします。" #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2223,11 +2156,9 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"割引に使用できるプロモーションコードを表し、その有効期間、割引の種類、適用を" -"管理します。PromoCode クラスは、一意の識別子、割引のプロパティ (金額または" -"パーセンテージ)、有効期間、関連するユーザ (もしあれば)、および使用状況など、" -"プロモーションコードに関する詳細を格納します。これは、制約が満たされているこ" -"とを保証しながら、プロモコードを検証し、注文に適用する機能を含んでいます。" +"割引に使用できるプロモーションコードを表し、その有効期間、割引の種類、適用を管理します。PromoCode クラスは、一意の識別子、割引のプロパティ " +"(金額またはパーセンテージ)、有効期間、関連するユーザ " +"(もしあれば)、および使用状況など、プロモーションコードに関する詳細を格納します。これは、制約が満たされていることを保証しながら、プロモコードを検証し、注文に適用する機能を含んでいます。" #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2297,9 +2228,7 @@ msgstr "プロモコード" msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちら" -"も定義してはならない。" +msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" #: engine/core/models.py:1171 msgid "promocode already used" @@ -2314,16 +2243,12 @@ msgstr "プロモコード {self.uuid} の割引タイプが無効です!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"ユーザーによる注文を表します。このクラスは、請求や配送情報、ステータス、関連" -"するユーザ、通知、関連する操作などのさまざまな属性を含む、アプリケーション内" -"の注文をモデル化します。注文は関連する商品を持つことができ、プロモーションを" -"適用し、住所を設定し、配送または請求の詳細を更新することができます。同様に、" -"注文のライフサイクルにおける商品の管理もサポートします。" +"ユーザーによる注文を表します。このクラスは、請求や配送情報、ステータス、関連するユーザ、通知、関連する操作などのさまざまな属性を含む、アプリケーション内の注文をモデル化します。注文は関連する商品を持つことができ、プロモーションを適用し、住所を設定し、配送または請求の詳細を更新することができます。同様に、注文のライフサイクルにおける商品の管理もサポートします。" #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2355,8 +2280,7 @@ msgstr "注文状況" #: engine/core/models.py:1243 engine/core/models.py:1769 msgid "json structure of notifications to display to users" -msgstr "" -"ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" +msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" #: engine/core/models.py:1249 msgid "json representation of order attributes for this order" @@ -2456,17 +2380,13 @@ msgstr "注文を完了するための資金不足" msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "" -"ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お" -"客様のお名前、お客様のEメール、お客様の電話番号" +msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" #: engine/core/models.py:1584 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" -msgstr "" -"支払方法が無効です:{available_payment_methods}からの{payment_method}が無効で" -"す!" +msgstr "支払方法が無効です:{available_payment_methods}からの{payment_method}が無効です!" #: engine/core/models.py:1699 msgid "" @@ -2476,11 +2396,7 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"製品に対するユーザのフィードバックを管理します。このクラスは、購入した特定の" -"商品に対するユーザのフィードバックを取得し、保存するために設計されています。" -"ユーザのコメント、注文の関連商品への参照、そしてユーザが割り当てた評価を保存" -"する属性を含みます。このクラスは、フィードバックデータを効果的にモデル化し、" -"管理するためにデータベースフィールドを使用します。" +"製品に対するユーザのフィードバックを管理します。このクラスは、購入した特定の商品に対するユーザのフィードバックを取得し、保存するために設計されています。ユーザのコメント、注文の関連商品への参照、そしてユーザが割り当てた評価を保存する属性を含みます。このクラスは、フィードバックデータを効果的にモデル化し、管理するためにデータベースフィールドを使用します。" #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2491,7 +2407,8 @@ msgid "feedback comments" msgstr "フィードバック・コメント" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "このフィードバックが対象としている注文の特定の製品を参照する。" #: engine/core/models.py:1720 @@ -2518,13 +2435,7 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"注文に関連する商品とその属性を表す。OrderProductモデルは、購入価格、数量、商" -"品属性、ステータスなどの詳細を含む、注文の一部である商品に関する情報を保持し" -"ます。ユーザーや管理者への通知を管理し、商品残高の返却やフィードバックの追加" -"などの操作を処理します。このモデルはまた、合計価格の計算やデジタル商品のダウ" -"ンロードURLの生成など、ビジネスロジックをサポートするメソッドやプロパティも提" -"供します。このモデルはOrderモデルとProductモデルと統合され、それらへの参照を" -"保存します。" +"注文に関連する商品とその属性を表す。OrderProductモデルは、購入価格、数量、商品属性、ステータスなどの詳細を含む、注文の一部である商品に関する情報を保持します。ユーザーや管理者への通知を管理し、商品残高の返却やフィードバックの追加などの操作を処理します。このモデルはまた、合計価格の計算やデジタル商品のダウンロードURLの生成など、ビジネスロジックをサポートするメソッドやプロパティも提供します。このモデルはOrderモデルとProductモデルと統合され、それらへの参照を保存します。" #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2632,15 +2543,12 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"注文に関連するデジタル資産のダウンロード機能を表します。DigitalAssetDownload" -"クラスは、注文商品に関連するダウンロードを管理し、アクセスする機能を提供しま" -"す。このクラスは、関連する注文商品、ダウンロード数、およびアセットが公開され" -"ているかどうかの情報を保持します。関連する注文が完了したステータスのときに、" -"アセットをダウンロードするための URL を生成するメソッドも含まれています。" +"注文に関連するデジタル資産のダウンロード機能を表します。DigitalAssetDownloadクラスは、注文商品に関連するダウンロードを管理し、アクセスする機能を提供します。このクラスは、関連する注文商品、ダウンロード数、およびアセットが公開されているかどうかの情報を保持します。関連する注文が完了したステータスのときに、アセットをダウンロードするための" +" URL を生成するメソッドも含まれています。" #: engine/core/models.py:1961 msgid "download" @@ -2653,9 +2561,7 @@ msgstr "ダウンロード" #: engine/core/serializers/utility.py:89 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." -msgstr "" -"フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力す" -"る必要があります。" +msgstr "フィードバックを追加するには、コメント、評価、および注文商品の uuid を入力する必要があります。" #: engine/core/sitemaps.py:25 msgid "Home" @@ -2698,12 +2604,9 @@ msgstr "こんにちは%(order.user.first_name)s、" #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" -msgstr "" -"ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいた" -"します。以下、ご注文の詳細です:" +msgstr "ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいたします。以下、ご注文の詳細です:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2726,9 +2629,7 @@ msgstr "合計価格" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "" -"ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わ" -"せください。" +msgstr "ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わせください。" #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2756,8 +2657,7 @@ msgstr "こんにちは%(user_first_name)s、" msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" -msgstr "" -"ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" +msgstr "ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2778,9 +2678,7 @@ msgstr "価値" msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." -msgstr "" -"ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせくださ" -"い。" +msgstr "ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせください。" #: engine/core/templates/digital_order_delivered_email.html:165 #: engine/core/templates/promocode_granted_email.html:108 @@ -2812,12 +2710,9 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" -msgstr "" -"ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の" -"詳細です:" +msgstr "ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の詳細です:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2883,120 +2778,107 @@ msgstr "NOMINATIM_URLパラメータを設定する必要があります!" #: engine/core/validators.py:16 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" -msgstr "" -"画像のサイズは w{max_width} x h{max_height} ピクセルを超えないようにしてくだ" -"さい!" +msgstr "画像のサイズは w{max_width} x h{max_height} ピクセルを超えないようにしてください!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"サイトマップインデックスのリクエストを処理し、XMLレスポンスを返します。レスポ" -"ンスにXML用の適切なコンテントタイプヘッダーが含まれるようにします。" +"サイトマップインデックスのリクエストを処理し、XMLレスポンスを返します。レスポンスにXML用の適切なコンテントタイプヘッダーが含まれるようにします。" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"サイトマップの詳細表示レスポンスを処理します。この関数はリクエストを処理し、" -"適切なサイトマップ詳細レスポンスを取得し、XML の Content-Type ヘッダを設定し" -"ます。" +"サイトマップの詳細表示レスポンスを処理します。この関数はリクエストを処理し、適切なサイトマップ詳細レスポンスを取得し、XML の Content-" +"Type ヘッダを設定します。" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "サポートされている言語の一覧と対応する情報を返します。" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "ウェブサイトのパラメータをJSONオブジェクトとして返します。" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -msgstr "" -"指定されたキーとタイムアウトで、キャッシュ・データの読み取りや設定などの" -"キャッシュ操作を行う。" +msgstr "指定されたキーとタイムアウトで、キャッシュ・データの読み取りや設定などのキャッシュ操作を行う。" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "お問い合わせフォームの送信を処理する。" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." -msgstr "" -"入ってくる POST リクエストからの URL の処理と検証のリクエストを処理します。" +msgstr "入ってくる POST リクエストからの URL の処理と検証のリクエストを処理します。" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "グローバル検索クエリを処理する。" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "登録なしでビジネスとして購入するロジックを扱う。" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "注文に関連付けられたデジタルアセットのダウンロードを処理します。\n" -"この関数は、プロジェクトのストレージディレクトリにあるデジタルアセットファイ" -"ルの提供を試みます。ファイルが見つからない場合、リソースが利用できないことを" -"示すHTTP 404エラーが発生します。" +"この関数は、プロジェクトのストレージディレクトリにあるデジタルアセットファイルの提供を試みます。ファイルが見つからない場合、リソースが利用できないことを示すHTTP 404エラーが発生します。" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuidは必須です。" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "注文商品が存在しない" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "デジタルアセットのダウンロードは1回限りです。" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "デジタル資産をダウンロードする前に、注文を支払う必要があります。" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "注文商品に商品がない" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "ウェブサイトのファビコンへのリクエストを処理します。\n" -"この関数は、プロジェクトの静的ディレクトリにあるファビコンファイルの提供を試" -"みます。ファビコンファイルが見つからない場合、リソースが利用できないことを示" -"す HTTP 404 エラーが発生します。" - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"リクエストを admin インデックスページにリダイレクトします。この関数は、HTTP " -"リクエストを処理し、 Django の admin インタフェースインデッ クスページにリダ" -"イレクトします。HTTP リダイレクトの処理には Django の `redirect` 関数を使いま" -"す。" +"この関数は、プロジェクトの静的ディレクトリにあるファビコンファイルの提供を試みます。ファビコンファイルが見つからない場合、リソースが利用できないことを示す HTTP 404 エラーが発生します。" #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"リクエストを admin インデックスページにリダイレクトします。この関数は、HTTP リクエストを処理し、 Django の admin " +"インタフェースインデッ クスページにリダイレクトします。HTTP リダイレクトの処理には Django の `redirect` 関数を使います。" + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "eVibes の現在のバージョンを返します。" @@ -3008,23 +2890,21 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Evibes 関連の操作を管理するためのビューセットを定義します。EvibesViewSet クラ" -"スは ModelViewSet を継承し、Evibes エンティティに対する アクションや操作を扱" -"うための機能を提供します。現在のアクションに基づいた動的なシリアライザークラ" -"スのサポート、 カスタマイズ可能なパーミッション、レンダリングフォーマットが含" -"まれます。" +"Evibes 関連の操作を管理するためのビューセットを定義します。EvibesViewSet クラスは ModelViewSet を継承し、Evibes" +" エンティティに対する アクションや操作を扱うための機能を提供します。現在のアクションに基づいた動的なシリアライザークラスのサポート、 " +"カスタマイズ可能なパーミッション、レンダリングフォーマットが含まれます。" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"AttributeGroup オブジェクトを管理するためのビューセットを表します。データの" -"フィルタリング、シリアライズ、取得など、AttributeGroup に関連する操作を処理し" -"ます。このクラスは、アプリケーションのAPIレイヤの一部であり、AttributeGroup" -"データの要求と応答を処理する標準化された方法を提供します。" +"AttributeGroup " +"オブジェクトを管理するためのビューセットを表します。データのフィルタリング、シリアライズ、取得など、AttributeGroup " +"に関連する操作を処理します。このクラスは、アプリケーションのAPIレイヤの一部であり、AttributeGroupデータの要求と応答を処理する標準化された方法を提供します。" #: engine/core/viewsets.py:176 msgid "" @@ -3035,25 +2915,22 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"アプリケーション内でAttributeオブジェクトに関連する操作を処理する。Attribute " -"データと対話するための API エンドポイントのセットを提供します。このクラスは、" -"Attribute オブジェクトのクエリ、フィルタリング、およびシリアライズを管理し、" -"特定のフィールドによるフィルタリングや、リクエストに応じた詳細情報と簡略化さ" -"れた情報の取得など、返されるデータの動的な制御を可能にします。" +"アプリケーション内でAttributeオブジェクトに関連する操作を処理する。Attribute データと対話するための API " +"エンドポイントのセットを提供します。このクラスは、Attribute " +"オブジェクトのクエリ、フィルタリング、およびシリアライズを管理し、特定のフィールドによるフィルタリングや、リクエストに応じた詳細情報と簡略化された情報の取得など、返されるデータの動的な制御を可能にします。" #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"AttributeValue オブジェクトを管理するためのビューセットです。このビューセット" -"は、 AttributeValue オブジェクトの一覧表示、取得、作成、更新、削除の機能を提" -"供し ます。Django REST Framework のビューセット機構と統合され、異なるアクショ" -"ンに適切なシリアライザを使います。フィルタリング機能は DjangoFilterBackend を" -"通して提供されます。" +"AttributeValue オブジェクトを管理するためのビューセットです。このビューセットは、 AttributeValue " +"オブジェクトの一覧表示、取得、作成、更新、削除の機能を提供し ます。Django REST Framework " +"のビューセット機構と統合され、異なるアクションに適切なシリアライザを使います。フィルタリング機能は DjangoFilterBackend " +"を通して提供されます。" #: engine/core/viewsets.py:214 msgid "" @@ -3063,11 +2940,7 @@ msgid "" "The viewset also enforces permissions to ensure that only authorized users " "can access specific data." msgstr "" -"Category関連の操作のためのビューを管理します。CategoryViewSetクラスは、システ" -"ム内のCategoryモデルに関連する操作を処理する責任があります。カテゴリデータの" -"取得、フィルタリング、シリアライズをサポートします。ビューセットはまた、許可" -"されたユーザーだけが特定のデータにアクセスできるようにパーミッションを強制し" -"ます。" +"Category関連の操作のためのビューを管理します。CategoryViewSetクラスは、システム内のCategoryモデルに関連する操作を処理する責任があります。カテゴリデータの取得、フィルタリング、シリアライズをサポートします。ビューセットはまた、許可されたユーザーだけが特定のデータにアクセスできるようにパーミッションを強制します。" #: engine/core/viewsets.py:326 msgid "" @@ -3077,9 +2950,8 @@ msgid "" "endpoints for Brand objects." msgstr "" "Brandインスタンスを管理するためのビューセットを表します。このクラスは Brand " -"オブジェクトのクエリ、フィルタリング、シリアライズの機能を提供します。Django " -"の ViewSet フレームワークを使い、 Brand オブジェクトの API エンドポイントの実" -"装を簡素化します。" +"オブジェクトのクエリ、フィルタリング、シリアライズの機能を提供します。Django の ViewSet フレームワークを使い、 Brand " +"オブジェクトの API エンドポイントの実装を簡素化します。" #: engine/core/viewsets.py:438 msgid "" @@ -3091,12 +2963,10 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"システム内の `Product` モデルに関連する操作を管理する。このクラスは、商品の" -"フィルタリング、シリアライズ、特定のインスタンスに対する操作など、商品を管理" -"するためのビューセットを提供します。共通の機能を使うために `EvibesViewSet` を" -"継承し、 RESTful API 操作のために Django REST フレームワークと統合していま" -"す。商品の詳細を取得したり、パーミッションを適用したり、商品の関連するフィー" -"ドバックにアクセスするためのメソッドを含みます。" +"システム内の `Product` " +"モデルに関連する操作を管理する。このクラスは、商品のフィルタリング、シリアライズ、特定のインスタンスに対する操作など、商品を管理するためのビューセットを提供します。共通の機能を使うために" +" `EvibesViewSet` を継承し、 RESTful API 操作のために Django REST " +"フレームワークと統合しています。商品の詳細を取得したり、パーミッションを適用したり、商品の関連するフィードバックにアクセスするためのメソッドを含みます。" #: engine/core/viewsets.py:568 msgid "" @@ -3106,59 +2976,49 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Vendor オブジェクトを管理するためのビューセットを表します。このビューセットを" -"使用すると、 Vendor のデータを取得したりフィルタリングしたりシリアライズした" -"りすることができます。さまざまなアクションを処理するためのクエリセット、 フィ" -"ルタ設定、シリアライザクラスを定義します。このクラスの目的は、 Django REST フ" -"レームワークを通して Vendor 関連リソースへの合理的なアクセスを提供することで" -"す。" +"Vendor オブジェクトを管理するためのビューセットを表します。このビューセットを使用すると、 Vendor " +"のデータを取得したりフィルタリングしたりシリアライズしたりすることができます。さまざまなアクションを処理するためのクエリセット、 " +"フィルタ設定、シリアライザクラスを定義します。このクラスの目的は、 Django REST フレームワークを通して Vendor " +"関連リソースへの合理的なアクセスを提供することです。" #: engine/core/viewsets.py:588 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"Feedback オブジェクトを扱うビューセットの表現。このクラスは、一覧表示、フィル" -"タリング、詳細の取得など、Feedback オブジェクトに関する操作を管理します。この" -"ビューセットの目的は、アクションごとに異なるシリアライザを提供し、アクセス可" -"能な Feedback オブジェクトのパーミッションベースの処理を実装することです。" -"ベースとなる `EvibesViewSet` を拡張し、Django のフィルタリングシステムを利用" -"してデータを取得します。" +"Feedback オブジェクトを扱うビューセットの表現。このクラスは、一覧表示、フィルタリング、詳細の取得など、Feedback " +"オブジェクトに関する操作を管理します。このビューセットの目的は、アクションごとに異なるシリアライザを提供し、アクセス可能な Feedback " +"オブジェクトのパーミッションベースの処理を実装することです。ベースとなる `EvibesViewSet` を拡張し、Django " +"のフィルタリングシステムを利用してデータを取得します。" #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"注文と関連する操作を管理するための ViewSet。このクラスは、注文オブジェクトを" -"取得、変更、管理する機能を提供します。商品の追加や削除、登録ユーザや未登録" -"ユーザの購入の実行、現在の認証ユーザの保留中の注文の取得など、注文操作を処理" -"するためのさまざまなエンドポイントを含みます。ViewSetは、実行される特定のアク" -"ションに基づいて複数のシリアライザを使用し、注文データを操作している間、それ" -"に応じてパーミッションを強制します。" +"注文と関連する操作を管理するための " +"ViewSet。このクラスは、注文オブジェクトを取得、変更、管理する機能を提供します。商品の追加や削除、登録ユーザや未登録ユーザの購入の実行、現在の認証ユーザの保留中の注文の取得など、注文操作を処理するためのさまざまなエンドポイントを含みます。ViewSetは、実行される特定のアクションに基づいて複数のシリアライザを使用し、注文データを操作している間、それに応じてパーミッションを強制します。" #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"OrderProduct エンティティを管理するためのビューセットを提供します。このビュー" -"セットは、OrderProduct モデルに固有の CRUD 操作とカスタムアクションを可能にし" -"ます。これは、要求されたアクションに基づくフィルタリング、パーミッション" -"チェック、シリアライザーの切り替えを含みます。さらに、OrderProduct インスタン" -"スに関するフィードバックを処理するための詳細なアクションを提供します。" +"OrderProduct エンティティを管理するためのビューセットを提供します。このビューセットは、OrderProduct モデルに固有の CRUD " +"操作とカスタムアクションを可能にします。これは、要求されたアクションに基づくフィルタリング、パーミッションチェック、シリアライザーの切り替えを含みます。さらに、OrderProduct" +" インスタンスに関するフィードバックを処理するための詳細なアクションを提供します。" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " @@ -3168,8 +3028,7 @@ msgstr "アプリケーション内の商品画像に関する操作を管理し msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." -msgstr "" -"様々なAPIアクションによるプロモコードインスタンスの取得と処理を管理します。" +msgstr "様々なAPIアクションによるプロモコードインスタンスの取得と処理を管理します。" #: engine/core/viewsets.py:902 msgid "Represents a view set for managing promotions. " @@ -3183,18 +3042,13 @@ msgstr "システム内のストックデータに関する操作を行う。" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"ウィッシュリスト操作を管理するためのViewSet。WishlistViewSetは、ユーザーの" -"ウィッシュリストと対話するためのエンドポイントを提供し、ウィッシュリスト内の" -"商品の検索、変更、カスタマイズを可能にします。このViewSetは、ウィッシュリスト" -"商品の追加、削除、一括アクションなどの機能を容易にします。明示的なパーミッ" -"ションが付与されていない限り、ユーザーが自分のウィッシュリストのみを管理でき" -"るよう、パーミッションチェックが統合されています。" +"ウィッシュリスト操作を管理するためのViewSet。WishlistViewSetは、ユーザーのウィッシュリストと対話するためのエンドポイントを提供し、ウィッシュリスト内の商品の検索、変更、カスタマイズを可能にします。このViewSetは、ウィッシュリスト商品の追加、削除、一括アクションなどの機能を容易にします。明示的なパーミッションが付与されていない限り、ユーザーが自分のウィッシュリストのみを管理できるよう、パーミッションチェックが統合されています。" #: engine/core/viewsets.py:1044 msgid "" @@ -3204,11 +3058,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"このクラスは `Address` オブジェクトを管理するためのビューセット機能を提供す" -"る。AddressViewSet クラスは、住所エンティティに関連する CRUD 操作、フィルタリ" -"ング、カスタムアクションを可能にします。異なる HTTP メソッドに特化した振る舞" -"いや、シリアライザのオーバーライド、 リクエストコンテキストに基づいたパーミッ" -"ション処理などを含みます。" +"このクラスは `Address` オブジェクトを管理するためのビューセット機能を提供する。AddressViewSet " +"クラスは、住所エンティティに関連する CRUD 操作、フィルタリング、カスタムアクションを可能にします。異なる HTTP " +"メソッドに特化した振る舞いや、シリアライザのオーバーライド、 リクエストコンテキストに基づいたパーミッション処理などを含みます。" #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3223,9 +3075,4 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"アプリケーション内で商品タグに関連する操作を処理します。このクラスは、商品タ" -"グオブジェクトの取得、フィルタリング、シリアライズの機能を提供します。指定さ" -"れたフィルタバックエンドを使用して特定の属性に対する柔軟なフィルタリングをサ" -"ポートし、実行されるアクションに基づいて動的に異なるシリアライザを使用しま" -"す。" - +"アプリケーション内で商品タグに関連する操作を処理します。このクラスは、商品タグオブジェクトの取得、フィルタリング、シリアライズの機能を提供します。指定されたフィルタバックエンドを使用して特定の属性に対する柔軟なフィルタリングをサポートし、実行されるアクションに基づいて動的に異なるシリアライザを使用します。" diff --git a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po index 3659ee7b..3c018310 100644 --- a/engine/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -183,359 +183,395 @@ msgstr "" msgid "successful" msgstr "" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:78 +#: engine/core/docs/drf/viewsets.py:96 msgid "rewrite some fields of an existing attribute group saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:132 +#: engine/core/docs/drf/viewsets.py:186 msgid "rewrite some fields of an existing attribute value saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" "Case-insensitive substring search across human_readable_id, order_products." "product.name, and order_products.product.partnumber" msgstr "" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" "Order by one of: uuid, human_readable_id, user_email, user, status, created, " "modified, buy_time, random. Prefix with '-' for descending (e.g. '-" "buy_time')." msgstr "" -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 "" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -552,317 +588,313 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" @@ -1014,7 +1046,7 @@ msgstr "" msgid "camelized JSON data from the requested URL" msgstr "" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "" @@ -2692,53 +2724,53 @@ msgstr "" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" "This function attempts to serve the digital asset file located in the " @@ -2746,27 +2778,31 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" "This function attempts to serve the favicon file located in the static " @@ -2774,14 +2810,14 @@ msgid "" "error is raised to indicate the resource is unavailable." msgstr "" -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" "Redirects the request to the admin index page. The function handles incoming " "HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "" diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.mo b/engine/core/locale/ko_KR/LC_MESSAGES/django.mo index dda3babf2092b691f4365fa5a4867199f66465ba..20b2667c8090dbf63b25a094128745551829cb38 100644 GIT binary patch delta 14957 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 G*#7`HY3dsQ delta 13820 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 diff --git a/engine/core/locale/ko_KR/LC_MESSAGES/django.po b/engine/core/locale/ko_KR/LC_MESSAGES/django.po index d0ce7d0e..6d1ae391 100644 --- a/engine/core/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/core/locale/ko_KR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "활성 상태" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "false로 설정하면 필요한 권한이 없는 사용자는 이 개체를 볼 수 없습니다." #: engine/core/abstract.py:23 engine/core/choices.py:18 @@ -152,7 +153,8 @@ msgstr "배달됨" msgid "canceled" msgstr "취소됨" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "실패" @@ -180,11 +182,24 @@ msgstr "순간" msgid "successful" msgstr "성공" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "선택한 언어와 선택한 형식의 OpenAPI 스키마" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3 스키마를 사용합니다. 형식은 콘텐츠 협상을 통해 선택할 수 있습니다. 언어는 Accept-Language와 쿼리 " +"매개변수를 모두 사용하여 선택할 수 있습니다." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "캐시 I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -192,710 +207,708 @@ msgstr "" "캐시에서 허용된 데이터를 읽으려면 키만 적용합니다.\n" "캐시에 데이터를 쓰기 위해 키, 데이터 및 타임아웃을 인증과 함께 적용합니다." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "지원되는 언어 목록 보기" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "애플리케이션의 노출 가능한 매개변수 가져오기" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "지원팀에 메시지 보내기" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "CORSed URL을 요청합니다. https만 허용됩니다." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "제품, 카테고리 및 브랜드 간 검색" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "프로젝트의 테이블 전체에서 쿼리할 수 있는 글로벌 검색 엔드포인트" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "비즈니스로 주문 구매" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"제공된 '제품'과 '제품_uuid' 및 '속성'을 사용하여 비즈니스로서 주문을 구매합니" -"다." +msgstr "제공된 '제품'과 '제품_uuid' 및 '속성'을 사용하여 비즈니스로서 주문을 구매합니다." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "구매한 디지털 주문에서 디지털 자산 다운로드" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "모든 속성 그룹 나열(단순 보기)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "단일 속성 그룹 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "속성 그룹 만들기" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "속성 그룹 삭제" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 속성 그룹 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "" -"기존 속성 그룹의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "기존 속성 그룹의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "모든 속성 나열(단순 보기)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "단일 속성 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "속성 만들기" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "속성 삭제" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "편집할 수 없는 속성을 저장하는 기존 속성 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "편집할 수 없는 기존 속성의 일부 필드를 다시 작성합니다." -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "모든 속성 값 나열(단순 보기)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "단일 속성 값 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "속성 값 생성" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "속성 값 삭제" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "편집할 수 없는 기존 속성 값을 저장하여 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "" -"기존 속성 값의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "기존 속성 값의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "모든 카테고리 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "단일 카테고리 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "카테고리 UUID 또는 슬러그" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "카테고리 만들기" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "카테고리 삭제" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 카테고리 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 카테고리의 일부 필드 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO 메타 스냅샷" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "카테고리의 SEO 메타 데이터 스냅샷을 반환합니다." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "모든 카테고리 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "직원이 아닌 사용자의 경우 자신의 주문만 반환됩니다." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"대소문자를 구분하지 않는 하위 문자열 검색(human_readable_id, order_products." -"product.name 및 order_products.product.partnerumber)" +"대소문자를 구분하지 않는 하위 문자열 검색(human_readable_id, order_products.product.name 및 " +"order_products.product.partnerumber)" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "buy_time >= 이 ISO 8601 날짜 시간으로 주문 필터링" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "buy_time <= 이 ISO 8601 날짜 시간으로 주문 필터링" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "정확한 주문 UUID로 필터링" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "사람이 읽을 수 있는 정확한 주문 ID로 필터링" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "사용자 이메일로 필터링(대소문자를 구분하지 않는 일치 검색)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "사용자의 UUID로 필터링" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "주문 상태별 필터링(대소문자를 구분하지 않는 하위 문자열 일치)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"uuid, human_readable_id, user_email, 사용자, 상태, 생성됨, 수정됨, 구매 시" -"간, 무작위 중 하나로 정렬합니다. 접두사 앞에 '-'를 붙여 내림차순으로 정렬합니" -"다(예: '-buy_time')." +"uuid, human_readable_id, user_email, 사용자, 상태, 생성됨, 수정됨, 구매 시간, 무작위 중 하나로 " +"정렬합니다. 접두사 앞에 '-'를 붙여 내림차순으로 정렬합니다(예: '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "단일 카테고리 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "주문 UUID 또는 사람이 읽을 수 있는 ID" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "속성 만들기" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "직원이 아닌 사용자에게는 작동하지 않습니다." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "속성 삭제" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 카테고리 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 카테고리의 일부 필드 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "주문 시점의 구매 가격" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 "" -"주문 구매를 완료합니다. 강제 잔액`을 사용하면 사용자의 잔액을 사용하여 구매" -"가 완료되고, `강제 결제`를 사용하면 거래가 시작됩니다." +"주문 구매를 완료합니다. 강제 잔액`을 사용하면 사용자의 잔액을 사용하여 구매가 완료되고, `강제 결제`를 사용하면 거래가 시작됩니다." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "사용자의 현재 대기 주문 검색하기" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "인증된 사용자의 현재 대기 주문을 검색합니다." + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "계정 생성 없이 주문 구매" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "미등록 사용자의 주문 구매를 완료합니다." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "주문에 제품 추가" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품을 추가합니다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품을 추가합니다." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "주문할 제품 목록을 추가하면 수량은 계산되지 않습니다." -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품 목록을 추가합니" -"다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에 제품 목록을 추가합니다." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "주문에서 제품 제거" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품을 제거합니다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품을 제거합니다." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "주문에서 제품을 제거하면 수량이 계산되지 않습니다." -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "" -"제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품 목록을 제거합" -"니다." +msgstr "제공된 `product_uuid` 및 `attributes`를 사용하여 주문에서 제품 목록을 제거합니다." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "모든 속성 나열(단순 보기)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "직원이 아닌 사용자의 경우 자신의 위시리스트만 반환됩니다." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "단일 속성 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "속성 만들기" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "직원이 아닌 사용자에게는 작동하지 않습니다." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "속성 삭제" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "편집할 수 없는 속성을 저장하는 기존 속성 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "편집할 수 없는 기존 속성의 일부 필드를 다시 작성합니다." -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "사용자의 현재 보류 중인 위시리스트 검색" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "인증된 사용자의 현재 보류 중인 위시리스트를 검색합니다." + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "주문에 제품 추가" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "제공된 `product_uuid`를 사용하여 위시리스트에 제품을 추가합니다." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "위시리스트에서 제품 제거" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "제공된 `product_uuid`를 사용하여 위시리스트에서 제품을 제거합니다." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "위시리스트에 많은 제품 추가" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "제공된 `product_uuids`를 사용하여 위시리스트에 많은 제품을 추가합니다." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "주문에서 제품 제거" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "" -"제공된 `product_uuids`를 사용하여 위시리스트에서 많은 제품을 제거합니다." +msgstr "제공된 `product_uuids`를 사용하여 위시리스트에서 많은 제품을 제거합니다." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "하나 이상의 속성 이름/값 쌍을 기준으로 필터링합니다. \n" "- 구문**: `attr_name=메소드-값[;attr2=메소드2-값2]...`\n" -"- **방법**(생략 시 기본값은 `icontains`): `iexact`, `exact`, `icontains`, " -"`contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, " -"`regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- **값 입력**: JSON이 먼저 시도되며(목록/딕을 전달할 수 있도록), 부울, 정수, " -"부동 소수점의 경우 `true`/`false`, 그렇지 않으면 문자열로 처리됩니다. \n" -"- Base64**: 접두사 앞에 `b64-`를 추가하여 URL에 안전한 base64로 원시 값을 인" -"코딩합니다. \n" +"- **방법**(생략 시 기본값은 `icontains`): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **값 입력**: JSON이 먼저 시도되며(목록/딕을 전달할 수 있도록), 부울, 정수, 부동 소수점의 경우 `true`/`false`, 그렇지 않으면 문자열로 처리됩니다. \n" +"- Base64**: 접두사 앞에 `b64-`를 추가하여 URL에 안전한 base64로 원시 값을 인코딩합니다. \n" "예시: \n" "색상=정확-빨간색`, `크기=gt-10`, `기능=in-[\"wifi\",\"블루투스\"]`,\n" "b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "모든 제품 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(정확한) 제품 UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"정렬할 필드의 쉼표로 구분된 목록입니다. 접두사 앞에 `-`를 붙여 내림차순으로 " -"정렬합니다. \n" +"정렬할 필드의 쉼표로 구분된 목록입니다. 접두사 앞에 `-`를 붙여 내림차순으로 정렬합니다. \n" "**허용됨:** uuid, 등급, 이름, 슬러그, 생성, 수정, 가격, 랜덤" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "단일 제품 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "제품 UUID 또는 슬러그" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "제품 만들기" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "편집할 수 없는 필드를 유지하면서 기존 제품을 다시 작성합니다." -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "기존 제품의 일부 필드를 업데이트하여 편집할 수 없는 필드는 유지합니다." -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "제품 삭제" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "제품에 대해 허용된 모든 피드백을 나열합니다." -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "제품의 SEO 메타 데이터 스냅샷을 반환합니다." -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "모든 주소 나열" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "단일 주소 검색" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "새 주소 만들기" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "주소 삭제" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "전체 주소 업데이트" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "주소 부분 업데이트" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "주소 자동 완성 입력" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "원시 데이터 쿼리 문자열, 지오-IP 엔드포인트의 데이터를 추가하세요." -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "결과 금액을 제한합니다(1 < 제한 < 10, 기본값: 5)." -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "모든 피드백 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "단일 피드백 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "피드백 만들기" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "피드백 삭제" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "편집할 수 없는 기존 피드백을 다시 작성합니다." -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "" -"기존 피드백의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." +msgstr "기존 피드백의 일부 필드를 다시 작성하여 편집할 수 없는 항목을 저장합니다." -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "모든 주문-제품 관계 나열(단순 보기)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "단일 주문-제품 관계 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "새 주문-제품 관계 생성" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "기존 주문-제품 관계 교체" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "기존 주문-제품 관계를 부분적으로 업데이트합니다." -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "주문-제품 관계 삭제" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "주문-제품 관계에 대한 피드백 추가 또는 제거" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "모든 브랜드 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "단일 브랜드 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "브랜드 UUID 또는 슬러그" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "브랜드 만들기" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "브랜드 삭제" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "편집할 수 없는 기존 브랜드를 저장하여 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "편집할 수 없는 항목을 저장하여 기존 브랜드의 일부 필드 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "브랜드용 SEO 메타 스냅샷" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "모든 공급업체 목록(간편 보기)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "단일 공급업체 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "공급업체 만들기" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "공급업체 삭제" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "편집할 수 없는 기존 벤더를 저장하여 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "편집할 수 없는 기존 공급업체의 일부 필드 다시 작성" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "모든 제품 이미지 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "단일 제품 이미지 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "제품 이미지 만들기" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "제품 이미지 삭제" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "편집할 수 없는 기존 제품 이미지 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "편집할 수 없는 기존 제품 이미지의 일부 필드를 다시 작성합니다." -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "모든 프로모션 코드 목록(간편 보기)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "단일 프로모션 코드 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "프로모션 코드 생성" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "프로모션 코드 삭제" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "편집할 수 없는 기존 프로모션 코드 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "편집할 수 없는 기존 프로모션 코드의 일부 필드를 다시 작성합니다." -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "모든 프로모션 목록(간편 보기)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "단일 프로모션 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "프로모션 만들기" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "프로모션 삭제" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "편집할 수 없는 항목을 저장하여 기존 프로모션 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "편집할 수 없는 항목을 저장하여 기존 프로모션의 일부 필드 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "모든 종목 목록(간편 보기)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "단일 재고 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "재고 기록 만들기" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "재고 기록 삭제" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "편집할 수 없는 항목을 저장하여 기존 재고 레코드 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "편집할 수 없는 항목을 저장하는 기존 재고 레코드의 일부 필드 다시 쓰기" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "모든 제품 태그 나열(간편 보기)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "단일 제품 태그 검색(상세 보기)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "제품 태그 생성" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "제품 태그 삭제" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "편집할 수 없는 기존 제품 태그 다시 작성하기" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "편집할 수 없는 기존 제품 태그의 일부 필드를 다시 작성합니다." @@ -979,8 +992,7 @@ msgstr "SKU" #: engine/core/filters.py:184 msgid "there must be a category_uuid to use include_subcategories flag" -msgstr "" -"include_subcategories 플래그를 사용하려면 category_uuid가 있어야 합니다." +msgstr "include_subcategories 플래그를 사용하려면 category_uuid가 있어야 합니다." #: engine/core/filters.py:353 msgid "Search (ID, product name or part number)" @@ -1048,7 +1060,7 @@ msgstr "캐시된 데이터" msgid "camelized JSON data from the requested URL" msgstr "요청된 URL의 카멜라이즈된 JSON 데이터" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "http(s)://로 시작하는 URL만 허용됩니다." @@ -1132,8 +1144,8 @@ msgstr "주문 구매" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "속성을 attr1=value1,attr2=value2와 같은 형식의 문자열로 보내주세요." #: engine/core/graphene/mutations.py:550 @@ -1208,7 +1220,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "이 카테고리를 필터링하는 데 사용할 수 있는 속성 및 값입니다." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "이 카테고리의 제품에 대한 최소 및 최대 가격(가능한 경우)." #: engine/core/graphene/object_types.py:206 @@ -1269,9 +1282,7 @@ msgstr "청구서 수신 주소" msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" -msgstr "" -"이 주문의 배송 주소는 청구지 주소와 동일하거나 해당되지 않는 경우 비워 둡니" -"다." +msgstr "이 주문의 배송 주소는 청구지 주소와 동일하거나 해당되지 않는 경우 비워 둡니다." #: engine/core/graphene/object_types.py:415 msgid "total price of this order" @@ -1418,8 +1429,7 @@ msgstr "회사 전화번호" #: engine/core/graphene/object_types.py:681 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"'이메일 보낸 사람'을 호스트 사용자 값 대신 사용해야 하는 경우가 있습니다." +msgstr "'이메일 보낸 사람'을 호스트 사용자 값 대신 사용해야 하는 경우가 있습니다." #: engine/core/graphene/object_types.py:682 msgid "email host user" @@ -1478,10 +1488,8 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"계층적일 수 있는 속성 그룹을 나타냅니다. 이 클래스는 속성 그룹을 관리하고 구" -"성하는 데 사용됩니다. 속성 그룹은 상위 그룹을 가질 수 있으며 계층 구조를 형성" -"할 수 있습니다. 이는 복잡한 시스템에서 속성을 보다 효과적으로 분류하고 관리하" -"는 데 유용할 수 있습니다." +"계층적일 수 있는 속성 그룹을 나타냅니다. 이 클래스는 속성 그룹을 관리하고 구성하는 데 사용됩니다. 속성 그룹은 상위 그룹을 가질 수 " +"있으며 계층 구조를 형성할 수 있습니다. 이는 복잡한 시스템에서 속성을 보다 효과적으로 분류하고 관리하는 데 유용할 수 있습니다." #: engine/core/models.py:91 msgid "parent of this group" @@ -1509,12 +1517,10 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"외부 공급업체 및 해당 공급업체의 상호 작용 요구 사항에 대한 정보를 저장할 수 " -"있는 공급업체 엔티티를 나타냅니다. 공급업체 클래스는 외부 공급업체와 관련된 " -"정보를 정의하고 관리하는 데 사용됩니다. 공급업체의 이름, 통신에 필요한 인증 " -"세부 정보, 공급업체에서 검색한 제품에 적용된 마크업 비율을 저장합니다. 또한 " -"이 모델은 추가 메타데이터 및 제약 조건을 유지하므로 타사 공급업체와 상호 작용" -"하는 시스템에서 사용하기에 적합합니다." +"외부 공급업체 및 해당 공급업체의 상호 작용 요구 사항에 대한 정보를 저장할 수 있는 공급업체 엔티티를 나타냅니다. 공급업체 클래스는 " +"외부 공급업체와 관련된 정보를 정의하고 관리하는 데 사용됩니다. 공급업체의 이름, 통신에 필요한 인증 세부 정보, 공급업체에서 검색한 " +"제품에 적용된 마크업 비율을 저장합니다. 또한 이 모델은 추가 메타데이터 및 제약 조건을 유지하므로 타사 공급업체와 상호 작용하는 " +"시스템에서 사용하기에 적합합니다." #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" @@ -1564,10 +1570,9 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"제품을 분류하거나 식별하는 데 사용되는 제품 태그를 나타냅니다. ProductTag 클" -"래스는 내부 태그 식별자와 사용자 친화적인 표시 이름의 조합을 통해 제품을 고유" -"하게 식별하고 분류하도록 설계되었습니다. 믹스인을 통해 내보낸 작업을 지원하" -"며 관리 목적으로 메타데이터 사용자 지정을 제공합니다." +"제품을 분류하거나 식별하는 데 사용되는 제품 태그를 나타냅니다. ProductTag 클래스는 내부 태그 식별자와 사용자 친화적인 표시 " +"이름의 조합을 통해 제품을 고유하게 식별하고 분류하도록 설계되었습니다. 믹스인을 통해 내보낸 작업을 지원하며 관리 목적으로 메타데이터 " +"사용자 지정을 제공합니다." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1595,9 +1600,8 @@ msgid "" "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"제품에 사용되는 카테고리 태그를 나타냅니다. 이 클래스는 제품을 연결하고 분류" -"하는 데 사용할 수 있는 카테고리 태그를 모델링합니다. 내부 태그 식별자 및 사용" -"자 친화적인 표시 이름에 대한 속성을 포함합니다." +"제품에 사용되는 카테고리 태그를 나타냅니다. 이 클래스는 제품을 연결하고 분류하는 데 사용할 수 있는 카테고리 태그를 모델링합니다. 내부" +" 태그 식별자 및 사용자 친화적인 표시 이름에 대한 속성을 포함합니다." #: engine/core/models.py:254 msgid "category tag" @@ -1619,13 +1623,10 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"관련 항목을 계층 구조로 정리하고 그룹화할 카테고리 엔티티를 나타냅니다. 카테" -"고리는 다른 카테고리와 계층적 관계를 가질 수 있으며, 상위-하위 관계를 지원합" -"니다. 이 클래스에는 카테고리 관련 기능의 기반이 되는 메타데이터 및 시각적 표" -"현을 위한 필드가 포함되어 있습니다. 이 클래스는 일반적으로 애플리케이션 내에" -"서 제품 카테고리 또는 기타 유사한 그룹을 정의하고 관리하는 데 사용되며, 사용" -"자나 관리자가 카테고리의 이름, 설명 및 계층 구조를 지정하고 이미지, 태그 또" -"는 우선순위와 같은 속성을 할당할 수 있도록 합니다." +"관련 항목을 계층 구조로 정리하고 그룹화할 카테고리 엔티티를 나타냅니다. 카테고리는 다른 카테고리와 계층적 관계를 가질 수 있으며, " +"상위-하위 관계를 지원합니다. 이 클래스에는 카테고리 관련 기능의 기반이 되는 메타데이터 및 시각적 표현을 위한 필드가 포함되어 " +"있습니다. 이 클래스는 일반적으로 애플리케이션 내에서 제품 카테고리 또는 기타 유사한 그룹을 정의하고 관리하는 데 사용되며, 사용자나 " +"관리자가 카테고리의 이름, 설명 및 계층 구조를 지정하고 이미지, 태그 또는 우선순위와 같은 속성을 할당할 수 있도록 합니다." #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1676,11 +1677,11 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"시스템에서 브랜드 객체를 나타냅니다. 이 클래스는 이름, 로고, 설명, 관련 카테" -"고리, 고유 슬러그, 우선순위 등 브랜드와 관련된 정보 및 속성을 처리합니다. 이" -"를 통해 애플리케이션 내에서 브랜드 관련 데이터를 구성하고 표현할 수 있습니다." +"시스템에서 브랜드 객체를 나타냅니다. 이 클래스는 이름, 로고, 설명, 관련 카테고리, 고유 슬러그, 우선순위 등 브랜드와 관련된 정보 " +"및 속성을 처리합니다. 이를 통해 애플리케이션 내에서 브랜드 관련 데이터를 구성하고 표현할 수 있습니다." #: engine/core/models.py:448 msgid "name of this brand" @@ -1724,17 +1725,16 @@ msgstr "카테고리" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"시스템에서 관리되는 제품의 재고를 나타냅니다. 이 클래스는 공급업체, 제품, 재" -"고 정보 간의 관계와 가격, 구매 가격, 수량, SKU 및 디지털 자산과 같은 재고 관" -"련 속성에 대한 세부 정보를 제공합니다. 다양한 공급업체에서 제공하는 제품을 추" -"적하고 평가할 수 있도록 하는 재고 관리 시스템의 일부입니다." +"시스템에서 관리되는 제품의 재고를 나타냅니다. 이 클래스는 공급업체, 제품, 재고 정보 간의 관계와 가격, 구매 가격, 수량, SKU 및" +" 디지털 자산과 같은 재고 관련 속성에 대한 세부 정보를 제공합니다. 다양한 공급업체에서 제공하는 제품을 추적하고 평가할 수 있도록 하는" +" 재고 관리 시스템의 일부입니다." #: engine/core/models.py:520 msgid "the vendor supplying this product stock" @@ -1812,13 +1812,10 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"카테고리, 브랜드, 태그, 디지털 상태, 이름, 설명, 부품 번호, 슬러그 등의 속성" -"을 가진 제품을 나타냅니다. 평점, 피드백 수, 가격, 수량, 총 주문 수 등을 검색" -"할 수 있는 관련 유틸리티 속성을 제공합니다. 이커머스 또는 재고 관리를 처리하" -"는 시스템에서 사용하도록 설계되었습니다. 이 클래스는 관련 모델(예: 카테고리, " -"브랜드, 제품 태그)과 상호 작용하고 자주 액세스하는 속성에 대한 캐싱을 관리하" -"여 성능을 개선합니다. 애플리케이션 내에서 제품 데이터 및 관련 정보를 정의하" -"고 조작하는 데 사용됩니다." +"카테고리, 브랜드, 태그, 디지털 상태, 이름, 설명, 부품 번호, 슬러그 등의 속성을 가진 제품을 나타냅니다. 평점, 피드백 수, " +"가격, 수량, 총 주문 수 등을 검색할 수 있는 관련 유틸리티 속성을 제공합니다. 이커머스 또는 재고 관리를 처리하는 시스템에서 " +"사용하도록 설계되었습니다. 이 클래스는 관련 모델(예: 카테고리, 브랜드, 제품 태그)과 상호 작용하고 자주 액세스하는 속성에 대한 " +"캐싱을 관리하여 성능을 개선합니다. 애플리케이션 내에서 제품 데이터 및 관련 정보를 정의하고 조작하는 데 사용됩니다." #: engine/core/models.py:585 msgid "category this product belongs to" @@ -1873,15 +1870,13 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"시스템의 속성을 나타냅니다. 이 클래스는 다른 엔티티와 연결할 수 있는 사용자 " -"지정 가능한 데이터 조각인 속성을 정의하고 관리하는 데 사용됩니다. 속성에는 연" -"관된 카테고리, 그룹, 값 유형 및 이름이 있습니다. 이 모델은 문자열, 정수, 실" -"수, 부울, 배열, 객체 등 여러 유형의 값을 지원합니다. 이를 통해 동적이고 유연" -"한 데이터 구조화가 가능합니다." +"시스템의 속성을 나타냅니다. 이 클래스는 다른 엔티티와 연결할 수 있는 사용자 지정 가능한 데이터 조각인 속성을 정의하고 관리하는 데 " +"사용됩니다. 속성에는 연관된 카테고리, 그룹, 값 유형 및 이름이 있습니다. 이 모델은 문자열, 정수, 실수, 부울, 배열, 객체 등 " +"여러 유형의 값을 지원합니다. 이를 통해 동적이고 유연한 데이터 구조화가 가능합니다." #: engine/core/models.py:733 msgid "group of this attribute" @@ -1942,12 +1937,12 @@ msgstr "속성" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"상품에 연결된 속성의 특정 값을 나타냅니다. '속성'을 고유한 '값'에 연결하여 제" -"품 특성을 더 잘 구성하고 동적으로 표현할 수 있습니다." +"상품에 연결된 속성의 특정 값을 나타냅니다. '속성'을 고유한 '값'에 연결하여 제품 특성을 더 잘 구성하고 동적으로 표현할 수 " +"있습니다." #: engine/core/models.py:788 msgid "attribute of this value" @@ -1964,15 +1959,13 @@ msgstr "이 속성의 구체적인 값은 다음과 같습니다." #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"시스템에서 제품과 연관된 제품 이미지를 나타냅니다. 이 클래스는 이미지 파일 업" -"로드, 특정 제품과의 연결, 표시 순서 결정 등의 기능을 포함하여 제품의 이미지" -"를 관리하도록 설계되었습니다. 또한 이미지에 대한 대체 텍스트가 포함된 접근성 " -"기능도 포함되어 있습니다." +"시스템에서 제품과 연관된 제품 이미지를 나타냅니다. 이 클래스는 이미지 파일 업로드, 특정 제품과의 연결, 표시 순서 결정 등의 기능을 " +"포함하여 제품의 이미지를 관리하도록 설계되었습니다. 또한 이미지에 대한 대체 텍스트가 포함된 접근성 기능도 포함되어 있습니다." #: engine/core/models.py:826 msgid "provide alternative text for the image for accessibility" @@ -2012,14 +2005,12 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"할인이 적용되는 제품에 대한 프로모션 캠페인을 나타냅니다. 이 클래스는 제품에 " -"대해 백분율 기반 할인을 제공하는 프로모션 캠페인을 정의하고 관리하는 데 사용" -"됩니다. 이 클래스에는 할인율 설정, 프로모션에 대한 세부 정보 제공 및 해당 제" -"품에 대한 링크를 위한 속성이 포함되어 있습니다. 제품 카탈로그와 통합되어 캠페" -"인에서 영향을 받는 품목을 결정합니다." +"할인이 적용되는 제품에 대한 프로모션 캠페인을 나타냅니다. 이 클래스는 제품에 대해 백분율 기반 할인을 제공하는 프로모션 캠페인을 " +"정의하고 관리하는 데 사용됩니다. 이 클래스에는 할인율 설정, 프로모션에 대한 세부 정보 제공 및 해당 제품에 대한 링크를 위한 속성이 " +"포함되어 있습니다. 제품 카탈로그와 통합되어 캠페인에서 영향을 받는 품목을 결정합니다." #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2060,9 +2051,8 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"원하는 상품을 저장하고 관리하기 위한 사용자의 위시리스트를 나타냅니다. 이 클" -"래스는 제품 컬렉션을 관리하는 기능을 제공하여 제품 추가 및 제거와 같은 작업" -"을 지원할 뿐만 아니라 여러 제품을 한 번에 추가 및 제거하는 작업도 지원합니다." +"원하는 상품을 저장하고 관리하기 위한 사용자의 위시리스트를 나타냅니다. 이 클래스는 제품 컬렉션을 관리하는 기능을 제공하여 제품 추가 및" +" 제거와 같은 작업을 지원할 뿐만 아니라 여러 제품을 한 번에 추가 및 제거하는 작업도 지원합니다." #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2086,14 +2076,12 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"상품에 연결된 다큐멘터리 레코드를 나타냅니다. 이 클래스는 파일 업로드 및 메타" -"데이터를 포함하여 특정 제품과 관련된 다큐멘터리에 대한 정보를 저장하는 데 사" -"용됩니다. 여기에는 다큐멘터리 파일의 파일 유형과 저장 경로를 처리하는 메서드" -"와 프로퍼티가 포함되어 있습니다. 특정 믹스인의 기능을 확장하고 추가 사용자 정" -"의 기능을 제공합니다." +"상품에 연결된 다큐멘터리 레코드를 나타냅니다. 이 클래스는 파일 업로드 및 메타데이터를 포함하여 특정 제품과 관련된 다큐멘터리에 대한 " +"정보를 저장하는 데 사용됩니다. 여기에는 다큐멘터리 파일의 파일 유형과 저장 경로를 처리하는 메서드와 프로퍼티가 포함되어 있습니다. 특정" +" 믹스인의 기능을 확장하고 추가 사용자 정의 기능을 제공합니다." #: engine/core/models.py:998 msgid "documentary" @@ -2109,22 +2097,19 @@ msgstr "해결되지 않음" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"위치 세부 정보 및 사용자와의 연결을 포함하는 주소 엔티티를 나타냅니다. 지리" -"적 및 주소 데이터 저장과 지오코딩 서비스와의 통합을 위한 기능을 제공합니다. " -"이 클래스는 거리, 도시, 지역, 국가, 지리적 위치(경도 및 위도)와 같은 구성 요" -"소를 포함한 상세한 주소 정보를 저장하도록 설계되었습니다. 지오코딩 API와의 통" -"합을 지원하여 추가 처리 또는 검사를 위해 원시 API 응답을 저장할 수 있습니다. " -"또한 이 클래스를 사용하면 주소를 사용자와 연결하여 개인화된 데이터 처리를 용" -"이하게 할 수 있습니다." +"위치 세부 정보 및 사용자와의 연결을 포함하는 주소 엔티티를 나타냅니다. 지리적 및 주소 데이터 저장과 지오코딩 서비스와의 통합을 위한 " +"기능을 제공합니다. 이 클래스는 거리, 도시, 지역, 국가, 지리적 위치(경도 및 위도)와 같은 구성 요소를 포함한 상세한 주소 정보를 " +"저장하도록 설계되었습니다. 지오코딩 API와의 통합을 지원하여 추가 처리 또는 검사를 위해 원시 API 응답을 저장할 수 있습니다. 또한" +" 이 클래스를 사용하면 주소를 사용자와 연결하여 개인화된 데이터 처리를 용이하게 할 수 있습니다." #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2187,11 +2172,9 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"할인에 사용할 수 있는 프로모션 코드를 나타내며, 유효 기간, 할인 유형 및 적용" -"을 관리합니다. 프로모션 코드 클래스는 고유 식별자, 할인 속성(금액 또는 백분" -"율), 유효 기간, 관련 사용자(있는 경우), 사용 상태 등 프로모션 코드에 대한 세" -"부 정보를 저장합니다. 여기에는 제약 조건이 충족되는지 확인하면서 프로모션 코" -"드의 유효성을 검사하고 주문에 적용하는 기능이 포함되어 있습니다." +"할인에 사용할 수 있는 프로모션 코드를 나타내며, 유효 기간, 할인 유형 및 적용을 관리합니다. 프로모션 코드 클래스는 고유 식별자, " +"할인 속성(금액 또는 백분율), 유효 기간, 관련 사용자(있는 경우), 사용 상태 등 프로모션 코드에 대한 세부 정보를 저장합니다. " +"여기에는 제약 조건이 충족되는지 확인하면서 프로모션 코드의 유효성을 검사하고 주문에 적용하는 기능이 포함되어 있습니다." #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2261,9 +2244,7 @@ msgstr "프로모션 코드" msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"할인 유형(금액 또는 백분율)은 한 가지 유형만 정의해야 하며, 두 가지 모두 또" -"는 둘 다 정의해서는 안 됩니다." +msgstr "할인 유형(금액 또는 백분율)은 한 가지 유형만 정의해야 하며, 두 가지 모두 또는 둘 다 정의해서는 안 됩니다." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2278,16 +2259,14 @@ msgstr "프로모션 코드 {self.uuid}의 할인 유형이 잘못되었습니 msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"사용자가 진행한 주문을 나타냅니다. 이 클래스는 청구 및 배송 정보, 상태, 연결" -"된 사용자, 알림 및 관련 작업과 같은 다양한 속성을 포함하여 애플리케이션 내에" -"서 주문을 모델링합니다. 주문에는 연결된 제품, 프로모션 적용, 주소 설정, 배송 " -"또는 청구 세부 정보 업데이트가 가능합니다. 또한 주문 수명 주기에서 제품을 관" -"리하는 기능도 지원합니다." +"사용자가 진행한 주문을 나타냅니다. 이 클래스는 청구 및 배송 정보, 상태, 연결된 사용자, 알림 및 관련 작업과 같은 다양한 속성을 " +"포함하여 애플리케이션 내에서 주문을 모델링합니다. 주문에는 연결된 제품, 프로모션 적용, 주소 설정, 배송 또는 청구 세부 정보 " +"업데이트가 가능합니다. 또한 주문 수명 주기에서 제품을 관리하는 기능도 지원합니다." #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2319,8 +2298,7 @@ msgstr "주문 상태" #: engine/core/models.py:1243 engine/core/models.py:1769 msgid "json structure of notifications to display to users" -msgstr "" -"사용자에게 표시할 알림의 JSON 구조, 관리자 UI에서는 테이블 보기가 사용됩니다." +msgstr "사용자에게 표시할 알림의 JSON 구조, 관리자 UI에서는 테이블 보기가 사용됩니다." #: engine/core/models.py:1249 msgid "json representation of order attributes for this order" @@ -2420,17 +2398,13 @@ msgstr "주문을 완료하기에 자금이 부족합니다." msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "" -"등록하지 않으면 구매할 수 없으므로 고객 이름, 고객 이메일, 고객 전화 번호 등" -"의 정보를 제공하세요." +msgstr "등록하지 않으면 구매할 수 없으므로 고객 이름, 고객 이메일, 고객 전화 번호 등의 정보를 제공하세요." #: engine/core/models.py:1584 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" -msgstr "" -"결제 방법이 잘못되었습니다: {payment_method}에서 {available_payment_methods}" -"로!" +msgstr "결제 방법이 잘못되었습니다: {payment_method}에서 {available_payment_methods}로!" #: engine/core/models.py:1699 msgid "" @@ -2440,11 +2414,9 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"제품에 대한 사용자 피드백을 관리합니다. 이 클래스는 사용자가 구매한 특정 제품" -"에 대한 사용자 피드백을 캡처하고 저장하도록 설계되었습니다. 여기에는 사용자 " -"댓글, 주문에서 관련 제품에 대한 참조 및 사용자가 지정한 등급을 저장하는 속성" -"이 포함되어 있습니다. 이 클래스는 데이터베이스 필드를 사용하여 피드백 데이터" -"를 효과적으로 모델링하고 관리합니다." +"제품에 대한 사용자 피드백을 관리합니다. 이 클래스는 사용자가 구매한 특정 제품에 대한 사용자 피드백을 캡처하고 저장하도록 " +"설계되었습니다. 여기에는 사용자 댓글, 주문에서 관련 제품에 대한 참조 및 사용자가 지정한 등급을 저장하는 속성이 포함되어 있습니다. 이" +" 클래스는 데이터베이스 필드를 사용하여 피드백 데이터를 효과적으로 모델링하고 관리합니다." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2455,7 +2427,8 @@ msgid "feedback comments" msgstr "피드백 댓글" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "이 피드백에 대한 순서대로 특정 제품을 참조합니다." #: engine/core/models.py:1720 @@ -2482,13 +2455,10 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"주문과 관련된 제품 및 해당 속성을 나타냅니다. 주문 제품 모델은 구매 가격, 수" -"량, 제품 속성 및 상태 등의 세부 정보를 포함하여 주문의 일부인 제품에 대한 정" -"보를 유지 관리합니다. 사용자 및 관리자에 대한 알림을 관리하고 제품 잔액 반환 " -"또는 피드백 추가와 같은 작업을 처리합니다. 또한 이 모델은 총 가격 계산이나 디" -"지털 제품의 다운로드 URL 생성 등 비즈니스 로직을 지원하는 메서드와 속성을 제" -"공합니다. 이 모델은 주문 및 제품 모델과 통합되며 해당 모델에 대한 참조를 저장" -"합니다." +"주문과 관련된 제품 및 해당 속성을 나타냅니다. 주문 제품 모델은 구매 가격, 수량, 제품 속성 및 상태 등의 세부 정보를 포함하여 " +"주문의 일부인 제품에 대한 정보를 유지 관리합니다. 사용자 및 관리자에 대한 알림을 관리하고 제품 잔액 반환 또는 피드백 추가와 같은 " +"작업을 처리합니다. 또한 이 모델은 총 가격 계산이나 디지털 제품의 다운로드 URL 생성 등 비즈니스 로직을 지원하는 메서드와 속성을 " +"제공합니다. 이 모델은 주문 및 제품 모델과 통합되며 해당 모델에 대한 참조를 저장합니다." #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2596,15 +2566,13 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"주문과 관련된 디지털 자산의 다운로드 기능을 나타냅니다. 디지털 자산 다운로드 " -"클래스는 주문 상품과 관련된 다운로드를 관리하고 액세스할 수 있는 기능을 제공" -"합니다. 연결된 주문 상품, 다운로드 횟수, 자산이 공개적으로 표시되는지 여부에 " -"대한 정보를 유지 관리합니다. 여기에는 연결된 주문이 완료 상태일 때 자산을 다" -"운로드할 수 있는 URL을 생성하는 메서드가 포함되어 있습니다." +"주문과 관련된 디지털 자산의 다운로드 기능을 나타냅니다. 디지털 자산 다운로드 클래스는 주문 상품과 관련된 다운로드를 관리하고 액세스할 " +"수 있는 기능을 제공합니다. 연결된 주문 상품, 다운로드 횟수, 자산이 공개적으로 표시되는지 여부에 대한 정보를 유지 관리합니다. " +"여기에는 연결된 주문이 완료 상태일 때 자산을 다운로드할 수 있는 URL을 생성하는 메서드가 포함되어 있습니다." #: engine/core/models.py:1961 msgid "download" @@ -2660,12 +2628,10 @@ msgstr "안녕하세요 %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"주문해 주셔서 감사합니다 #%(order.pk)s! 주문하신 상품이 입고되었음을 알려드립" -"니다. 주문 세부 정보는 아래와 같습니다:" +"주문해 주셔서 감사합니다 #%(order.pk)s! 주문하신 상품이 입고되었음을 알려드립니다. 주문 세부 정보는 아래와 같습니다:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2688,8 +2654,7 @@ msgstr "총 가격" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "" -"궁금한 점이 있으면 언제든지 %(config.EMAIL_HOST_USER)s로 지원팀에 문의하세요." +msgstr "궁금한 점이 있으면 언제든지 %(config.EMAIL_HOST_USER)s로 지원팀에 문의하세요." #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2717,9 +2682,7 @@ msgstr "안녕하세요 %(user_first_name)s," msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" -msgstr "" -"주문이 성공적으로 처리되었습니다 №%(order_uuid)s! 주문 세부 정보는 아래와 같" -"습니다:" +msgstr "주문이 성공적으로 처리되었습니다 №%(order_uuid)s! 주문 세부 정보는 아래와 같습니다:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2772,12 +2735,9 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" -msgstr "" -"주문해 주셔서 감사합니다! 구매를 확인하게 되어 기쁩니다. 주문 세부 정보는 아" -"래와 같습니다:" +msgstr "주문해 주셔서 감사합니다! 구매를 확인하게 되어 기쁩니다. 주문 세부 정보는 아래와 같습니다:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2843,117 +2803,107 @@ msgstr "NOMINATIM_URL 파라미터를 설정해야 합니다!" #: engine/core/validators.py:16 #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" -msgstr "" -"이미지 크기는 w{max_width} x h{max_height} 픽셀을 초과하지 않아야 합니다!" +msgstr "이미지 크기는 w{max_width} x h{max_height} 픽셀을 초과하지 않아야 합니다!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"사이트맵 색인에 대한 요청을 처리하고 XML 응답을 반환합니다. 응답에 XML에 적합" -"한 콘텐츠 유형 헤더가 포함되어 있는지 확인합니다." +"사이트맵 색인에 대한 요청을 처리하고 XML 응답을 반환합니다. 응답에 XML에 적합한 콘텐츠 유형 헤더가 포함되어 있는지 확인합니다." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"사이트맵에 대한 상세 보기 응답을 처리합니다. 이 함수는 요청을 처리하고 적절" -"한 사이트맵 상세 보기 응답을 가져온 다음 XML의 Content-Type 헤더를 설정합니" -"다." +"사이트맵에 대한 상세 보기 응답을 처리합니다. 이 함수는 요청을 처리하고 적절한 사이트맵 상세 보기 응답을 가져온 다음 XML의 " +"Content-Type 헤더를 설정합니다." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "지원되는 언어 목록과 해당 정보를 반환합니다." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "웹사이트의 매개변수를 JSON 객체로 반환합니다." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." -msgstr "" -"지정된 키와 시간 초과로 캐시 데이터를 읽고 설정하는 등의 캐시 작업을 처리합니" -"다." +msgstr "지정된 키와 시간 초과로 캐시 데이터를 읽고 설정하는 등의 캐시 작업을 처리합니다." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "'문의하기' 양식 제출을 처리합니다." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "들어오는 POST 요청의 URL 처리 및 유효성 검사 요청을 처리합니다." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "글로벌 검색 쿼리를 처리합니다." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "등록하지 않고 비즈니스로 구매하는 로직을 처리합니다." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "주문과 관련된 디지털 자산의 다운로드를 처리합니다.\n" -"이 함수는 프로젝트의 저장소 디렉토리에 있는 디지털 자산 파일을 제공하려고 시" -"도합니다. 파일을 찾을 수 없으면 HTTP 404 오류가 발생하여 리소스를 사용할 수 " -"없음을 나타냅니다." +"이 함수는 프로젝트의 저장소 디렉토리에 있는 디지털 자산 파일을 제공하려고 시도합니다. 파일을 찾을 수 없으면 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "주문_제품_UUID는 필수입니다." -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "주문 제품이 존재하지 않습니다." + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "디지털 자산은 한 번만 다운로드할 수 있습니다." -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "디지털 자산을 다운로드하기 전에 주문을 결제해야 합니다." -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "주문 제품에 제품이 없습니다." -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "파비콘을 찾을 수 없습니다." -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "웹사이트의 파비콘 요청을 처리합니다.\n" -"이 함수는 프로젝트의 정적 디렉토리에 있는 파비콘 파일을 제공하려고 시도합니" -"다. 파비콘 파일을 찾을 수 없는 경우 HTTP 404 오류가 발생하여 리소스를 사용할 " -"수 없음을 나타냅니다." - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"요청을 관리자 색인 페이지로 리디렉션합니다. 이 함수는 들어오는 HTTP 요청을 처" -"리하여 Django 관리자 인터페이스 인덱스 페이지로 리디렉션합니다. HTTP 리디렉션" -"을 처리하기 위해 Django의 `redirect` 함수를 사용합니다." +"이 함수는 프로젝트의 정적 디렉토리에 있는 파비콘 파일을 제공하려고 시도합니다. 파비콘 파일을 찾을 수 없는 경우 HTTP 404 오류가 발생하여 리소스를 사용할 수 없음을 나타냅니다." #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"요청을 관리자 색인 페이지로 리디렉션합니다. 이 함수는 들어오는 HTTP 요청을 처리하여 Django 관리자 인터페이스 인덱스 페이지로 " +"리디렉션합니다. HTTP 리디렉션을 처리하기 위해 Django의 `redirect` 함수를 사용합니다." + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "현재 버전의 eVibes를 반환합니다." @@ -2965,22 +2915,21 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Evibes 관련 작업을 관리하기 위한 뷰셋을 정의합니다. EvibesViewSet 클래스는 " -"ModelViewSet에서 상속되며 Evibes 엔티티에 대한 액션 및 연산을 처리하는 기능" -"을 제공합니다. 여기에는 현재 작업을 기반으로 하는 동적 직렬화기 클래스, 사용" -"자 지정 가능한 권한 및 렌더링 형식에 대한 지원이 포함됩니다." +"Evibes 관련 작업을 관리하기 위한 뷰셋을 정의합니다. EvibesViewSet 클래스는 ModelViewSet에서 상속되며 " +"Evibes 엔티티에 대한 액션 및 연산을 처리하는 기능을 제공합니다. 여기에는 현재 작업을 기반으로 하는 동적 직렬화기 클래스, 사용자" +" 지정 가능한 권한 및 렌더링 형식에 대한 지원이 포함됩니다." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"속성 그룹 객체를 관리하기 위한 뷰셋을 나타냅니다. 데이터의 필터링, 직렬화, 검" -"색 등 AttributeGroup과 관련된 작업을 처리합니다. 이 클래스는 애플리케이션의 " -"API 계층의 일부이며 AttributeGroup 데이터에 대한 요청 및 응답을 처리하는 표준" -"화된 방법을 제공합니다." +"속성 그룹 객체를 관리하기 위한 뷰셋을 나타냅니다. 데이터의 필터링, 직렬화, 검색 등 AttributeGroup과 관련된 작업을 " +"처리합니다. 이 클래스는 애플리케이션의 API 계층의 일부이며 AttributeGroup 데이터에 대한 요청 및 응답을 처리하는 표준화된" +" 방법을 제공합니다." #: engine/core/viewsets.py:176 msgid "" @@ -2991,24 +2940,21 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"애플리케이션 내에서 속성 개체와 관련된 작업을 처리합니다. 속성 데이터와 상호 " -"작용할 수 있는 API 엔드포인트 세트를 제공합니다. 이 클래스는 속성 개체의 쿼" -"리, 필터링 및 직렬화를 관리하여 특정 필드별로 필터링하거나 요청에 따라 단순화" -"된 정보와 상세한 정보를 검색하는 등 반환되는 데이터를 동적으로 제어할 수 있도" -"록 합니다." +"애플리케이션 내에서 속성 개체와 관련된 작업을 처리합니다. 속성 데이터와 상호 작용할 수 있는 API 엔드포인트 세트를 제공합니다. 이 " +"클래스는 속성 개체의 쿼리, 필터링 및 직렬화를 관리하여 특정 필드별로 필터링하거나 요청에 따라 단순화된 정보와 상세한 정보를 검색하는 " +"등 반환되는 데이터를 동적으로 제어할 수 있도록 합니다." #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"속성값 객체를 관리하기 위한 뷰셋입니다. 이 뷰셋은 AttributeValue 객체를 나" -"열, 검색, 생성, 업데이트 및 삭제하기 위한 기능을 제공합니다. 이 뷰셋은 장고 " -"REST 프레임워크의 뷰셋 메커니즘과 통합되며 다양한 작업에 적절한 직렬화기를 사" -"용합니다. 필터링 기능은 DjangoFilterBackend를 통해 제공됩니다." +"속성값 객체를 관리하기 위한 뷰셋입니다. 이 뷰셋은 AttributeValue 객체를 나열, 검색, 생성, 업데이트 및 삭제하기 위한 " +"기능을 제공합니다. 이 뷰셋은 장고 REST 프레임워크의 뷰셋 메커니즘과 통합되며 다양한 작업에 적절한 직렬화기를 사용합니다. 필터링 " +"기능은 DjangoFilterBackend를 통해 제공됩니다." #: engine/core/viewsets.py:214 msgid "" @@ -3018,10 +2964,9 @@ msgid "" "The viewset also enforces permissions to ensure that only authorized users " "can access specific data." msgstr "" -"카테고리 관련 작업에 대한 보기를 관리합니다. CategoryViewSet 클래스는 시스템" -"에서 카테고리 모델과 관련된 작업을 처리하는 역할을 담당합니다. 카테고리 데이" -"터 검색, 필터링 및 직렬화를 지원합니다. 또한 이 뷰 집합은 권한이 부여된 사용" -"자만 특정 데이터에 액세스할 수 있도록 권한을 적용합니다." +"카테고리 관련 작업에 대한 보기를 관리합니다. CategoryViewSet 클래스는 시스템에서 카테고리 모델과 관련된 작업을 처리하는 " +"역할을 담당합니다. 카테고리 데이터 검색, 필터링 및 직렬화를 지원합니다. 또한 이 뷰 집합은 권한이 부여된 사용자만 특정 데이터에 " +"액세스할 수 있도록 권한을 적용합니다." #: engine/core/viewsets.py:326 msgid "" @@ -3030,9 +2975,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"브랜드 인스턴스를 관리하기 위한 뷰셋을 나타냅니다. 이 클래스는 브랜드 객체를 " -"쿼리, 필터링 및 직렬화하기 위한 기능을 제공합니다. 이 클래스는 장고의 뷰셋 프" -"레임워크를 사용하여 브랜드 객체에 대한 API 엔드포인트의 구현을 간소화합니다." +"브랜드 인스턴스를 관리하기 위한 뷰셋을 나타냅니다. 이 클래스는 브랜드 객체를 쿼리, 필터링 및 직렬화하기 위한 기능을 제공합니다. 이 " +"클래스는 장고의 뷰셋 프레임워크를 사용하여 브랜드 객체에 대한 API 엔드포인트의 구현을 간소화합니다." #: engine/core/viewsets.py:438 msgid "" @@ -3044,11 +2988,10 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"시스템에서 `Product` 모델과 관련된 작업을 관리합니다. 이 클래스는 필터링, 직" -"렬화 및 특정 인스턴스에 대한 작업을 포함하여 제품을 관리하기 위한 뷰셋을 제공" -"합니다. 이 클래스는 공통 기능을 사용하기 위해 `EvibesViewSet`에서 확장되며 " -"RESTful API 작업을 위해 Django REST 프레임워크와 통합됩니다. 제품 세부 정보 " -"검색, 권한 적용, 제품의 관련 피드백에 액세스하는 메서드가 포함되어 있습니다." +"시스템에서 `Product` 모델과 관련된 작업을 관리합니다. 이 클래스는 필터링, 직렬화 및 특정 인스턴스에 대한 작업을 포함하여 " +"제품을 관리하기 위한 뷰셋을 제공합니다. 이 클래스는 공통 기능을 사용하기 위해 `EvibesViewSet`에서 확장되며 RESTful " +"API 작업을 위해 Django REST 프레임워크와 통합됩니다. 제품 세부 정보 검색, 권한 적용, 제품의 관련 피드백에 액세스하는 " +"메서드가 포함되어 있습니다." #: engine/core/viewsets.py:568 msgid "" @@ -3058,56 +3001,50 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"벤더 객체를 관리하기 위한 뷰셋을 나타냅니다. 이 뷰셋을 통해 벤더 데이터를 가" -"져오고, 필터링하고, 직렬화할 수 있습니다. 다양한 작업을 처리하는 데 사용되는 " -"쿼리 집합, 필터 구성 및 직렬화기 클래스를 정의합니다. 이 클래스의 목적은 " -"Django REST 프레임워크를 통해 공급업체 관련 리소스에 대한 간소화된 액세스를 " -"제공하는 것입니다." +"벤더 객체를 관리하기 위한 뷰셋을 나타냅니다. 이 뷰셋을 통해 벤더 데이터를 가져오고, 필터링하고, 직렬화할 수 있습니다. 다양한 작업을" +" 처리하는 데 사용되는 쿼리 집합, 필터 구성 및 직렬화기 클래스를 정의합니다. 이 클래스의 목적은 Django REST 프레임워크를 " +"통해 공급업체 관련 리소스에 대한 간소화된 액세스를 제공하는 것입니다." #: engine/core/viewsets.py:588 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"피드백 개체를 처리하는 뷰 집합의 표현입니다. 이 클래스는 세부 정보 나열, 필터" -"링 및 검색을 포함하여 피드백 개체에 관련된 작업을 관리합니다. 이 뷰 세트의 목" -"적은 다양한 작업에 대해 서로 다른 직렬화기를 제공하고 접근 가능한 피드백 객체" -"에 대한 권한 기반 처리를 구현하는 것입니다. 이 클래스는 기본 `EvibesViewSet`" -"을 확장하고 데이터 쿼리를 위해 Django의 필터링 시스템을 사용합니다." +"피드백 개체를 처리하는 뷰 집합의 표현입니다. 이 클래스는 세부 정보 나열, 필터링 및 검색을 포함하여 피드백 개체에 관련된 작업을 " +"관리합니다. 이 뷰 세트의 목적은 다양한 작업에 대해 서로 다른 직렬화기를 제공하고 접근 가능한 피드백 객체에 대한 권한 기반 처리를 " +"구현하는 것입니다. 이 클래스는 기본 `EvibesViewSet`을 확장하고 데이터 쿼리를 위해 Django의 필터링 시스템을 " +"사용합니다." #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"주문 및 관련 작업을 관리하기 위한 뷰셋입니다. 이 클래스는 주문 객체를 검색, " -"수정, 관리하는 기능을 제공합니다. 여기에는 제품 추가 또는 제거, 등록 및 미등" -"록 사용자에 대한 구매 수행, 현재 인증된 사용자의 보류 중인 주문 검색 등 주문 " -"작업을 처리하기 위한 다양한 엔드포인트가 포함되어 있습니다. 뷰셋은 수행되는 " -"특정 작업에 따라 여러 직렬화기를 사용하며 주문 데이터와 상호 작용하는 동안 그" -"에 따라 권한을 적용합니다." +"주문 및 관련 작업을 관리하기 위한 뷰셋입니다. 이 클래스는 주문 객체를 검색, 수정, 관리하는 기능을 제공합니다. 여기에는 제품 추가 " +"또는 제거, 등록 및 미등록 사용자에 대한 구매 수행, 현재 인증된 사용자의 보류 중인 주문 검색 등 주문 작업을 처리하기 위한 다양한 " +"엔드포인트가 포함되어 있습니다. 뷰셋은 수행되는 특정 작업에 따라 여러 직렬화기를 사용하며 주문 데이터와 상호 작용하는 동안 그에 따라 " +"권한을 적용합니다." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"주문 제품 엔티티를 관리하기 위한 뷰셋을 제공합니다. 이 뷰셋을 사용하면 주문 " -"제품 모델에 특정한 CRUD 작업 및 사용자 지정 작업을 수행할 수 있습니다. 여기에" -"는 요청된 작업을 기반으로 필터링, 권한 확인 및 직렬화기 전환이 포함됩니다. 또" -"한 주문 제품 인스턴스에 대한 피드백 처리를 위한 세부 작업도 제공합니다." +"주문 제품 엔티티를 관리하기 위한 뷰셋을 제공합니다. 이 뷰셋을 사용하면 주문 제품 모델에 특정한 CRUD 작업 및 사용자 지정 작업을 " +"수행할 수 있습니다. 여기에는 요청된 작업을 기반으로 필터링, 권한 확인 및 직렬화기 전환이 포함됩니다. 또한 주문 제품 인스턴스에 대한" +" 피드백 처리를 위한 세부 작업도 제공합니다." #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " @@ -3117,8 +3054,7 @@ msgstr "애플리케이션에서 제품 이미지와 관련된 작업을 관리 msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." -msgstr "" -"다양한 API 작업을 통해 프로모션 코드 인스턴스의 검색 및 처리를 관리합니다." +msgstr "다양한 API 작업을 통해 프로모션 코드 인스턴스의 검색 및 처리를 관리합니다." #: engine/core/viewsets.py:902 msgid "Represents a view set for managing promotions. " @@ -3132,18 +3068,15 @@ msgstr "시스템에서 주식 데이터와 관련된 작업을 처리합니다. msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"위시리스트 작업을 관리하기 위한 뷰셋입니다. 위시리스트뷰셋은 사용자의 위시리" -"스트와 상호 작용할 수 있는 엔드포인트를 제공하여 위시리스트 내의 제품을 검" -"색, 수정 및 사용자 지정할 수 있도록 합니다. 이 뷰셋은 위시리스트 제품에 대한 " -"추가, 제거 및 대량 작업과 같은 기능을 용이하게 합니다. 명시적인 권한이 부여되" -"지 않는 한 사용자가 자신의 위시리스트만 관리할 수 있도록 권한 검사가 통합되" -"어 있습니다." +"위시리스트 작업을 관리하기 위한 뷰셋입니다. 위시리스트뷰셋은 사용자의 위시리스트와 상호 작용할 수 있는 엔드포인트를 제공하여 위시리스트 " +"내의 제품을 검색, 수정 및 사용자 지정할 수 있도록 합니다. 이 뷰셋은 위시리스트 제품에 대한 추가, 제거 및 대량 작업과 같은 기능을" +" 용이하게 합니다. 명시적인 권한이 부여되지 않는 한 사용자가 자신의 위시리스트만 관리할 수 있도록 권한 검사가 통합되어 있습니다." #: engine/core/viewsets.py:1044 msgid "" @@ -3153,10 +3086,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"이 클래스는 `주소` 객체를 관리하기 위한 뷰셋 기능을 제공합니다. 주소 뷰셋 클" -"래스는 주소 엔티티와 관련된 CRUD 작업, 필터링 및 사용자 정의 작업을 가능하게 " -"합니다. 여기에는 다양한 HTTP 메서드, 직렬화기 재정의, 요청 컨텍스트에 따른 권" -"한 처리를 위한 특수 동작이 포함되어 있습니다." +"이 클래스는 `주소` 객체를 관리하기 위한 뷰셋 기능을 제공합니다. 주소 뷰셋 클래스는 주소 엔티티와 관련된 CRUD 작업, 필터링 및 " +"사용자 정의 작업을 가능하게 합니다. 여기에는 다양한 HTTP 메서드, 직렬화기 재정의, 요청 컨텍스트에 따른 권한 처리를 위한 특수 " +"동작이 포함되어 있습니다." #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3171,8 +3103,6 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"애플리케이션 내에서 제품 태그와 관련된 작업을 처리합니다. 이 클래스는 제품 태" -"그 객체를 검색, 필터링 및 직렬화하기 위한 기능을 제공합니다. 지정된 필터 백엔" -"드를 사용하여 특정 속성에 대한 유연한 필터링을 지원하며 수행 중인 작업에 따" -"라 다양한 직렬화기를 동적으로 사용합니다." - +"애플리케이션 내에서 제품 태그와 관련된 작업을 처리합니다. 이 클래스는 제품 태그 객체를 검색, 필터링 및 직렬화하기 위한 기능을 " +"제공합니다. 지정된 필터 백엔드를 사용하여 특정 속성에 대한 유연한 필터링을 지원하며 수행 중인 작업에 따라 다양한 직렬화기를 동적으로 " +"사용합니다." diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.mo b/engine/core/locale/nl_NL/LC_MESSAGES/django.mo index 2442160c463876e36b5f45e843ebc7796477f63a..352ac906cac8c2104464c83e9e4d318e79a29e73 100644 GIT binary patch delta 14996 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 diff --git a/engine/core/locale/nl_NL/LC_MESSAGES/django.po b/engine/core/locale/nl_NL/LC_MESSAGES/django.po index e8ccafb4..4f5733dd 100644 --- a/engine/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/core/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "Is actief" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Als false is ingesteld, kan dit object niet worden gezien door gebruikers " "zonder de benodigde toestemming" @@ -154,7 +155,8 @@ msgstr "Geleverd" msgid "canceled" msgstr "Geannuleerd" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Mislukt" @@ -182,45 +184,62 @@ msgstr "Momental" msgid "successful" msgstr "Succesvol" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI schema in geselecteerd formaat met geselecteerde taal" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3 schema voor deze API. Formaat kan worden geselecteerd via " +"inhoudsonderhandeling. Taal kan worden geselecteerd met zowel Accept-" +"Language als query parameter." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Alleen een sleutel gebruiken om toegestane gegevens uit de cache te lezen.\n" -"Sleutel, gegevens en time-out met verificatie toepassen om gegevens naar de " -"cache te schrijven." +"Sleutel, gegevens en time-out met verificatie toepassen om gegevens naar de cache te schrijven." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Verkrijg de blootstelbare parameters van de applicatie" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Stuur een bericht naar het ondersteuningsteam" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Vraag een CORSed URL op. Alleen https toegestaan." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Zoeken tussen producten, categorieën en merken" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Eindpunt voor globaal zoeken om in alle tabellen van het project te zoeken" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Een bestelling kopen als bedrijf" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -228,222 +247,231 @@ msgstr "" "Koop een bestelling in als een bedrijf, met behulp van de meegeleverde " "`producten` met `product_uuid` en `attributen`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "een digitaal goed downloaden van een gekochte digitale bestelling" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Alle attribuutgroepen weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Een enkele groep kenmerken ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Een attribuutgroep maken" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Een attribuutgroep verwijderen" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Een bestaande attribuutgroep herschrijven en niet-wijzigbare attributen " "opslaan" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Een attribuut maken" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Een attribuut verwijderen" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 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" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Alle attribuutwaarden weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Een waarde voor een enkel kenmerk ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Een attribuutwaarde maken" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Een attribuutwaarde verwijderen" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Een bestaande attribuutwaarde herschrijven waarbij niet-wijzigbare " "attributen worden opgeslagen" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Categorie UUID of slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Een categorie maken" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Een categorie verwijderen" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 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" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta momentopname" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "" -"Geeft als resultaat een momentopname van de SEO-metagegevens van de categorie" +"Geeft als resultaat een momentopname van de SEO-metagegevens van de " +"categorie" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Alle categorieën weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" -"Voor niet-personeelsleden worden alleen hun eigen bestellingen geretourneerd." +"Voor niet-personeelsleden worden alleen hun eigen bestellingen " +"geretourneerd." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Hoofdlettergevoelig substring zoeken in human_readable_id, order_products." -"product.name en order_products.product.partnumber" +"Hoofdlettergevoelig substring zoeken in human_readable_id, " +"order_products.product.name en order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filter orders met buy_time >= deze ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filter orders met buy_time <= deze ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filter op exacte volgorde UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filter op exacte, door mensen leesbare bestel-ID" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filter op e-mail van gebruiker (hoofdlettergevoelige exacte overeenkomst)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filter op UUID van gebruiker" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filter op bestelstatus (hoofdlettergevoelige substringmatch)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Sorteer op een van: uuid, human_readable_id, user_email, gebruiker, status, " -"gemaakt, gewijzigd, buy_time, willekeurig. Voorvoegsel met '-' voor aflopend " -"(bijv. '-buy_time')." +"gemaakt, gewijzigd, buy_time, willekeurig. Voorvoegsel met '-' voor aflopend" +" (bijv. '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Een enkele categorie ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Order UUID of menselijk leesbare id" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Een attribuut maken" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Een attribuut verwijderen" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Een bestaande categorie herschrijven en niet-wijzigbare items opslaan" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 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" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Aankoopprijs bij bestelling" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -453,20 +481,29 @@ msgstr "" "wordt de aankoop afgerond met het saldo van de gebruiker; als " "`force_payment` wordt gebruikt, wordt een transactie gestart." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "huidige lopende order van een gebruiker ophalen" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "haalt een huidige lopende order op van een geverifieerde gebruiker" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "een bestelling kopen zonder een account aan te maken" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "" -"Rondt de aankoop van de bestelling af voor een niet-geregistreerde gebruiker." +"Rondt de aankoop van de bestelling af voor een niet-geregistreerde " +"gebruiker." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Een product aan de bestelling toevoegen" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -474,13 +511,13 @@ msgstr "" "Voegt een product toe aan een bestelling met de opgegeven `product_uuid` en " "`attributen`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -488,11 +525,11 @@ msgstr "" "Voegt een lijst met producten toe aan een bestelling met behulp van de " "opgegeven `product_uuid` en `attributen`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Een product uit de bestelling verwijderen" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -500,11 +537,11 @@ msgstr "" "Verwijdert een product uit een bestelling met behulp van de opgegeven " "`product_uuid` en `attributen`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Verwijder een product uit de bestelling, hoeveelheden tellen niet mee" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -512,458 +549,452 @@ msgstr "" "Verwijdert een lijst met producten uit een bestelling met behulp van de " "opgegeven `product_uuid` en `attributen`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Voor niet-personeelsleden worden alleen hun eigen verlanglijstjes " "geretourneerd." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Een attribuut maken" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Een attribuut verwijderen" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 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" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "huidige wachtlijst van een gebruiker ophalen" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"haalt een huidig afwachtend verlanglijstje op van een geauthenticeerde " +"gebruiker" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Een product aan de bestelling toevoegen" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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`." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Een product uit het verlanglijstje verwijderen" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Veel producten toevoegen aan het verlanglijstje" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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`." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Een product uit de bestelling verwijderen" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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`." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter op een of meer attribuutnaam-/waardeparen. \n" "- **Syntaxis**: `attr_name=methode-waarde[;attr2=methode2-waarde2]...`\n" -"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt " -"doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld " -"als string. \n" -"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe " -"waarde. \n" +"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld als string. \n" +"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe waarde. \n" "Voorbeelden: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(exacte) UUID van product" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met " -"`-` voor aflopend. \n" -"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, " -"willekeurig" +"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met `-` voor aflopend. \n" +"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, willekeurig" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Een product maken" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Een bestaand product herschrijven met behoud van niet-wijzigbare velden" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Een product verwijderen" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "somt alle toegestane feedbacks voor een product op" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "" "Geeft als resultaat een momentopname van de SEO-metagegevens van het product" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Vermeld alle adressen" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Een enkel adres ophalen" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Een nieuw adres maken" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Een adres verwijderen" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Een heel adres bijwerken" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Een adres gedeeltelijk bijwerken" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Automatische adresinvoer" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "beperkt de hoeveelheid resultaten, 1 < limiet < 10, standaard: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "alle feedbacks weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "een enkele feedback ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "een feedback creëren" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "een feedback verwijderen" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "een bestaande feedback herschrijven waarbij niet-wijzigbare gegevens worden " "opgeslagen" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "alle order-productrelaties weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" -msgstr "een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)" +msgstr "" +"een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "een nieuwe bestelling-product relatie maken" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "een bestaande order-productrelatie vervangen" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "een bestaande order-productrelatie gedeeltelijk bijwerken" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "een order-productrelatie verwijderen" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "feedback toevoegen of verwijderen op een order-productrelatie" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Alle merken weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Een enkel merk ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Merk UUID of slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Een merk creëren" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Een merk verwijderen" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Een bestaand merk herschrijven door niet-editables op te slaan" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot voor merk" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Alle leveranciers weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Een enkele leverancier ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Een leverancier maken" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Een verkoper verwijderen" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" "Een bestaande verkoper herschrijven en niet-wijzigbare gegevens opslaan" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Alle productafbeeldingen weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Een enkele productafbeelding ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Een productafbeelding maken" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Een productafbeelding verwijderen" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Een bestaande productafbeelding herschrijven waarbij niet-wijzigbare " "gegevens worden opgeslagen" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Alle promotiecodes weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Een enkele promotiecode ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Een promotiecode maken" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Een promotiecode verwijderen" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Een bestaande promocode herschrijven die niet-wijzigbaar is" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Alle promoties weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Een enkele promotie ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Maak een promotie" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Een promotie verwijderen" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" "Een bestaande promotie herschrijven waarbij niet-wijzigbare gegevens worden " "opgeslagen" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Alle aandelen weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Een enkele voorraad ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Een voorraadrecord maken" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Een voorraadrecord verwijderen" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Een bestaand voorraadrecord herschrijven waarbij niet-wijzigbare gegevens " "worden opgeslagen" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " "velden op te slaan" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Alle producttags weergeven (eenvoudige weergave)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Een enkele producttag ophalen (gedetailleerde weergave)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Een producttag maken" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Een producttag verwijderen" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Een bestaande producttag herschrijven en niet-wijzigbare tags opslaan" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaande categorie door niet-wijzigbare " @@ -1118,7 +1149,7 @@ msgstr "Gecachte gegevens" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-gegevens van de opgevraagde URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan" @@ -1202,8 +1233,8 @@ msgstr "Een bestelling kopen" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Stuur de attributen als de string opgemaakt als attr1=waarde1,attr2=waarde2" @@ -1281,7 +1312,8 @@ msgstr "" "filteren." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimale en maximale prijzen voor producten in deze categorie, indien " "beschikbaar." @@ -1557,8 +1589,8 @@ msgstr "" "Vertegenwoordigt een groep attributen, die hiërarchisch kan zijn. Deze " "klasse wordt gebruikt om groepen van attributen te beheren en te " "organiseren. Een attribuutgroep kan een bovenliggende groep hebben, die een " -"hiërarchische structuur vormt. Dit kan nuttig zijn voor het categoriseren en " -"effectiever beheren van attributen in een complex systeem." +"hiërarchische structuur vormt. Dit kan nuttig zijn voor het categoriseren en" +" effectiever beheren van attributen in een complex systeem." #: engine/core/models.py:91 msgid "parent of this group" @@ -1586,8 +1618,8 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"Vertegenwoordigt een verkopersentiteit die informatie over externe verkopers " -"en hun interactievereisten kan opslaan. De klasse Vendor wordt gebruikt om " +"Vertegenwoordigt een verkopersentiteit die informatie over externe verkopers" +" en hun interactievereisten kan opslaan. De klasse Vendor wordt gebruikt om " "informatie over een externe verkoper te definiëren en te beheren. Het slaat " "de naam van de verkoper op, authenticatiegegevens die nodig zijn voor " "communicatie en het opmaakpercentage dat wordt toegepast op producten die " @@ -1648,8 +1680,8 @@ msgid "" msgstr "" "Vertegenwoordigt een producttag die wordt gebruikt om producten te " "classificeren of te identificeren. De klasse ProductTag is ontworpen om " -"producten uniek te identificeren en te classificeren door een combinatie van " -"een interne tagidentifier en een gebruiksvriendelijke weergavenaam. Het " +"producten uniek te identificeren en te classificeren door een combinatie van" +" een interne tagidentifier en een gebruiksvriendelijke weergavenaam. Het " "ondersteunt bewerkingen die geëxporteerd worden door mixins en biedt " "aanpassing van metadata voor administratieve doeleinden." @@ -1707,12 +1739,12 @@ msgstr "" "Vertegenwoordigt een categorie-entiteit voor het organiseren en groeperen " "van gerelateerde items in een hiërarchische structuur. Categorieën kunnen " "hiërarchische relaties hebben met andere categorieën, waarbij ouder-kind " -"relaties worden ondersteund. De klasse bevat velden voor metadata en visuele " -"weergave, die dienen als basis voor categorie-gerelateerde functies. Deze " -"klasse wordt meestal gebruikt om productcategorieën of andere gelijksoortige " -"groeperingen binnen een applicatie te definiëren en te beheren, waarbij " -"gebruikers of beheerders de naam, beschrijving en hiërarchie van categorieën " -"kunnen specificeren en attributen zoals afbeeldingen, tags of prioriteit " +"relaties worden ondersteund. De klasse bevat velden voor metadata en visuele" +" weergave, die dienen als basis voor categorie-gerelateerde functies. Deze " +"klasse wordt meestal gebruikt om productcategorieën of andere gelijksoortige" +" groeperingen binnen een applicatie te definiëren en te beheren, waarbij " +"gebruikers of beheerders de naam, beschrijving en hiërarchie van categorieën" +" kunnen specificeren en attributen zoals afbeeldingen, tags of prioriteit " "kunnen toekennen." #: engine/core/models.py:274 @@ -1764,7 +1796,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Vertegenwoordigt een merkobject in het systeem. Deze klasse behandelt " "informatie en attributen met betrekking tot een merk, inclusief de naam, " @@ -1814,8 +1847,8 @@ msgstr "Categorieën" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1968,13 +2001,13 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Vertegenwoordigt een attribuut in het systeem. Deze klasse wordt gebruikt om " -"attributen te definiëren en te beheren. Dit zijn aanpasbare stukjes data die " -"kunnen worden geassocieerd met andere entiteiten. Attributen hebben " +"Vertegenwoordigt een attribuut in het systeem. Deze klasse wordt gebruikt om" +" attributen te definiëren en te beheren. Dit zijn aanpasbare stukjes data " +"die kunnen worden geassocieerd met andere entiteiten. Attributen hebben " "geassocieerde categorieën, groepen, waardetypes en namen. Het model " "ondersteunt meerdere typen waarden, waaronder string, integer, float, " "boolean, array en object. Dit maakt dynamische en flexibele " @@ -2041,12 +2074,12 @@ msgstr "Attribuut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Vertegenwoordigt een specifieke waarde voor een kenmerk dat is gekoppeld aan " -"een product. Het koppelt het 'kenmerk' aan een unieke 'waarde', wat een " +"Vertegenwoordigt een specifieke waarde voor een kenmerk dat is gekoppeld aan" +" een product. Het koppelt het 'kenmerk' aan een unieke 'waarde', wat een " "betere organisatie en dynamische weergave van productkenmerken mogelijk " "maakt." @@ -2065,8 +2098,8 @@ msgstr "De specifieke waarde voor dit kenmerk" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2115,8 +2148,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Vertegenwoordigt een promotiecampagne voor producten met een korting. Deze " "klasse wordt gebruikt om promotiecampagnes te definiëren en beheren die een " @@ -2193,8 +2226,8 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Vertegenwoordigt een documentair record gekoppeld aan een product. Deze " "klasse wordt gebruikt om informatie op te slaan over documentaires met " @@ -2218,20 +2251,20 @@ msgstr "Onopgelost" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Vertegenwoordigt een adresentiteit met locatiegegevens en associaties met " "een gebruiker. Biedt functionaliteit voor het opslaan van geografische en " "adresgegevens, evenals integratie met geocoderingsservices. Deze klasse is " -"ontworpen om gedetailleerde adresgegevens op te slaan, inclusief componenten " -"als straat, stad, regio, land en geolocatie (lengtegraad en breedtegraad). " +"ontworpen om gedetailleerde adresgegevens op te slaan, inclusief componenten" +" als straat, stad, regio, land en geolocatie (lengtegraad en breedtegraad). " "Het ondersteunt integratie met geocodering API's, waardoor de opslag van " "ruwe API antwoorden voor verdere verwerking of inspectie mogelijk wordt. De " "klasse maakt het ook mogelijk om een adres met een gebruiker te associëren, " @@ -2353,7 +2386,8 @@ msgstr "Begin geldigheidsduur" #: engine/core/models.py:1120 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet gebruikt" +"Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet " +"gebruikt" #: engine/core/models.py:1121 msgid "usage timestamp" @@ -2380,8 +2414,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage), " -"maar niet beide of geen van beide." +"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," +" maar niet beide of geen van beide." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2396,8 +2430,8 @@ msgstr "Ongeldig kortingstype voor promocode {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2498,8 +2532,8 @@ msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" #: engine/core/models.py:1428 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." #: engine/core/models.py:1416 #, python-brace-format @@ -2534,8 +2568,8 @@ msgstr "Je kunt geen lege bestelling kopen!" #: engine/core/models.py:1522 msgid "you cannot buy an order without a user" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." #: engine/core/models.py:1536 msgid "a user without a balance cannot buy with balance" @@ -2558,7 +2592,8 @@ msgstr "" msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -"Ongeldige betalingsmethode: {payment_method} van {available_payment_methods}!" +"Ongeldige betalingsmethode: {payment_method} van " +"{available_payment_methods}!" #: engine/core/models.py:1699 msgid "" @@ -2569,8 +2604,8 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Beheert gebruikersfeedback voor producten. Deze klasse is ontworpen om " -"feedback van gebruikers over specifieke producten die ze hebben gekocht vast " -"te leggen en op te slaan. De klasse bevat attributen voor het opslaan van " +"feedback van gebruikers over specifieke producten die ze hebben gekocht vast" +" te leggen en op te slaan. De klasse bevat attributen voor het opslaan van " "opmerkingen van gebruikers, een verwijzing naar het betreffende product in " "de bestelling en een door de gebruiker toegekende beoordeling. De klasse " "gebruikt databasevelden om feedbackgegevens effectief te modelleren en te " @@ -2585,7 +2620,8 @@ msgid "feedback comments" msgstr "Reacties" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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" @@ -2622,8 +2658,8 @@ msgstr "" "het producttegoed of het toevoegen van feedback. Dit model biedt ook " "methoden en eigenschappen die bedrijfslogica ondersteunen, zoals het " "berekenen van de totaalprijs of het genereren van een download-URL voor " -"digitale producten. Het model integreert met de modellen Order en Product en " -"slaat een verwijzing ernaar op." +"digitale producten. Het model integreert met de modellen Order en Product en" +" slaat een verwijzing ernaar op." #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2693,8 +2729,8 @@ msgstr "Verkeerde actie opgegeven voor feedback: {action}!" #: engine/core/models.py:1888 msgid "you cannot feedback an order which is not received" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." #: engine/core/models.py:1894 msgid "name" @@ -2733,9 +2769,9 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Vertegenwoordigt de downloadfunctionaliteit voor digitale activa gekoppeld " "aan bestellingen. De DigitalAssetDownload klasse biedt de mogelijkheid om " @@ -2801,8 +2837,7 @@ msgstr "Hallo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Hartelijk dank voor uw bestelling #%(order.pk)s! We zijn blij om u te " @@ -2917,8 +2952,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Bedankt voor uw bestelling! We zijn blij om uw aankoop te bevestigen. " @@ -2955,7 +2989,8 @@ msgstr "Zowel gegevens als time-out zijn vereist" #: engine/core/utils/caching.py:46 msgid "invalid timeout value, it must be between 0 and 216000 seconds" -msgstr "Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen" +msgstr "" +"Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen" #: engine/core/utils/emailing.py:27 #, python-brace-format @@ -2992,7 +3027,7 @@ msgstr "" "Afbeeldingsafmetingen mogen niet groter zijn dan w{max_width} x " "h{max_height} pixels" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -3001,7 +3036,7 @@ msgstr "" "terug. Het zorgt ervoor dat het antwoord de juiste inhoudstype header voor " "XML bevat." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -3011,96 +3046,89 @@ msgstr "" "verwerkt het verzoek, haalt het juiste sitemap detail antwoord op en stelt " "de Content-Type header in voor XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Geeft een lijst met ondersteunde talen en de bijbehorende informatie." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Retourneert de parameters van de website als een JSON-object." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met " -"een opgegeven sleutel en time-out." +"Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met" +" een opgegeven sleutel en time-out." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Handelt `contact met ons` formulier inzendingen af." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende " -"POST-verzoeken." +"Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende" +" POST-verzoeken." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Handelt globale zoekopdrachten af." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Behandelt de logica van kopen als bedrijf zonder registratie." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een " -"bestelling.\n" -"Deze functie probeert het digitale activabestand te serveren dat zich in de " -"opslagmap van het project bevindt. Als het bestand niet wordt gevonden, " -"wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet " -"beschikbaar is." +"Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een bestelling.\n" +"Deze functie probeert het digitale activabestand te serveren dat zich in de opslagmap van het project bevindt. Als het bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid is vereist" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "bestelproduct bestaat niet" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "U kunt het digitale goed maar één keer downloaden" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "" "de bestelling moet worden betaald voordat het digitale actief kan worden " "gedownload" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Het bestelde product heeft geen product" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon niet gevonden" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Handelt verzoeken af voor de favicon van een website.\n" -"Deze functie probeert het favicon-bestand te serveren dat zich in de " -"statische map van het project bevindt. Als het favicon-bestand niet wordt " -"gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron " -"niet beschikbaar is." +"Deze functie probeert het favicon-bestand te serveren dat zich in de statische map van het project bevindt. Als het favicon-bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Stuurt het verzoek door naar de admin-indexpagina. De functie handelt " @@ -3108,7 +3136,7 @@ msgstr "" "Django admin-interface. Het gebruikt Django's `redirect` functie voor het " "afhandelen van de HTTP-omleiding." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Geeft als resultaat de huidige versie van eVibes." @@ -3120,18 +3148,19 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Definieert een viewset voor het beheren van Evibes-gerelateerde handelingen. " -"De klasse EvibesViewSet erft van ModelViewSet en biedt functionaliteit voor " -"het afhandelen van acties en bewerkingen op Evibes-entiteiten. Het omvat " +"Definieert een viewset voor het beheren van Evibes-gerelateerde handelingen." +" De klasse EvibesViewSet erft van ModelViewSet en biedt functionaliteit voor" +" het afhandelen van acties en bewerkingen op Evibes-entiteiten. Het omvat " "ondersteuning voor dynamische serializer klassen op basis van de huidige " "actie, aanpasbare machtigingen, en rendering formaten." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Vertegenwoordigt een viewset voor het beheren van AttributeGroup objecten. " "Verwerkt bewerkingen met betrekking tot AttributeGroup, inclusief filteren, " @@ -3152,20 +3181,21 @@ msgstr "" "applicatie. Biedt een set API-eindpunten voor interactie met " "Attribuutgegevens. Deze klasse beheert het opvragen, filteren en seriëren " "van Attribuutobjecten, waardoor dynamische controle over de geretourneerde " -"gegevens mogelijk is, zoals filteren op specifieke velden of het ophalen van " -"gedetailleerde versus vereenvoudigde informatie afhankelijk van het verzoek." +"gegevens mogelijk is, zoals filteren op specifieke velden of het ophalen van" +" gedetailleerde versus vereenvoudigde informatie afhankelijk van het " +"verzoek." #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Een viewset voor het beheren van AttributeValue-objecten. Deze viewset biedt " -"functionaliteit voor het opsommen, ophalen, maken, bijwerken en verwijderen " -"van AttributeValue objecten. Het integreert met Django REST Framework's " +"Een viewset voor het beheren van AttributeValue-objecten. Deze viewset biedt" +" functionaliteit voor het opsommen, ophalen, maken, bijwerken en verwijderen" +" van AttributeValue objecten. Het integreert met Django REST Framework's " "viewset mechanismen en gebruikt passende serializers voor verschillende " "acties. Filtermogelijkheden worden geleverd door de DjangoFilterBackend." @@ -3181,8 +3211,8 @@ msgstr "" "CategoryViewSet is verantwoordelijk voor het afhandelen van bewerkingen met " "betrekking tot het categoriemodel in het systeem. Het ondersteunt het " "ophalen, filteren en seriëren van categoriegegevens. De viewset dwingt ook " -"rechten af om ervoor te zorgen dat alleen bevoegde gebruikers toegang hebben " -"tot specifieke gegevens." +"rechten af om ervoor te zorgen dat alleen bevoegde gebruikers toegang hebben" +" tot specifieke gegevens." #: engine/core/viewsets.py:326 msgid "" @@ -3226,8 +3256,8 @@ msgstr "" "Vertegenwoordigt een viewset voor het beheren van Vendor-objecten. Met deze " "viewset kunnen gegevens van een verkoper worden opgehaald, gefilterd en " "geserialiseerd. Het definieert de queryset, filter configuraties, en " -"serializer klassen gebruikt om verschillende acties af te handelen. Het doel " -"van deze klasse is om gestroomlijnde toegang te bieden tot Vendor-" +"serializer klassen gebruikt om verschillende acties af te handelen. Het doel" +" van deze klasse is om gestroomlijnde toegang te bieden tot Vendor-" "gerelateerde bronnen via het Django REST framework." #: engine/core/viewsets.py:588 @@ -3235,8 +3265,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Weergave van een weergaveset die Feedback-objecten afhandelt. Deze klasse " @@ -3252,9 +3282,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet voor het beheren van orders en gerelateerde operaties. Deze klasse " @@ -3271,15 +3301,15 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"Biedt een viewset voor het beheren van OrderProduct-entiteiten. Deze viewset " -"maakt CRUD-bewerkingen en aangepaste acties mogelijk die specifiek zijn voor " -"het OrderProduct-model. Het omvat filteren, toestemmingscontroles en " -"serializer-omschakeling op basis van de gevraagde actie. Bovendien biedt het " -"een gedetailleerde actie voor het afhandelen van feedback op OrderProduct " +"Biedt een viewset voor het beheren van OrderProduct-entiteiten. Deze viewset" +" maakt CRUD-bewerkingen en aangepaste acties mogelijk die specifiek zijn " +"voor het OrderProduct-model. Het omvat filteren, toestemmingscontroles en " +"serializer-omschakeling op basis van de gevraagde actie. Bovendien biedt het" +" een gedetailleerde actie voor het afhandelen van feedback op OrderProduct " "instanties" #: engine/core/viewsets.py:867 @@ -3292,8 +3322,8 @@ msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." msgstr "" -"Beheert het ophalen en afhandelen van PromoCode-instanties via verschillende " -"API-acties." +"Beheert het ophalen en afhandelen van PromoCode-instanties via verschillende" +" API-acties." #: engine/core/viewsets.py:902 msgid "Represents a view set for managing promotions. " @@ -3308,8 +3338,8 @@ msgstr "" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3331,9 +3361,9 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Deze klasse biedt viewsetfunctionaliteit voor het beheren van `Adres`-" -"objecten. De klasse AddressViewSet maakt CRUD-bewerkingen, filteren en " -"aangepaste acties met betrekking tot adresentiteiten mogelijk. Het bevat " +"Deze klasse biedt viewsetfunctionaliteit voor het beheren van " +"`Adres`-objecten. De klasse AddressViewSet maakt CRUD-bewerkingen, filteren " +"en aangepaste acties met betrekking tot adresentiteiten mogelijk. Het bevat " "gespecialiseerde gedragingen voor verschillende HTTP methoden, serializer " "omzeilingen en toestemmingsafhandeling gebaseerd op de verzoekcontext." @@ -3351,9 +3381,8 @@ msgid "" "serializers based on the action being performed." msgstr "" "Behandelt bewerkingen met betrekking tot Product Tags binnen de applicatie. " -"Deze klasse biedt functionaliteit voor het ophalen, filteren en serialiseren " -"van Product Tag objecten. Het ondersteunt flexibel filteren op specifieke " +"Deze klasse biedt functionaliteit voor het ophalen, filteren en serialiseren" +" van Product Tag objecten. Het ondersteunt flexibel filteren op specifieke " "attributen met behulp van de gespecificeerde filter backend en gebruikt " "dynamisch verschillende serializers op basis van de actie die wordt " "uitgevoerd." - diff --git a/engine/core/locale/no_NO/LC_MESSAGES/django.mo b/engine/core/locale/no_NO/LC_MESSAGES/django.mo index 5433ad040c44a275d1355a96fc66abf85f9514ac..f40af0d37961604e58c45a18fc9f62cedaa7110f 100644 GIT binary patch delta 14959 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -28,7 +28,8 @@ msgstr "Er aktiv" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Hvis dette objektet er satt til false, kan det ikke ses av brukere uten " "nødvendig tillatelse" @@ -155,7 +156,8 @@ msgstr "Leveres" msgid "canceled" msgstr "Avlyst" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Mislyktes" @@ -183,44 +185,60 @@ msgstr "Momental" msgid "successful" msgstr "Vellykket" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI-skjema i valgt format med valgt språk" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3-skjema for dette API-et. Format kan velges via innholdsforhandling." +" Språk kan velges både med Accept-Language og spørringsparameteren." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Bruk bare en nøkkel for å lese tillatte data fra hurtigbufferen.\n" -"Bruk nøkkel, data og tidsavbrudd med autentisering for å skrive data til " -"hurtigbufferen." +"Bruk nøkkel, data og tidsavbrudd med autentisering for å skrive data til hurtigbufferen." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Få en liste over språk som støttes" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Hent applikasjonens eksponerbare parametere" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Send en melding til supportteamet" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Be om en CORSed URL. Bare https er tillatt." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Søk mellom produkter, kategorier og merker" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Globalt søkeendepunkt for å søke på tvers av prosjektets tabeller" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Kjøp en ordre som en bedrift" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -228,219 +246,226 @@ msgstr "" "Kjøp en ordre som en bedrift, ved hjelp av de angitte `produktene` med " "`product_uuid` og `attributter`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "laste ned en digital ressurs fra en kjøpt digital bestilling" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Liste over alle attributtgrupper (enkel visning)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Hent en enkelt attributtgruppe (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Opprett en attributtgruppe" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Slett en attributtgruppe" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Skriv om en eksisterende attributtgruppe for å lagre ikke-redigerbare " "attributter" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende attributtgruppe for å lagre ikke-" "redigerbare felt" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Liste over alle attributter (enkel visning)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Hent et enkelt attributt (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Opprett et attributt" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Slett et attributt" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Skriv om et eksisterende attributt for å lagre ikke-redigerbare attributter" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Skriv om noen av feltene i et eksisterende attributt for å lagre ikke-" "redigerbare felt" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Liste over alle attributtverdier (enkel visning)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Hent en enkelt attributtverdi (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Opprett en attributtverdi" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Slett en attributtverdi" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Omskrive en eksisterende attributtverdi for å lagre ikke-redigerbare " "attributter" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende attributtverdi og lagre ikke-" "redigerbare felt" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Hent en enkelt kategori (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Kategori UUID eller slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Opprett en kategori" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Slett en kategori" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Skriv om en eksisterende kategori som lagrer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta-øyeblikksbilde" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Returnerer et øyeblikksbilde av kategoriens SEO-metadata" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Liste over alle kategorier (enkel visning)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "For ikke-ansatte brukere returneres bare deres egne bestillinger." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Søk etter store og små bokstaver på tvers av human_readable_id, " "order_products.product.name og order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrer ordrer med buy_time >= denne ISO 8601-datoen" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrer bestillinger med buy_time <= denne ISO 8601-datoen" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrer etter nøyaktig ordre UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrer etter nøyaktig bestillings-ID som kan leses av mennesker" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "Filtrer etter brukerens e-post (store og små bokstaver er ufølsomme)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrer etter brukerens UUID" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filtrer etter ordrestatus (skiller mellom store og små bokstaver)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Bestill etter en av: uuid, human_readable_id, user_email, user, status, " -"created, modified, buy_time, random. Prefiks med '-' for synkende rekkefølge " -"(f.eks. '-buy_time')." +"created, modified, buy_time, random. Prefiks med '-' for synkende rekkefølge" +" (f.eks. '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Hent en enkelt kategori (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Bestill UUID eller menneskelig lesbar id" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Opprett et attributt" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Fungerer ikke for brukere som ikke er ansatte." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Slett et attributt" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Skriv om en eksisterende kategori som lagrer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Innkjøpspris på bestillingstidspunktet" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -450,32 +475,40 @@ msgstr "" "hjelp av brukerens saldo; hvis `force_payment` brukes, iverksettes en " "transaksjon." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "hente en brukers nåværende ventende ordre" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "henter en gjeldende ventende ordre fra en autentisert bruker" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "kjøpe en ordre uten å opprette konto" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "fullfører bestillingen for en ikke-registrert bruker." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Legg til et produkt i bestillingen" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Legger til et produkt i en bestilling ved hjelp av de angitte `product_uuid` " -"og `attributtene`." +"Legger til et produkt i en bestilling ved hjelp av de angitte `product_uuid`" +" og `attributtene`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" "Legg til en liste over produkter som skal bestilles, antall vil ikke telle" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -483,11 +516,11 @@ msgstr "" "Legger til en liste med produkter i en bestilling ved hjelp av de angitte " "`product_uuid` og `attributtene`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Fjern et produkt fra bestillingen" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -495,11 +528,11 @@ msgstr "" "Fjerner et produkt fra en bestilling ved hjelp av de angitte `product_uuid` " "og `attributtene`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Fjern et produkt fra bestillingen, antall vil ikke telle med" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -507,449 +540,442 @@ msgstr "" "Fjerner en liste med produkter fra en bestilling ved hjelp av de angitte " "`product_uuid` og `attributtene`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Liste over alle attributter (enkel visning)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "For brukere som ikke er ansatte, returneres bare deres egne ønskelister." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Hent et enkelt attributt (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Opprett et attributt" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Fungerer ikke for brukere som ikke er ansatte." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Slett et attributt" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Skriv om et eksisterende attributt for å lagre ikke-redigerbare attributter" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Skriv om noen av feltene i et eksisterende attributt for å lagre ikke-" "redigerbare felt" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "hente en brukers nåværende ventende ønskeliste" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "henter en aktuell ventende ønskeliste for en autentisert bruker" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Legg til et produkt i bestillingen" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Legger til et produkt på en ønskeliste ved hjelp av den angitte " "`product_uuid`." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Fjern et produkt fra ønskelisten" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -"Fjerner et produkt fra en ønskeliste ved hjelp av den angitte `product_uuid`." +"Fjerner et produkt fra en ønskeliste ved hjelp av den angitte " +"`product_uuid`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Legg til mange produkter på ønskelisten" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Legger til mange produkter på en ønskeliste ved hjelp av de angitte " "`product_uuids`." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Fjern et produkt fra bestillingen" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Fjerner mange produkter fra en ønskeliste ved hjelp av de angitte " "`product_uuids`." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrer etter ett eller flere attributtnavn/verdipar. \n" "- **Syntaks**: `attr_name=metode-verdi[;attr2=metode2-verdi2]...`.\n" -"- **Metoder** (standardinnstilling er `icontains` hvis utelatt): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- **Vertyping av verdi**: JSON forsøkes først (slik at du kan sende lister/" -"dikter), `true`/`false` for booleans, heltall, floats; ellers behandlet som " -"streng. \n" -"- **Base64**: prefiks med `b64-` for URL-sikker base64-koding av " -"råverdien. \n" +"- **Metoder** (standardinnstilling er `icontains` hvis utelatt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Vertyping av verdi**: JSON forsøkes først (slik at du kan sende lister/dikter), `true`/`false` for booleans, heltall, floats; ellers behandlet som streng. \n" +"- **Base64**: prefiks med `b64-` for URL-sikker base64-koding av råverdien. \n" "Eksempler: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-beskrivelse=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(nøyaktig) Produkt UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Kommaseparert liste over felt som skal sorteres etter. Prefiks med `-` for " -"synkende sortering. \n" +"Kommaseparert liste over felt som skal sorteres etter. Prefiks med `-` for synkende sortering. \n" "**Tillatt:** uuid, vurdering, navn, slug, opprettet, endret, pris, tilfeldig" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Opprett et produkt" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Skriv om et eksisterende produkt, og behold ikke-redigerbare felt" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Oppdater noen av feltene i et eksisterende produkt, men behold feltene som " "ikke kan redigeres" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Slett et produkt" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "viser alle tillatte tilbakemeldinger for et produkt" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Returnerer et øyeblikksbilde av produktets SEO-metadata" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Liste over alle adresser" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Hent en enkelt adresse" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Opprett en ny adresse" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Slett en adresse" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Oppdater en hel adresse" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Delvis oppdatering av en adresse" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autofullfør adresseinndata" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Spørringsstreng for rådata, vennligst legg til data fra geo-IP-sluttpunkt" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begrenser resultatmengden, 1 < grense < 10, standard: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "liste opp alle tilbakemeldinger (enkel visning)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "hente en enkelt tilbakemelding (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "skape en tilbakemelding" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "slette en tilbakemelding" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "omskrive en eksisterende tilbakemelding som lagrer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "omskrive noen felter i en eksisterende tilbakemelding og lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "liste opp alle ordre-produkt-relasjoner (enkel visning)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "hente en enkelt ordre-produkt-relasjon (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "opprette en ny ordre-produkt-relasjon" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "erstatte en eksisterende ordre-produkt-relasjon" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "delvis oppdatere en eksisterende ordre-produkt-relasjon" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "slette en ordre-produkt-relasjon" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "legge til eller fjerne tilbakemeldinger på en ordre-produkt-relasjon" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Liste over alle merker (enkel visning)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Hent ett enkelt merke (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Merkevare UUID eller slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Skap en merkevare" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Slett et merke" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" "Skriv om en eksisterende merkevare som sparer ikke-redigerbare produkter" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta-øyeblikksbilde for merkevare" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Liste over alle leverandører (enkel visning)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Hent en enkelt leverandør (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Opprett en leverandør" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Slett en leverandør" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Skriv om en eksisterende leverandør som lagrer ikke-redigerbare filer" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Liste over alle produktbilder (enkel visning)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Hent et enkelt produktbilde (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Lag et produktbilde" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Slett et produktbilde" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Skriv om et eksisterende produktbilde og lagre ikke-redigerbare elementer" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Liste over alle kampanjekoder (enkel visning)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Hent en enkelt kampanjekode (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Opprett en kampanjekode" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Slett en kampanjekode" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Skriv om en eksisterende kampanjekode for å lagre ikke-redigerbare koder" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Liste over alle kampanjer (enkel visning)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Hent en enkelt kampanje (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Opprett en kampanje" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Slett en kampanje" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" "Skriv om en eksisterende kampanje for å lagre ikke-redigerbare elementer" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Liste over alle aksjer (enkel visning)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Hent en enkelt aksje (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Opprett en lagerpost" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Slett en lagerpost" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "Skriv om en eksisterende lagerpost og lagre ikke-redigerbare varer" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" "redigerbare" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Liste over alle produkttagger (enkel visning)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Hent en enkelt produkttagg (detaljert visning)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Opprett en produkttagg" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Slett en produkttagg" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Skriv om en eksisterende produkttagg for å lagre ikke-redigerbare produkter" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Skriv om noen av feltene i en eksisterende kategori for å lagre ikke-" @@ -1104,7 +1130,7 @@ msgstr "Bufret data" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-data fra den forespurte URL-en" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Bare nettadresser som begynner med http(s):// er tillatt" @@ -1189,8 +1215,8 @@ msgstr "Kjøp en ordre" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Send attributtene som en streng formatert som attr1=verdi1,attr2=verdi2" @@ -1264,10 +1290,12 @@ msgstr "Påslag i prosent" #: engine/core/graphene/object_types.py:200 msgid "which attributes and values can be used for filtering this category." msgstr "" -"Hvilke attributter og verdier som kan brukes til å filtrere denne kategorien." +"Hvilke attributter og verdier som kan brukes til å filtrere denne " +"kategorien." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimums- og maksimumspriser for produkter i denne kategorien, hvis " "tilgjengelig." @@ -1479,8 +1507,7 @@ msgstr "Telefonnummer til selskapet" #: engine/core/graphene/object_types.py:681 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"\"e-post fra\", noen ganger må den brukes i stedet for vertsbrukerverdien" +msgstr "\"e-post fra\", noen ganger må den brukes i stedet for vertsbrukerverdien" #: engine/core/graphene/object_types.py:682 msgid "email host user" @@ -1539,11 +1566,11 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"Representerer en gruppe attributter, som kan være hierarkiske. Denne klassen " -"brukes til å administrere og organisere attributtgrupper. En attributtgruppe " -"kan ha en overordnet gruppe som danner en hierarkisk struktur. Dette kan " -"være nyttig for å kategorisere og administrere attributter på en mer " -"effektiv måte i et komplekst system." +"Representerer en gruppe attributter, som kan være hierarkiske. Denne klassen" +" brukes til å administrere og organisere attributtgrupper. En " +"attributtgruppe kan ha en overordnet gruppe som danner en hierarkisk " +"struktur. Dette kan være nyttig for å kategorisere og administrere " +"attributter på en mer effektiv måte i et komplekst system." #: engine/core/models.py:91 msgid "parent of this group" @@ -1572,8 +1599,8 @@ msgid "" "use in systems that interact with third-party vendors." msgstr "" "Representerer en leverandørenhet som kan lagre informasjon om eksterne " -"leverandører og deres interaksjonskrav. Vendor-klassen brukes til å definere " -"og administrere informasjon knyttet til en ekstern leverandør. Den lagrer " +"leverandører og deres interaksjonskrav. Vendor-klassen brukes til å definere" +" og administrere informasjon knyttet til en ekstern leverandør. Den lagrer " "leverandørens navn, autentiseringsdetaljer som kreves for kommunikasjon, og " "prosentmarkeringen som brukes på produkter som hentes fra leverandøren. " "Denne modellen inneholder også ytterligere metadata og begrensninger, noe " @@ -1631,8 +1658,8 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "Representerer en produkttagg som brukes til å klassifisere eller " -"identifisere produkter. ProductTag-klassen er utformet for å identifisere og " -"klassifisere produkter på en unik måte ved hjelp av en kombinasjon av en " +"identifisere produkter. ProductTag-klassen er utformet for å identifisere og" +" klassifisere produkter på en unik måte ved hjelp av en kombinasjon av en " "intern tagg-identifikator og et brukervennlig visningsnavn. Den støtter " "operasjoner som eksporteres gjennom mixins, og gir metadatatilpasning for " "administrative formål." @@ -1665,8 +1692,8 @@ msgid "" msgstr "" "Representerer en kategorikode som brukes for produkter. Denne klassen " "modellerer en kategorikode som kan brukes til å knytte til og klassifisere " -"produkter. Den inneholder attributter for en intern tagg-identifikator og et " -"brukervennlig visningsnavn." +"produkter. Den inneholder attributter for en intern tagg-identifikator og et" +" brukervennlig visningsnavn." #: engine/core/models.py:254 msgid "category tag" @@ -1689,8 +1716,8 @@ msgid "" "priority." msgstr "" "Representerer en kategorienhet for å organisere og gruppere relaterte " -"elementer i en hierarkisk struktur. Kategorier kan ha hierarkiske relasjoner " -"med andre kategorier, noe som støtter foreldre-barn-relasjoner. Klassen " +"elementer i en hierarkisk struktur. Kategorier kan ha hierarkiske relasjoner" +" med andre kategorier, noe som støtter foreldre-barn-relasjoner. Klassen " "inneholder felt for metadata og visuell representasjon, som danner " "grunnlaget for kategorirelaterte funksjoner. Denne klassen brukes vanligvis " "til å definere og administrere produktkategorier eller andre lignende " @@ -1747,7 +1774,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Representerer et merkevareobjekt i systemet. Denne klassen håndterer " "informasjon og attributter knyttet til et merke, inkludert navn, logoer, " @@ -1797,16 +1825,16 @@ msgstr "Kategorier" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"Representerer lagerbeholdningen til et produkt som administreres i systemet. " -"Denne klassen gir informasjon om forholdet mellom leverandører, produkter og " -"deres lagerinformasjon, samt lagerrelaterte egenskaper som pris, " +"Representerer lagerbeholdningen til et produkt som administreres i systemet." +" Denne klassen gir informasjon om forholdet mellom leverandører, produkter " +"og deres lagerinformasjon, samt lagerrelaterte egenskaper som pris, " "innkjøpspris, antall, SKU og digitale eiendeler. Den er en del av " "lagerstyringssystemet for å muliggjøre sporing og evaluering av produkter " "som er tilgjengelige fra ulike leverandører." @@ -1950,8 +1978,8 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Representerer et attributt i systemet. Denne klassen brukes til å definere " @@ -2012,7 +2040,8 @@ msgstr "er filtrerbar" #: engine/core/models.py:759 msgid "designates whether this attribute can be used for filtering or not" msgstr "" -"Hvilke attributter og verdier som kan brukes til å filtrere denne kategorien." +"Hvilke attributter og verdier som kan brukes til å filtrere denne " +"kategorien." #: engine/core/models.py:771 engine/core/models.py:789 #: engine/core/templates/digital_order_delivered_email.html:134 @@ -2021,9 +2050,9 @@ msgstr "Attributt" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representerer en spesifikk verdi for et attributt som er knyttet til et " "produkt. Den knytter \"attributtet\" til en unik \"verdi\", noe som gir " @@ -2044,14 +2073,14 @@ msgstr "Den spesifikke verdien for dette attributtet" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Representerer et produktbilde som er knyttet til et produkt i systemet. " -"Denne klassen er utviklet for å administrere bilder for produkter, inkludert " -"funksjonalitet for å laste opp bildefiler, knytte dem til spesifikke " +"Denne klassen er utviklet for å administrere bilder for produkter, inkludert" +" funksjonalitet for å laste opp bildefiler, knytte dem til spesifikke " "produkter og bestemme visningsrekkefølgen. Den inneholder også en " "tilgjengelighetsfunksjon med alternativ tekst for bildene." @@ -2093,11 +2122,11 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Representerer en kampanje for produkter med rabatt. Denne klassen brukes til " -"å definere og administrere kampanjekampanjer som tilbyr en prosentbasert " +"Representerer en kampanje for produkter med rabatt. Denne klassen brukes til" +" å definere og administrere kampanjekampanjer som tilbyr en prosentbasert " "rabatt for produkter. Klassen inneholder attributter for å angi " "rabattsatsen, gi detaljer om kampanjen og knytte den til de aktuelle " "produktene. Den integreres med produktkatalogen for å finne de berørte " @@ -2142,8 +2171,8 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"Representerer en brukers ønskeliste for lagring og administrasjon av ønskede " -"produkter. Klassen tilbyr funksjonalitet for å administrere en samling " +"Representerer en brukers ønskeliste for lagring og administrasjon av ønskede" +" produkter. Klassen tilbyr funksjonalitet for å administrere en samling " "produkter, og støtter operasjoner som å legge til og fjerne produkter, samt " "operasjoner for å legge til og fjerne flere produkter samtidig." @@ -2169,11 +2198,11 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Representerer en dokumentarpost knyttet til et produkt. Denne klassen brukes " -"til å lagre informasjon om dokumentarer knyttet til bestemte produkter, " +"Representerer en dokumentarpost knyttet til et produkt. Denne klassen brukes" +" til å lagre informasjon om dokumentarer knyttet til bestemte produkter, " "inkludert filopplastinger og metadata for disse. Den inneholder metoder og " "egenskaper for å håndtere filtype og lagringsbane for dokumentarfilene. Den " "utvider funksjonaliteten fra spesifikke mixins og tilbyr flere tilpassede " @@ -2193,23 +2222,23 @@ msgstr "Uavklart" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representerer en adresseenhet som inneholder stedsdetaljer og assosiasjoner " "til en bruker. Tilbyr funksjonalitet for lagring av geografiske data og " "adressedata, samt integrering med geokodingstjenester. Denne klassen er " -"utformet for å lagre detaljert adresseinformasjon, inkludert komponenter som " -"gate, by, region, land og geolokalisering (lengde- og breddegrad). Den " +"utformet for å lagre detaljert adresseinformasjon, inkludert komponenter som" +" gate, by, region, land og geolokalisering (lengde- og breddegrad). Den " "støtter integrasjon med API-er for geokoding, og gjør det mulig å lagre rå " -"API-svar for videre behandling eller inspeksjon. Klassen gjør det også mulig " -"å knytte en adresse til en bruker, noe som gjør det enklere å tilpasse " +"API-svar for videre behandling eller inspeksjon. Klassen gjør det også mulig" +" å knytte en adresse til en bruker, noe som gjør det enklere å tilpasse " "datahåndteringen." #: engine/core/models.py:1029 @@ -2275,11 +2304,11 @@ msgid "" msgstr "" "Representerer en kampanjekode som kan brukes til rabatter, og styrer dens " "gyldighet, rabattype og anvendelse. PromoCode-klassen lagrer informasjon om " -"en kampanjekode, inkludert dens unike identifikator, rabattegenskaper (beløp " -"eller prosent), gyldighetsperiode, tilknyttet bruker (hvis noen) og status " +"en kampanjekode, inkludert dens unike identifikator, rabattegenskaper (beløp" +" eller prosent), gyldighetsperiode, tilknyttet bruker (hvis noen) og status " "for bruken av den. Den inneholder funksjonalitet for å validere og bruke " -"kampanjekoden på en bestilling, samtidig som den sikrer at begrensningene er " -"oppfylt." +"kampanjekoden på en bestilling, samtidig som den sikrer at begrensningene er" +" oppfylt." #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2324,7 +2353,8 @@ msgstr "Start gyldighetstid" #: engine/core/models.py:1120 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Tidsstempel for når kampanjekoden ble brukt, tomt hvis den ikke er brukt ennå" +"Tidsstempel for når kampanjekoden ble brukt, tomt hvis den ikke er brukt " +"ennå" #: engine/core/models.py:1121 msgid "usage timestamp" @@ -2367,18 +2397,18 @@ msgstr "Ugyldig rabattype for kampanjekode {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Representerer en bestilling som er lagt inn av en bruker. Denne klassen " "modellerer en bestilling i applikasjonen, inkludert ulike attributter som " -"fakturerings- og leveringsinformasjon, status, tilknyttet bruker, varsler og " -"relaterte operasjoner. Bestillinger kan ha tilknyttede produkter, kampanjer " -"kan brukes, adresser kan angis, og frakt- eller faktureringsopplysninger kan " -"oppdateres. På samme måte støtter funksjonaliteten håndtering av produktene " -"i bestillingens livssyklus." +"fakturerings- og leveringsinformasjon, status, tilknyttet bruker, varsler og" +" relaterte operasjoner. Bestillinger kan ha tilknyttede produkter, kampanjer" +" kan brukes, adresser kan angis, og frakt- eller faktureringsopplysninger " +"kan oppdateres. På samme måte støtter funksjonaliteten håndtering av " +"produktene i bestillingens livssyklus." #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2537,8 +2567,8 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"Håndterer brukernes tilbakemeldinger på produkter. Denne klassen er utformet " -"for å fange opp og lagre tilbakemeldinger fra brukerne om spesifikke " +"Håndterer brukernes tilbakemeldinger på produkter. Denne klassen er utformet" +" for å fange opp og lagre tilbakemeldinger fra brukerne om spesifikke " "produkter de har kjøpt. Den inneholder attributter for å lagre " "brukerkommentarer, en referanse til det relaterte produktet i bestillingen " "og en brukertildelt vurdering. Klassen bruker databasefelt for å modellere " @@ -2553,10 +2583,11 @@ msgid "feedback comments" msgstr "Tilbakemeldinger og kommentarer" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Refererer til det spesifikke produktet i en ordre som denne tilbakemeldingen " -"handler om" +"Refererer til det spesifikke produktet i en ordre som denne tilbakemeldingen" +" handler om" #: engine/core/models.py:1720 msgid "related order product" @@ -2700,12 +2731,12 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"Representerer nedlastingsfunksjonaliteten for digitale ressurser knyttet til " -"bestillinger. DigitalAssetDownload-klassen gir mulighet til å administrere " +"Representerer nedlastingsfunksjonaliteten for digitale ressurser knyttet til" +" bestillinger. DigitalAssetDownload-klassen gir mulighet til å administrere " "og få tilgang til nedlastinger knyttet til bestillingsprodukter. Den " "inneholder informasjon om det tilknyttede bestillingsproduktet, antall " "nedlastinger og om ressursen er offentlig synlig. Den inneholder en metode " @@ -2768,13 +2799,12 @@ msgstr "Hallo %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Takk for din bestilling #%(order.pk)s! Vi er glade for å informere deg om at " -"vi har tatt bestillingen din i arbeid. Nedenfor er detaljene i bestillingen " -"din:" +"Takk for din bestilling #%(order.pk)s! Vi er glade for å informere deg om at" +" vi har tatt bestillingen din i arbeid. Nedenfor er detaljene i bestillingen" +" din:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2884,8 +2914,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Takk for bestillingen din! Vi er glade for å kunne bekrefte kjøpet ditt. " @@ -2958,15 +2987,15 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Bildedimensjonene bør ikke overstige b{max_width} x h{max_height} piksler!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" -"Håndterer forespørselen om områdekartindeksen og returnerer et XML-svar. Den " -"sørger for at svaret inneholder riktig innholdstypeoverskrift for XML." +"Håndterer forespørselen om områdekartindeksen og returnerer et XML-svar. Den" +" sørger for at svaret inneholder riktig innholdstypeoverskrift for XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2976,17 +3005,17 @@ msgstr "" "behandler forespørselen, henter det aktuelle detaljsvaret for områdekartet " "og angir overskriften Content-Type for XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnerer en liste over språk som støttes, med tilhørende informasjon." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerer nettstedets parametere som et JSON-objekt." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2994,75 +3023,70 @@ msgstr "" "Håndterer cache-operasjoner som lesing og innstilling av cachedata med en " "spesifisert nøkkel og tidsavbrudd." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Håndterer innsendinger av `kontakt oss`-skjemaer." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"Håndterer forespørsler om behandling og validering av URL-er fra innkommende " -"POST-forespørsler." +"Håndterer forespørsler om behandling og validering av URL-er fra innkommende" +" POST-forespørsler." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Håndterer globale søk." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Håndterer logikken med å kjøpe som en bedrift uten registrering." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Håndterer nedlastingen av en digital ressurs som er knyttet til en " -"bestilling.\n" -"Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i " -"lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP " -"404-feil for å indikere at ressursen ikke er tilgjengelig." +"Håndterer nedlastingen av en digital ressurs som er knyttet til en bestilling.\n" +"Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid er påkrevd" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "ordreproduktet eksisterer ikke" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Du kan bare laste ned den digitale ressursen én gang" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "bestillingen må betales før nedlasting av den digitale ressursen" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Ordreproduktet har ikke et produkt" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon ble ikke funnet" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Håndterer forespørsler om faviconet til et nettsted.\n" -"Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske " -"katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP " -"404-feil for å indikere at ressursen ikke er tilgjengelig." +"Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Omdirigerer forespørselen til admin-indekssiden. Funksjonen håndterer " @@ -3070,7 +3094,7 @@ msgstr "" "administrasjonsgrensesnittet. Den bruker Djangos `redirect`-funksjon for å " "håndtere HTTP-omdirigeringen." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Returnerer gjeldende versjon av eVibes." @@ -3090,10 +3114,11 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representerer et visningssett for håndtering av AttributeGroup-objekter. " "Håndterer operasjoner knyttet til AttributeGroup, inkludert filtrering, " @@ -3110,20 +3135,20 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Håndterer operasjoner knyttet til Attribute-objekter i applikasjonen. Tilbyr " -"et sett med API-endepunkter for interaksjon med attributtdata. Denne klassen " -"håndterer spørring, filtrering og serialisering av Attribute-objekter, noe " -"som gir dynamisk kontroll over dataene som returneres, for eksempel " -"filtrering etter bestemte felt eller henting av detaljert versus forenklet " -"informasjon avhengig av forespørselen." +"Håndterer operasjoner knyttet til Attribute-objekter i applikasjonen. Tilbyr" +" et sett med API-endepunkter for interaksjon med attributtdata. Denne " +"klassen håndterer spørring, filtrering og serialisering av Attribute-" +"objekter, noe som gir dynamisk kontroll over dataene som returneres, for " +"eksempel filtrering etter bestemte felt eller henting av detaljert versus " +"forenklet informasjon avhengig av forespørselen." #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Et visningssett for administrasjon av AttributeValue-objekter. Dette " "visningssettet inneholder funksjonalitet for å liste opp, hente, opprette, " @@ -3172,8 +3197,8 @@ msgstr "" "filtrering, serialisering og operasjoner på spesifikke forekomster. Den " "utvides fra `EvibesViewSet` for å bruke felles funksjonalitet og integreres " "med Django REST-rammeverket for RESTful API-operasjoner. Inkluderer metoder " -"for å hente produktdetaljer, tildele tillatelser og få tilgang til relaterte " -"tilbakemeldinger om et produkt." +"for å hente produktdetaljer, tildele tillatelser og få tilgang til relaterte" +" tilbakemeldinger om et produkt." #: engine/core/viewsets.py:568 msgid "" @@ -3185,9 +3210,9 @@ msgid "" msgstr "" "Representerer et visningssett for håndtering av Vendor-objekter. Dette " "visningssettet gjør det mulig å hente, filtrere og serialisere Vendor-data. " -"Den definerer spørresettet, filterkonfigurasjonene og serialiseringsklassene " -"som brukes til å håndtere ulike handlinger. Formålet med denne klassen er å " -"gi strømlinjeformet tilgang til Vendor-relaterte ressurser gjennom Django " +"Den definerer spørresettet, filterkonfigurasjonene og serialiseringsklassene" +" som brukes til å håndtere ulike handlinger. Formålet med denne klassen er å" +" gi strømlinjeformet tilgang til Vendor-relaterte ressurser gjennom Django " "REST-rammeverket." #: engine/core/viewsets.py:588 @@ -3195,8 +3220,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representasjon av et visningssett som håndterer Feedback-objekter. Denne " @@ -3212,9 +3237,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet for håndtering av bestillinger og relaterte operasjoner. Denne " @@ -3223,22 +3248,22 @@ msgstr "" "ordreoperasjoner, for eksempel å legge til eller fjerne produkter, utføre " "kjøp for både registrerte og uregistrerte brukere og hente den aktuelle " "autentiserte brukerens ventende bestillinger. ViewSet bruker flere " -"serialisatorer basert på den spesifikke handlingen som utføres, og håndhever " -"tillatelser i samsvar med dette under samhandling med ordredata." +"serialisatorer basert på den spesifikke handlingen som utføres, og håndhever" +" tillatelser i samsvar med dette under samhandling med ordredata." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Tilbyr et visningssett for håndtering av OrderProduct-enheter. Dette " -"visningssettet muliggjør CRUD-operasjoner og egendefinerte handlinger som er " -"spesifikke for OrderProduct-modellen. Det inkluderer filtrering, kontroll av " -"tillatelser og bytte av serializer basert på den forespurte handlingen. I " -"tillegg inneholder det en detaljert handling for håndtering av " +"visningssettet muliggjør CRUD-operasjoner og egendefinerte handlinger som er" +" spesifikke for OrderProduct-modellen. Det inkluderer filtrering, kontroll " +"av tillatelser og bytte av serializer basert på den forespurte handlingen. I" +" tillegg inneholder det en detaljert handling for håndtering av " "tilbakemeldinger på OrderProduct-instanser" #: engine/core/viewsets.py:867 @@ -3250,8 +3275,8 @@ msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." msgstr "" -"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike API-" -"handlinger." +"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike " +"API-handlinger." #: engine/core/viewsets.py:902 msgid "Represents a view set for managing promotions. " @@ -3265,8 +3290,8 @@ msgstr "Håndterer operasjoner knyttet til lagerdata i systemet." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3276,8 +3301,8 @@ msgstr "" "gjør det mulig å hente, endre og tilpasse produkter i ønskelisten. Dette " "ViewSetet legger til rette for funksjonalitet som å legge til, fjerne og " "utføre massehandlinger for ønskelisteprodukter. Tillatelseskontroller er " -"integrert for å sikre at brukere bare kan administrere sine egne ønskelister " -"med mindre eksplisitte tillatelser er gitt." +"integrert for å sikre at brukere bare kan administrere sine egne ønskelister" +" med mindre eksplisitte tillatelser er gitt." #: engine/core/viewsets.py:1044 msgid "" @@ -3287,11 +3312,11 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"Denne klassen tilbyr visningssettfunksjonalitet for håndtering av `Address`-" -"objekter. AddressViewSet-klassen muliggjør CRUD-operasjoner, filtrering og " -"egendefinerte handlinger knyttet til adresseenheter. Den inkluderer " -"spesialisert atferd for ulike HTTP-metoder, overstyring av serializer og " -"håndtering av tillatelser basert på forespørselskonteksten." +"Denne klassen tilbyr visningssettfunksjonalitet for håndtering av " +"`Address`-objekter. AddressViewSet-klassen muliggjør CRUD-operasjoner, " +"filtrering og egendefinerte handlinger knyttet til adresseenheter. Den " +"inkluderer spesialisert atferd for ulike HTTP-metoder, overstyring av " +"serializer og håndtering av tillatelser basert på forespørselskonteksten." #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3311,4 +3336,3 @@ msgstr "" "Product Tag-objekter. Den støtter fleksibel filtrering på spesifikke " "attributter ved hjelp av den spesifiserte filterbackenden, og bruker " "dynamisk forskjellige serialisatorer basert på handlingen som utføres." - diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.mo b/engine/core/locale/pl_PL/LC_MESSAGES/django.mo index 66e95dad9bfdc364921f02588c7851d6f4fc0b6c..0e8c9d425091bf810f2c7eb91540987aa1c5db05 100644 GIT binary patch delta 15015 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 Dc}k8m delta 13828 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 Ps-6Nx_NO)Sj4u5@ud>@R diff --git a/engine/core/locale/pl_PL/LC_MESSAGES/django.po b/engine/core/locale/pl_PL/LC_MESSAGES/django.po index 8ffa6399..5f635f0f 100644 --- a/engine/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/core/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Jest aktywny" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Jeśli ustawione na false, obiekt ten nie może być widoczny dla użytkowników " "bez wymaganych uprawnień." @@ -156,7 +157,8 @@ msgstr "Dostarczone" msgid "canceled" msgstr "Anulowane" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Nie powiodło się" @@ -184,44 +186,61 @@ msgstr "Momental" msgid "successful" msgstr "Udany" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Schemat OpenAPI w wybranym formacie z wybranym językiem" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Schemat OpenApi3 dla tego interfejsu API. Format można wybrać poprzez " +"negocjację treści. Język można wybrać za pomocą Accept-Language i parametru " +"zapytania." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Pamięć podręczna we/wy" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Zastosuj tylko klucz, aby odczytać dozwolone dane z pamięci podręcznej.\n" -"Zastosuj klucz, dane i limit czasu z uwierzytelnianiem, aby zapisać dane w " -"pamięci podręcznej." +"Zastosuj klucz, dane i limit czasu z uwierzytelnianiem, aby zapisać dane w pamięci podręcznej." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Uzyskaj dostępne parametry aplikacji" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Wyślij wiadomość do zespołu wsparcia" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Żądanie adresu URL CORSed. Dozwolony jest tylko protokół https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Wyszukiwanie między produktami, kategoriami i markami" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Globalny punkt końcowy wyszukiwania do zapytań w tabelach projektu" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Zakup zamówienia jako firma" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -229,227 +248,235 @@ msgstr "" "Kup zamówienie jako firma, używając dostarczonych `products` z " "`product_uuid` i `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "pobranie zasobu cyfrowego z zakupionego zamówienia cyfrowego" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Lista wszystkich grup atrybutów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Pobieranie pojedynczej grupy atrybutów (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Tworzenie grupy atrybutów" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Usuwanie grupy atrybutów" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Przepisanie istniejącej grupy atrybutów z zachowaniem atrybutów " "nieedytowalnych" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Utwórz atrybut" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Usuwanie atrybutu" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 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" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Lista wszystkich wartości atrybutów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Pobieranie wartości pojedynczego atrybutu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Tworzenie wartości atrybutu" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Usuwanie wartości atrybutu" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Przepisanie istniejącej wartości atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Identyfikator UUID kategorii lub slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Utwórz kategorię" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Usuwanie kategorii" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Zwraca migawkę metadanych SEO kategorii." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Lista wszystkich kategorii (widok prosty)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 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." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Wyszukiwanie podciągów z uwzględnieniem wielkości liter w human_readable_id, " -"order_products.product.name i order_products.product.partnumber." +"Wyszukiwanie podciągów z uwzględnieniem wielkości liter w human_readable_id," +" order_products.product.name i order_products.product.partnumber." -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtruj zamówienia z buy_time >= ta data ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtruj zamówienia z buy_time <= ten ISO 8601 datetime" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtruj według dokładnego identyfikatora UUID zamówienia" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "" "Filtrowanie według dokładnego, czytelnego dla człowieka identyfikatora " "zamówienia" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrowanie według adresu e-mail użytkownika (dokładne dopasowanie z " "uwzględnieniem wielkości liter)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrowanie według identyfikatora UUID użytkownika" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -"Filtrowanie według statusu zamówienia (dopasowanie podciągu z uwzględnieniem " -"wielkości liter)" +"Filtrowanie według statusu zamówienia (dopasowanie podciągu z uwzględnieniem" +" wielkości liter)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Kolejność według jednego z: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Prefiks z \"-\" dla malejącego " "(np. \"-buy_time\")." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" -msgstr "Identyfikator UUID zamówienia lub identyfikator czytelny dla człowieka" +msgstr "" +"Identyfikator UUID zamówienia lub identyfikator czytelny dla człowieka" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Utwórz atrybut" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Usuwanie atrybutu" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Przepisz istniejącą kategorię, zapisując nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Cena zakupu w momencie zamówienia" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -459,19 +486,27 @@ msgstr "" "finalizowany przy użyciu salda użytkownika; Jeśli użyto `force_payment`, " "transakcja jest inicjowana." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "pobieranie bieżącego oczekującego zamówienia użytkownika" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "pobiera bieżące oczekujące zamówienie uwierzytelnionego użytkownika" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "zakup zamówienia bez tworzenia konta" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizuje zakup zamówienia dla niezarejestrowanego użytkownika." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Dodawanie produktu do zamówienia" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -479,11 +514,11 @@ msgstr "" "Dodaje produkt do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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." -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -491,11 +526,11 @@ msgstr "" "Dodaje listę produktów do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Usunięcie produktu z zamówienia" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -503,11 +538,11 @@ msgstr "" "Usuwa produkt z zamówienia przy użyciu podanego `product_uuid` i " "`attributes`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Usuń produkt z zamówienia, ilości nie będą liczone" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -515,447 +550,439 @@ msgstr "" "Usuwa listę produktów z zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 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ń." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Utwórz atrybut" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Usuwanie atrybutu" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 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" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "pobieranie bieżącej oczekującej listy życzeń użytkownika" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "pobiera bieżącą oczekującą listę życzeń uwierzytelnionego użytkownika" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Dodawanie produktu do zamówienia" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Dodaje produkt do listy życzeń używając podanego `product_uuid`" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Usunięcie produktu z listy życzeń" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Dodaj wiele produktów do listy życzeń" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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`" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Usunięcie produktu z zamówienia" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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`" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrowanie według jednej lub więcej par atrybut/wartość. \n" "- Składnia**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można " -"przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w " -"przeciwnym razie traktowane jako string. \n" -"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania " -"base64 surowej wartości. \n" +"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w przeciwnym razie traktowane jako string. \n" +"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania base64 surowej wartości. \n" "Przykłady: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(dokładny) UUID produktu" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla " -"sortowania malejącego. \n" +"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla sortowania malejącego. \n" "**Dozwolone:** uuid, rating, name, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Tworzenie produktu" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Usuń produkt" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "wyświetla wszystkie dozwolone informacje zwrotne dotyczące produktu" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Zwraca migawkę metadanych SEO produktu." -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Lista wszystkich adresów" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Pobieranie pojedynczego adresu" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Utwórz nowy adres" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Usuwanie adresu" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Aktualizacja całego adresu" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Częściowa aktualizacja adresu" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Wprowadzanie adresu w trybie autouzupełniania" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ogranicza ilość wyników, 1 < limit < 10, domyślnie: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "lista wszystkich opinii (widok prosty)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "pobieranie pojedynczej informacji zwrotnej (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "utworzyć informację zwrotną" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "usuwanie opinii" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "przepisanie istniejącej informacji zwrotnej z zachowaniem elementów " "nieedytowalnych" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "lista wszystkich relacji zamówienie-produkt (widok prosty)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "pobranie pojedynczej relacji zamówienie-produkt (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "utworzyć nową relację zamówienie-produkt" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "zastąpić istniejącą relację zamówienie-produkt" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "częściowa aktualizacja istniejącej relacji zamówienie-produkt" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "usunąć relację zamówienie-produkt" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "dodawanie lub usuwanie opinii na temat relacji zamówienie-produkt" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Lista wszystkich marek (widok prosty)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Pobieranie pojedynczej marki (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Brand UUID lub slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Stwórz markę" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Usuń markę" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Przepisz istniejącą markę, oszczędzając materiały nieedytowalne" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot dla marki" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Lista wszystkich sprzedawców (widok prosty)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Pobieranie pojedynczego dostawcy (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Utwórz sprzedawcę" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Usuń sprzedawcę" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Przepisz istniejącego dostawcę, zapisując nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Lista wszystkich zdjęć produktów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Pobieranie pojedynczego obrazu produktu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Utwórz obraz produktu" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Usuwanie obrazu produktu" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "Przepisz istniejący obraz produktu, zapisując nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Lista wszystkich kodów promocyjnych (widok prosty)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Pobieranie pojedynczego kodu promocyjnego (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Utwórz kod promocyjny" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Usuń kod promocyjny" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Przepisz istniejący kod promocyjny, oszczędzając nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Lista wszystkich promocji (widok prosty)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Pobieranie pojedynczej promocji (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Utwórz promocję" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Usuń promocję" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Przepisz istniejącą promocję, zapisując nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Lista wszystkich akcji (widok prosty)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Pobieranie pojedynczego zasobu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Tworzenie rekordu zapasów" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Usuwanie rekordu zapasów" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Przepisanie istniejącego rekordu magazynowego z zachowaniem elementów " "nieedytowalnych" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " "nieedytowalne" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Lista wszystkich tagów produktów (widok prosty)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Pobieranie pojedynczego tagu produktu (widok szczegółowy)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Utwórz tag produktu" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Usuwanie tagu produktu" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Przepisz istniejący tag produktu, zapisując nieedytowalne elementy" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Przepisz niektóre pola istniejącej kategorii, zapisując elementy " @@ -1109,7 +1136,7 @@ msgstr "Dane w pamięci podręcznej" msgid "camelized JSON data from the requested URL" msgstr "Kamelizowane dane JSON z żądanego adresu URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://" @@ -1193,8 +1220,8 @@ msgstr "Kup zamówienie" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Prześlij atrybuty jako ciąg znaków sformatowany w następujący sposób: " "attr1=value1,attr2=value2" @@ -1272,7 +1299,8 @@ msgstr "" "Które atrybuty i wartości mogą być używane do filtrowania tej kategorii." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minimalne i maksymalne ceny produktów w tej kategorii, jeśli są dostępne." @@ -1483,8 +1511,7 @@ msgstr "Numer telefonu firmy" #: engine/core/graphene/object_types.py:681 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" +msgstr "\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" #: engine/core/graphene/object_types.py:682 msgid "email host user" @@ -1578,8 +1605,8 @@ msgstr "" "Reprezentuje jednostkę dostawcy zdolną do przechowywania informacji o " "zewnętrznych dostawcach i ich wymaganiach dotyczących interakcji. Klasa " "Vendor służy do definiowania i zarządzania informacjami związanymi z " -"zewnętrznym dostawcą. Przechowuje nazwę dostawcy, szczegóły uwierzytelniania " -"wymagane do komunikacji oraz procentowe znaczniki stosowane do produktów " +"zewnętrznym dostawcą. Przechowuje nazwę dostawcy, szczegóły uwierzytelniania" +" wymagane do komunikacji oraz procentowe znaczniki stosowane do produktów " "pobieranych od dostawcy. Model ten zachowuje również dodatkowe metadane i " "ograniczenia, dzięki czemu nadaje się do użytku w systemach, które " "współpracują z zewnętrznymi dostawcami." @@ -1751,11 +1778,12 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Reprezentuje obiekt marki w systemie. Ta klasa obsługuje informacje i " -"atrybuty związane z marką, w tym jej nazwę, logo, opis, powiązane kategorie, " -"unikalny slug i kolejność priorytetów. Pozwala na organizację i " +"atrybuty związane z marką, w tym jej nazwę, logo, opis, powiązane kategorie," +" unikalny slug i kolejność priorytetów. Pozwala na organizację i " "reprezentację danych związanych z marką w aplikacji." #: engine/core/models.py:448 @@ -1800,8 +1828,8 @@ msgstr "Kategorie" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1953,8 +1981,8 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Reprezentuje atrybut w systemie. Ta klasa jest używana do definiowania i " @@ -2024,9 +2052,9 @@ msgstr "Atrybut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Reprezentuje określoną wartość atrybutu powiązanego z produktem. Łączy " "\"atrybut\" z unikalną \"wartością\", umożliwiając lepszą organizację i " @@ -2047,8 +2075,8 @@ msgstr "Konkretna wartość dla tego atrybutu" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2060,7 +2088,8 @@ msgstr "" #: engine/core/models.py:826 msgid "provide alternative text for the image for accessibility" -msgstr "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" +msgstr "" +"Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu" #: engine/core/models.py:827 msgid "image alt text" @@ -2096,12 +2125,12 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Reprezentuje kampanię promocyjną dla produktów z rabatem. Ta klasa służy do " -"definiowania i zarządzania kampaniami promocyjnymi, które oferują procentowy " -"rabat na produkty. Klasa zawiera atrybuty do ustawiania stopy rabatu, " +"definiowania i zarządzania kampaniami promocyjnymi, które oferują procentowy" +" rabat na produkty. Klasa zawiera atrybuty do ustawiania stopy rabatu, " "dostarczania szczegółów na temat promocji i łączenia jej z odpowiednimi " "produktami. Integruje się z katalogiem produktów w celu określenia pozycji, " "których dotyczy kampania." @@ -2146,8 +2175,8 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" "Reprezentuje listę życzeń użytkownika do przechowywania i zarządzania " -"pożądanymi produktami. Klasa zapewnia funkcjonalność do zarządzania kolekcją " -"produktów, wspierając operacje takie jak dodawanie i usuwanie produktów, a " +"pożądanymi produktami. Klasa zapewnia funkcjonalność do zarządzania kolekcją" +" produktów, wspierając operacje takie jak dodawanie i usuwanie produktów, a " "także wspierając operacje dodawania i usuwania wielu produktów jednocześnie." #: engine/core/models.py:926 @@ -2172,13 +2201,13 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Reprezentuje rekord dokumentu powiązany z produktem. Ta klasa służy do " -"przechowywania informacji o dokumentach związanych z określonymi produktami, " -"w tym przesyłanych plików i ich metadanych. Zawiera metody i właściwości do " -"obsługi typu pliku i ścieżki przechowywania plików dokumentów. Rozszerza " +"przechowywania informacji o dokumentach związanych z określonymi produktami," +" w tym przesyłanych plików i ich metadanych. Zawiera metody i właściwości do" +" obsługi typu pliku i ścieżki przechowywania plików dokumentów. Rozszerza " "funkcjonalność z określonych miksów i zapewnia dodatkowe niestandardowe " "funkcje." @@ -2196,14 +2225,14 @@ msgstr "Nierozwiązany" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Reprezentuje jednostkę adresu, która zawiera szczegóły lokalizacji i " "powiązania z użytkownikiem. Zapewnia funkcjonalność przechowywania danych " @@ -2211,8 +2240,8 @@ msgstr "" "Klasa ta została zaprojektowana do przechowywania szczegółowych informacji " "adresowych, w tym elementów takich jak ulica, miasto, region, kraj i " "geolokalizacja (długość i szerokość geograficzna). Obsługuje integrację z " -"interfejsami API geokodowania, umożliwiając przechowywanie nieprzetworzonych " -"odpowiedzi API do dalszego przetwarzania lub kontroli. Klasa umożliwia " +"interfejsami API geokodowania, umożliwiając przechowywanie nieprzetworzonych" +" odpowiedzi API do dalszego przetwarzania lub kontroli. Klasa umożliwia " "również powiązanie adresu z użytkownikiem, ułatwiając spersonalizowaną " "obsługę danych." @@ -2372,8 +2401,8 @@ msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2453,7 +2482,8 @@ msgstr "Zamówienie" #: engine/core/models.py:1319 msgid "a user must have only one pending order at a time" -msgstr "Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!" +msgstr "" +"Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!" #: engine/core/models.py:1351 msgid "you cannot add products to an order that is not a pending one" @@ -2550,8 +2580,8 @@ msgstr "" "temat konkretnych produktów, które zostały przez nich zakupione. Zawiera " "atrybuty do przechowywania komentarzy użytkowników, odniesienie do " "powiązanego produktu w zamówieniu oraz ocenę przypisaną przez użytkownika. " -"Klasa wykorzystuje pola bazy danych do efektywnego modelowania i zarządzania " -"danymi opinii." +"Klasa wykorzystuje pola bazy danych do efektywnego modelowania i zarządzania" +" danymi opinii." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2562,7 +2592,8 @@ msgid "feedback comments" msgstr "Komentarze zwrotne" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +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." @@ -2593,13 +2624,13 @@ msgid "" msgstr "" "Reprezentuje produkty powiązane z zamówieniami i ich atrybutami. Model " "OrderProduct przechowuje informacje o produkcie, który jest częścią " -"zamówienia, w tym szczegóły, takie jak cena zakupu, ilość, atrybuty produktu " -"i status. Zarządza powiadomieniami dla użytkownika i administratorów oraz " -"obsługuje operacje, takie jak zwracanie salda produktu lub dodawanie opinii. " -"Model ten zapewnia również metody i właściwości, które obsługują logikę " +"zamówienia, w tym szczegóły, takie jak cena zakupu, ilość, atrybuty produktu" +" i status. Zarządza powiadomieniami dla użytkownika i administratorów oraz " +"obsługuje operacje, takie jak zwracanie salda produktu lub dodawanie opinii." +" Model ten zapewnia również metody i właściwości, które obsługują logikę " "biznesową, taką jak obliczanie całkowitej ceny lub generowanie adresu URL " -"pobierania dla produktów cyfrowych. Model ten integruje się z modelami Order " -"i Product i przechowuje odniesienia do nich." +"pobierania dla produktów cyfrowych. Model ten integruje się z modelami Order" +" i Product i przechowuje odniesienia do nich." #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2612,7 +2643,8 @@ msgstr "Cena zakupu w momencie zamówienia" #: engine/core/models.py:1763 msgid "internal comments for admins about this ordered product" msgstr "" -"Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego produktu" +"Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego " +"produktu" #: engine/core/models.py:1764 msgid "internal comments" @@ -2710,9 +2742,9 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Reprezentuje funkcjonalność pobierania zasobów cyfrowych powiązanych z " "zamówieniami. Klasa DigitalAssetDownload zapewnia możliwość zarządzania i " @@ -2778,8 +2810,7 @@ msgstr "Witaj %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Dziękujemy za zamówienie #%(order.pk)s! Z przyjemnością informujemy, że " @@ -2838,8 +2869,8 @@ msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" msgstr "" -"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują " -"się szczegóły zamówienia:" +"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują" +" się szczegóły zamówienia:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2894,8 +2925,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Dziękujemy za zamówienie! Z przyjemnością potwierdzamy zakup. Poniżej " @@ -2970,7 +3000,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Wymiary obrazu nie powinny przekraczać w{max_width} x h{max_height} pikseli." -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2978,26 +3008,26 @@ msgstr "" "Obsługuje żądanie indeksu mapy witryny i zwraca odpowiedź XML. Zapewnia, że " "odpowiedź zawiera odpowiedni nagłówek typu zawartości dla XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Obsługuje szczegółową odpowiedź widoku dla mapy witryny. Ta funkcja " -"przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i " -"ustawia nagłówek Content-Type dla XML." +"przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i" +" ustawia nagłówek Content-Type dla XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Zwraca listę obsługiwanych języków i odpowiadające im informacje." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Zwraca parametry strony internetowej jako obiekt JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3005,11 +3035,11 @@ msgstr "" "Obsługuje operacje pamięci podręcznej, takie jak odczytywanie i ustawianie " "danych pamięci podręcznej z określonym kluczem i limitem czasu." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Obsługuje zgłoszenia formularzy `kontaktuj się z nami`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -3017,62 +3047,58 @@ msgstr "" "Obsługuje żądania przetwarzania i sprawdzania poprawności adresów URL z " "przychodzących żądań POST." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Obsługuje globalne zapytania wyszukiwania." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Obsługuje logikę zakupu jako firma bez rejestracji." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Obsługuje pobieranie zasobu cyfrowego powiązanego z zamówieniem.\n" -"Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu " -"przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest " -"błąd HTTP 404 wskazujący, że zasób jest niedostępny." +"Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "Order_product_uuid jest wymagany" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "zamówiony produkt nie istnieje" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Zasób cyfrowy można pobrać tylko raz" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "zamówienie musi zostać opłacone przed pobraniem zasobu cyfrowego" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Produkt zamówienia nie ma produktu" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "nie znaleziono favicon" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Obsługuje żądania favicon strony internetowej.\n" -"Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu " -"statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany " -"jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." +"Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Przekierowuje żądanie na stronę indeksu administratora. Funkcja obsługuje " @@ -3080,7 +3106,7 @@ msgstr "" "administratora Django. Używa funkcji `redirect` Django do obsługi " "przekierowania HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Zwraca aktualną wersję aplikacji eVibes." @@ -3100,16 +3126,17 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Reprezentuje zestaw widoków do zarządzania obiektami AttributeGroup. " "Obsługuje operacje związane z AttributeGroup, w tym filtrowanie, " "serializację i pobieranie danych. Klasa ta jest częścią warstwy API " -"aplikacji i zapewnia ustandaryzowany sposób przetwarzania żądań i odpowiedzi " -"dla danych AttributeGroup." +"aplikacji i zapewnia ustandaryzowany sposób przetwarzania żądań i odpowiedzi" +" dla danych AttributeGroup." #: engine/core/viewsets.py:176 msgid "" @@ -3132,14 +3159,14 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"Zestaw widoków do zarządzania obiektami AttributeValue. Ten viewset zapewnia " -"funkcjonalność do listowania, pobierania, tworzenia, aktualizowania i " +"Zestaw widoków do zarządzania obiektami AttributeValue. Ten viewset zapewnia" +" funkcjonalność do listowania, pobierania, tworzenia, aktualizowania i " "usuwania obiektów AttributeValue. Integruje się z mechanizmami viewset " -"Django REST Framework i używa odpowiednich serializatorów dla różnych akcji. " -"Możliwości filtrowania są dostarczane przez DjangoFilterBackend." +"Django REST Framework i używa odpowiednich serializatorów dla różnych akcji." +" Możliwości filtrowania są dostarczane przez DjangoFilterBackend." #: engine/core/viewsets.py:214 msgid "" @@ -3150,8 +3177,8 @@ msgid "" "can access specific data." msgstr "" "Zarządza widokami dla operacji związanych z kategoriami. Klasa " -"CategoryViewSet jest odpowiedzialna za obsługę operacji związanych z modelem " -"kategorii w systemie. Obsługuje pobieranie, filtrowanie i serializowanie " +"CategoryViewSet jest odpowiedzialna za obsługę operacji związanych z modelem" +" kategorii w systemie. Obsługuje pobieranie, filtrowanie i serializowanie " "danych kategorii. Zestaw widoków wymusza również uprawnienia, aby zapewnić, " "że tylko autoryzowani użytkownicy mają dostęp do określonych danych." @@ -3181,8 +3208,8 @@ msgstr "" "zapewnia zestaw widoków do zarządzania produktami, w tym ich filtrowania, " "serializacji i operacji na konkretnych instancjach. Rozszerza się z " "`EvibesViewSet`, aby używać wspólnej funkcjonalności i integruje się z " -"frameworkiem Django REST dla operacji RESTful API. Zawiera metody pobierania " -"szczegółów produktu, stosowania uprawnień i uzyskiwania dostępu do " +"frameworkiem Django REST dla operacji RESTful API. Zawiera metody pobierania" +" szczegółów produktu, stosowania uprawnień i uzyskiwania dostępu do " "powiązanych informacji zwrotnych o produkcie." #: engine/core/viewsets.py:568 @@ -3195,8 +3222,8 @@ msgid "" msgstr "" "Reprezentuje zestaw widoków do zarządzania obiektami Vendor. Ten zestaw " "widoków umożliwia pobieranie, filtrowanie i serializowanie danych dostawcy. " -"Definiuje zestaw zapytań, konfiguracje filtrów i klasy serializatora używane " -"do obsługi różnych działań. Celem tej klasy jest zapewnienie usprawnionego " +"Definiuje zestaw zapytań, konfiguracje filtrów i klasy serializatora używane" +" do obsługi różnych działań. Celem tej klasy jest zapewnienie usprawnionego " "dostępu do zasobów związanych z Vendorem poprzez framework Django REST." #: engine/core/viewsets.py:588 @@ -3204,8 +3231,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Reprezentacja zestawu widoków obsługujących obiekty opinii. Ta klasa " @@ -3221,9 +3248,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet do zarządzania zamówieniami i powiązanymi operacjami. Klasa ta " @@ -3239,8 +3266,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Udostępnia zestaw widoków do zarządzania jednostkami OrderProduct. Ten " @@ -3273,8 +3300,8 @@ msgstr "Obsługuje operacje związane z danymi Stock w systemie." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3298,8 +3325,8 @@ msgstr "" "Ta klasa zapewnia funkcjonalność zestawu widoków do zarządzania obiektami " "`Address`. Klasa AddressViewSet umożliwia operacje CRUD, filtrowanie i " "niestandardowe akcje związane z jednostkami adresowymi. Obejmuje ona " -"wyspecjalizowane zachowania dla różnych metod HTTP, zastępowanie serializera " -"i obsługę uprawnień w oparciu o kontekst żądania." +"wyspecjalizowane zachowania dla różnych metod HTTP, zastępowanie serializera" +" i obsługę uprawnień w oparciu o kontekst żądania." #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3319,4 +3346,3 @@ msgstr "" "Product Tag. Obsługuje elastyczne filtrowanie określonych atrybutów przy " "użyciu określonego zaplecza filtra i dynamicznie wykorzystuje różne " "serializatory w zależności od wykonywanej akcji." - diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.mo b/engine/core/locale/pt_BR/LC_MESSAGES/django.mo index 4290f37a58149ea68b30150078a59fa76e06c648..046c18117f682f083a77bf505bb627a4972540b3 100644 GIT binary patch delta 15005 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 UzW;ICs-z@O>zy5vJlE>~A0BRmEC2ui delta 13840 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 B@znqT diff --git a/engine/core/locale/pt_BR/LC_MESSAGES/django.po b/engine/core/locale/pt_BR/LC_MESSAGES/django.po index 6e2d4673..c37e4d92 100644 --- a/engine/core/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/core/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Está ativo" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Se definido como false, esse objeto não poderá ser visto por usuários sem a " "permissão necessária" @@ -156,7 +157,8 @@ msgstr "Entregue" msgid "canceled" msgstr "Cancelado" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Falha" @@ -184,45 +186,62 @@ msgstr "Momental" msgid "successful" msgstr "Bem-sucedido" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Esquema OpenAPI no formato selecionado com o idioma selecionado" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Esquema OpenApi3 para essa API. O formato pode ser selecionado por meio de " +"negociação de conteúdo. O idioma pode ser selecionado com Accept-Language e " +"com o parâmetro de consulta." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "E/S do cache" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Aplicar somente uma chave para ler dados permitidos do cache.\n" -"Aplicar chave, dados e tempo limite com autenticação para gravar dados no " -"cache." +"Aplicar chave, dados e tempo limite com autenticação para gravar dados no cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Obter uma lista de idiomas suportados" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Obter os parâmetros expostos do aplicativo" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Envie uma mensagem para a equipe de suporte" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Solicite um URL com CORS. Somente https é permitido." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Pesquisa entre produtos, categorias e marcas" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Ponto de extremidade de pesquisa global para consultar as tabelas do projeto" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Comprar um pedido como uma empresa" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -230,217 +249,224 @@ msgstr "" "Compre um pedido como uma empresa, usando os `products` fornecidos com " "`product_uuid` e `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "baixar um ativo digital de um pedido digital adquirido" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Listar todos os grupos de atributos (visualização simples)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperar um único grupo de atributos (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Criar um grupo de atributos" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Excluir um grupo de atributos" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescrever um grupo de atributos existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Criar um atributo" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Excluir um atributo" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 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" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Listar todos os valores de atributos (visualização simples)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperar um único valor de atributo (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Criar um valor de atributo" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Excluir um valor de atributo" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescreva um valor de atributo existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "UUID ou slug da categoria" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Criar uma categoria" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Excluir uma categoria" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 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" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "Meta snapshot de SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Retorna um instantâneo dos metadados de SEO da categoria" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Listar todas as categorias (visualização simples)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 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." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Pesquisa de substring sem distinção entre maiúsculas e minúsculas em " -"human_readable_id, order_products.product.name e order_products.product." -"partnumber" +"human_readable_id, order_products.product.name e " +"order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrar pedidos com buy_time >= este datetime ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrar pedidos com buy_time <= este datetime ISO 8601" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrar por UUID de ordem exata" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrar por ID exata do pedido legível por humanos" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrar por e-mail do usuário (correspondência exata sem distinção entre " "maiúsculas e minúsculas)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrar por UUID do usuário" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrar por status do pedido (correspondência de substring sem distinção " "entre maiúsculas e minúsculas)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordene por uma das seguintes opções: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Prefixe com '-' para " "ordem decrescente (por exemplo, '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Recuperar uma única categoria (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "UUID do pedido ou ID legível por humanos" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Criar um atributo" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Excluir um atributo" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Reescrever uma categoria existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 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" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Preço de compra no momento do pedido" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -450,19 +476,27 @@ msgstr "" "concluída usando o saldo do usuário; se `force_payment` for usado, uma " "transação será iniciada." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "recuperar o pedido pendente atual de um usuário" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "recupera um pedido pendente atual de um usuário autenticado" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "comprar um pedido sem criar uma conta" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza a compra do pedido para um usuário não registrado." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Adicionar um produto ao pedido" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -470,13 +504,13 @@ msgstr "" "Adiciona um produto a um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -484,11 +518,11 @@ msgstr "" "Adiciona uma lista de produtos a um pedido usando o `product_uuid` e os " "`attributes` fornecidos." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Remover um produto do pedido" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -496,11 +530,11 @@ msgstr "" "Remove um produto de um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Remover um produto do pedido, as quantidades não serão contabilizadas" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -508,438 +542,431 @@ msgstr "" "Remove uma lista de produtos de um pedido usando o `product_uuid` e os " "`attributes` fornecidos." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 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." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Criar um atributo" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Excluir um atributo" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 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" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "recuperar a lista de desejos pendente atual de um usuário" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"recupera uma lista de desejos pendente atual de um usuário autenticado" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Adicionar um produto ao pedido" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Remover um produto da lista de desejos" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Adicionar muitos produtos à lista de desejos" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Remover um produto do pedido" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrar por um ou mais pares de nome/valor de atributo. \n" "- **Sintaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Digitação de valores**: JSON é tentado primeiro (para que você possa " -"passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; " -"caso contrário, é tratado como string. \n" -"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de " -"forma segura para a URL. \n" +"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Digitação de valores**: JSON é tentado primeiro (para que você possa passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; caso contrário, é tratado como string. \n" +"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de forma segura para a URL. \n" "Exemplos: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "UUID (exato) do produto" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Lista de campos separada por vírgulas para classificação. Prefixe com `-` " -"para classificação decrescente. \n" -"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, " -"aleatório" +"Lista de campos separada por vírgulas para classificação. Prefixe com `-` para classificação decrescente. \n" +"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, aleatório" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Criar um produto" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescrever um produto existente, preservando os campos não editáveis" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Excluir um produto" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "lista todos os feedbacks permitidos para um produto" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Retorna um instantâneo dos metadados de SEO do produto" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Listar todos os endereços" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Recuperar um único endereço" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Criar um novo endereço" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Excluir um endereço" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Atualizar um endereço inteiro" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Atualizar parcialmente um endereço" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Entrada de endereço com preenchimento automático" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 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" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limita a quantidade de resultados, 1 < limite < 10, padrão: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "listar todos os feedbacks (visualização simples)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "recuperar um único feedback (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "criar um feedback" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "excluir um feedback" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "reescrever um feedback existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "listar todas as relações pedido-produto (visualização simples)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperar uma única relação pedido-produto (visão detalhada)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "criar uma nova relação pedido-produto" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "substituir uma relação pedido-produto existente" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "atualizar parcialmente uma relação pedido-produto existente" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "excluir uma relação pedido-produto" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "adicionar ou remover feedback em uma relação pedido-produto" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Listar todas as marcas (visualização simples)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Recuperar uma única marca (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID ou slug da marca" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Criar uma marca" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Delete a brand" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Reescrever uma marca existente economizando produtos não editáveis" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "Meta snapshot de SEO para a marca" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Listar todos os fornecedores (visualização simples)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Recuperar um único fornecedor (visão detalhada)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Criar um fornecedor" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Excluir um fornecedor" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Reescrever um fornecedor existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Listar todas as imagens do produto (visualização simples)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Recuperar uma única imagem de produto (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Criar uma imagem do produto" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Excluir uma imagem de produto" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Reescrever uma imagem de produto existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Listar todos os códigos promocionais (visualização simples)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Recuperar um único código promocional (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Criar um código promocional" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Delete a promo code" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" -msgstr "Reescreva um código promocional existente salvando itens não editáveis" +msgstr "" +"Reescreva um código promocional existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Listar todas as promoções (visualização simples)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Recuperar uma única promoção (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Criar uma promoção" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Excluir uma promoção" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Reescrever uma promoção existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Listar todas as ações (visualização simples)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Recuperar um único estoque (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Criar um registro de estoque" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Excluir um registro de estoque" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Reescrever um registro de estoque existente, salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Listar todas as tags de produtos (visualização simples)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Recuperar uma única tag de produto (visualização detalhada)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Criar uma tag de produto" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Excluir uma tag de produto" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Reescrever uma tag de produto existente salvando itens não editáveis" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Reescreva alguns campos de uma categoria existente salvando os não editáveis" @@ -1093,7 +1120,7 @@ msgstr "Dados em cache" msgid "camelized JSON data from the requested URL" msgstr "Dados JSON camelizados da URL solicitada" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Somente URLs que começam com http(s):// são permitidos" @@ -1177,8 +1204,8 @@ msgstr "Comprar um pedido" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Envie os atributos como uma string formatada como attr1=value1,attr2=value2" @@ -1255,7 +1282,8 @@ msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "Preços mínimo e máximo dos produtos dessa categoria, se disponíveis." #: engine/core/graphene/object_types.py:206 @@ -1562,9 +1590,9 @@ msgstr "" "fornecedores externos e seus requisitos de interação. A classe Vendor é " "usada para definir e gerenciar informações relacionadas a um fornecedor " "externo. Ela armazena o nome do fornecedor, os detalhes de autenticação " -"necessários para a comunicação e a marcação percentual aplicada aos produtos " -"recuperados do fornecedor. Esse modelo também mantém metadados e restrições " -"adicionais, tornando-o adequado para uso em sistemas que interagem com " +"necessários para a comunicação e a marcação percentual aplicada aos produtos" +" recuperados do fornecedor. Esse modelo também mantém metadados e restrições" +" adicionais, tornando-o adequado para uso em sistemas que interagem com " "fornecedores terceirizados." #: engine/core/models.py:124 @@ -1735,13 +1763,14 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Representa um objeto de marca no sistema. Essa classe lida com informações e " -"atributos relacionados a uma marca, incluindo seu nome, logotipos, " +"Representa um objeto de marca no sistema. Essa classe lida com informações e" +" atributos relacionados a uma marca, incluindo seu nome, logotipos, " "descrição, categorias associadas, um slug exclusivo e ordem de prioridade. " -"Ela permite a organização e a representação de dados relacionados à marca no " -"aplicativo." +"Ela permite a organização e a representação de dados relacionados à marca no" +" aplicativo." #: engine/core/models.py:448 msgid "name of this brand" @@ -1785,8 +1814,8 @@ msgstr "Categorias" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1880,8 +1909,8 @@ msgstr "" "utilitárias relacionadas para recuperar classificações, contagens de " "feedback, preço, quantidade e total de pedidos. Projetado para uso em um " "sistema que lida com comércio eletrônico ou gerenciamento de estoque. Essa " -"classe interage com modelos relacionados (como Category, Brand e ProductTag) " -"e gerencia o armazenamento em cache das propriedades acessadas com " +"classe interage com modelos relacionados (como Category, Brand e ProductTag)" +" e gerencia o armazenamento em cache das propriedades acessadas com " "frequência para melhorar o desempenho. É usada para definir e manipular " "dados de produtos e suas informações associadas em um aplicativo." @@ -1938,14 +1967,14 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Representa um atributo no sistema. Essa classe é usada para definir e " "gerenciar atributos, que são partes personalizáveis de dados que podem ser " -"associadas a outras entidades. Os atributos têm categorias, grupos, tipos de " -"valores e nomes associados. O modelo é compatível com vários tipos de " +"associadas a outras entidades. Os atributos têm categorias, grupos, tipos de" +" valores e nomes associados. O modelo é compatível com vários tipos de " "valores, incluindo string, inteiro, float, booleano, matriz e objeto. Isso " "permite a estruturação dinâmica e flexível dos dados." @@ -2009,13 +2038,13 @@ msgstr "Atributo" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representa um valor específico para um atributo que está vinculado a um " -"produto. Ele vincula o \"atributo\" a um \"valor\" exclusivo, permitindo uma " -"melhor organização e representação dinâmica das características do produto." +"produto. Ele vincula o \"atributo\" a um \"valor\" exclusivo, permitindo uma" +" melhor organização e representação dinâmica das características do produto." #: engine/core/models.py:788 msgid "attribute of this value" @@ -2032,20 +2061,21 @@ msgstr "O valor específico para esse atributo" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Representa uma imagem de produto associada a um produto no sistema. Essa " "classe foi projetada para gerenciar imagens de produtos, incluindo a " "funcionalidade de carregar arquivos de imagem, associá-los a produtos " -"específicos e determinar sua ordem de exibição. Ela também inclui um recurso " -"de acessibilidade com texto alternativo para as imagens." +"específicos e determinar sua ordem de exibição. Ela também inclui um recurso" +" de acessibilidade com texto alternativo para as imagens." #: engine/core/models.py:826 msgid "provide alternative text for the image for accessibility" -msgstr "Forneça um texto alternativo para a imagem para fins de acessibilidade" +msgstr "" +"Forneça um texto alternativo para a imagem para fins de acessibilidade" #: engine/core/models.py:827 msgid "image alt text" @@ -2081,8 +2111,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Representa uma campanha promocional para produtos com desconto. Essa classe " "é usada para definir e gerenciar campanhas promocionais que oferecem um " @@ -2132,8 +2162,8 @@ msgid "" msgstr "" "Representa a lista de desejos de um usuário para armazenar e gerenciar os " "produtos desejados. A classe oferece funcionalidade para gerenciar uma " -"coleção de produtos, suportando operações como adicionar e remover produtos, " -"bem como operações de suporte para adicionar e remover vários produtos de " +"coleção de produtos, suportando operações como adicionar e remover produtos," +" bem como operações de suporte para adicionar e remover vários produtos de " "uma só vez." #: engine/core/models.py:926 @@ -2158,15 +2188,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"Representa um registro de documentário vinculado a um produto. Essa classe é " -"usada para armazenar informações sobre documentários relacionados a produtos " -"específicos, incluindo uploads de arquivos e seus metadados. Ela contém " -"métodos e propriedades para lidar com o tipo de arquivo e o caminho de " -"armazenamento dos arquivos do documentário. Ela estende a funcionalidade de " -"mixins específicos e fornece recursos personalizados adicionais." +"Representa um registro de documentário vinculado a um produto. Essa classe é" +" usada para armazenar informações sobre documentários relacionados a " +"produtos específicos, incluindo uploads de arquivos e seus metadados. Ela " +"contém métodos e propriedades para lidar com o tipo de arquivo e o caminho " +"de armazenamento dos arquivos do documentário. Ela estende a funcionalidade " +"de mixins específicos e fornece recursos personalizados adicionais." #: engine/core/models.py:998 msgid "documentary" @@ -2182,21 +2212,21 @@ msgstr "Não resolvido" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representa uma entidade de endereço que inclui detalhes de localização e " "associações com um usuário. Fornece funcionalidade para armazenamento de " "dados geográficos e de endereço, bem como integração com serviços de " "geocodificação. Essa classe foi projetada para armazenar informações " -"detalhadas de endereço, incluindo componentes como rua, cidade, região, país " -"e geolocalização (longitude e latitude). Ela oferece suporte à integração " +"detalhadas de endereço, incluindo componentes como rua, cidade, região, país" +" e geolocalização (longitude e latitude). Ela oferece suporte à integração " "com APIs de geocodificação, permitindo o armazenamento de respostas brutas " "de API para processamento ou inspeção posterior. A classe também permite " "associar um endereço a um usuário, facilitando o tratamento personalizado " @@ -2343,8 +2373,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não " -"ambos ou nenhum." +"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" +" ambos ou nenhum." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2359,8 +2389,8 @@ msgstr "Tipo de desconto inválido para o código promocional {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2472,7 +2502,8 @@ msgstr "O código promocional não existe" #: engine/core/models.py:1454 msgid "you can only buy physical products with shipping address specified" msgstr "" -"Você só pode comprar produtos físicos com o endereço de entrega especificado!" +"Você só pode comprar produtos físicos com o endereço de entrega " +"especificado!" #: engine/core/models.py:1473 msgid "address does not exist" @@ -2528,8 +2559,8 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Gerencia o feedback dos usuários sobre os produtos. Essa classe foi criada " -"para capturar e armazenar o feedback dos usuários sobre produtos específicos " -"que eles compraram. Ela contém atributos para armazenar comentários de " +"para capturar e armazenar o feedback dos usuários sobre produtos específicos" +" que eles compraram. Ela contém atributos para armazenar comentários de " "usuários, uma referência ao produto relacionado no pedido e uma " "classificação atribuída pelo usuário. A classe usa campos de banco de dados " "para modelar e gerenciar com eficiência os dados de feedback." @@ -2544,10 +2575,11 @@ msgid "feedback comments" msgstr "Comentários de feedback" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Faz referência ao produto específico em um pedido sobre o qual se trata esse " -"feedback" +"Faz referência ao produto específico em um pedido sobre o qual se trata esse" +" feedback" #: engine/core/models.py:1720 msgid "related order product" @@ -2574,9 +2606,9 @@ msgid "" "Product models and stores a reference to them." msgstr "" "Representa produtos associados a pedidos e seus atributos. O modelo " -"OrderProduct mantém informações sobre um produto que faz parte de um pedido, " -"incluindo detalhes como preço de compra, quantidade, atributos do produto e " -"status. Ele gerencia as notificações para o usuário e os administradores e " +"OrderProduct mantém informações sobre um produto que faz parte de um pedido," +" incluindo detalhes como preço de compra, quantidade, atributos do produto e" +" status. Ele gerencia as notificações para o usuário e os administradores e " "trata de operações como devolver o saldo do produto ou adicionar feedback. " "Esse modelo também fornece métodos e propriedades que dão suporte à lógica " "comercial, como o cálculo do preço total ou a geração de um URL de download " @@ -2690,16 +2722,16 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Representa a funcionalidade de download de ativos digitais associados a " "pedidos. A classe DigitalAssetDownload oferece a capacidade de gerenciar e " -"acessar downloads relacionados a produtos de pedidos. Ela mantém informações " -"sobre o produto do pedido associado, o número de downloads e se o ativo está " -"visível publicamente. Ela inclui um método para gerar um URL para download " -"do ativo quando o pedido associado estiver em um status concluído." +"acessar downloads relacionados a produtos de pedidos. Ela mantém informações" +" sobre o produto do pedido associado, o número de downloads e se o ativo " +"está visível publicamente. Ela inclui um método para gerar um URL para " +"download do ativo quando o pedido associado estiver em um status concluído." #: engine/core/models.py:1961 msgid "download" @@ -2757,8 +2789,7 @@ msgstr "Olá %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Obrigado por seu pedido #%(order.pk)s! Temos o prazer de informá-lo de que " @@ -2872,8 +2903,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Obrigado por seu pedido! Temos o prazer de confirmar sua compra. Abaixo " @@ -2946,16 +2976,16 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "As dimensões da imagem não devem exceder w{max_width} x h{max_height} pixels" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." msgstr "" "Trata a solicitação do índice do mapa do site e retorna uma resposta XML. " -"Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado " -"para XML." +"Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado" +" para XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2965,29 +2995,29 @@ msgstr "" "processa a solicitação, obtém a resposta detalhada apropriada do mapa do " "site e define o cabeçalho Content-Type para XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Retorna uma lista de idiomas suportados e suas informações correspondentes." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Retorna os parâmetros do site como um objeto JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Manipula operações de cache, como ler e definir dados de cache com uma chave " -"e um tempo limite especificados." +"Manipula operações de cache, como ler e definir dados de cache com uma chave" +" e um tempo limite especificados." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Trata os envios de formulários \"entre em contato conosco\"." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2995,70 +3025,66 @@ msgstr "" "Trata as solicitações de processamento e validação de URLs de solicitações " "POST recebidas." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Trata as consultas de pesquisa global." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Lida com a lógica de comprar como uma empresa sem registro." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Trata do download de um ativo digital associado a um pedido.\n" -"Essa função tenta servir o arquivo de ativo digital localizado no diretório " -"de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um " -"erro HTTP 404 para indicar que o recurso não está disponível." +"Essa função tenta servir o arquivo de ativo digital localizado no diretório de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid é obrigatório" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "o produto do pedido não existe" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Você só pode fazer o download do ativo digital uma vez" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "o pedido deve ser pago antes de fazer o download do ativo digital" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "O produto do pedido não tem um produto" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon não encontrado" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Trata as solicitações do favicon de um site.\n" -"Essa função tenta servir o arquivo favicon localizado no diretório estático " -"do projeto. Se o arquivo favicon não for encontrado, será gerado um erro " -"HTTP 404 para indicar que o recurso não está disponível." +"Essa função tenta servir o arquivo favicon localizado no diretório estático do projeto. Se o arquivo favicon não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" -"Redireciona a solicitação para a página de índice do administrador. A função " -"lida com as solicitações HTTP recebidas e as redireciona para a página de " +"Redireciona a solicitação para a página de índice do administrador. A função" +" lida com as solicitações HTTP recebidas e as redireciona para a página de " "índice da interface de administração do Django. Ela usa a função `redirect` " "do Django para lidar com o redirecionamento HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Retorna a versão atual do eVibes." @@ -3070,18 +3096,19 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"Define um conjunto de visualizações para gerenciar operações relacionadas ao " -"Evibes. A classe EvibesViewSet é herdeira do ModelViewSet e oferece " +"Define um conjunto de visualizações para gerenciar operações relacionadas ao" +" Evibes. A classe EvibesViewSet é herdeira do ModelViewSet e oferece " "funcionalidade para lidar com ações e operações em entidades Evibes. Ela " "inclui suporte para classes de serializadores dinâmicos com base na ação " "atual, permissões personalizáveis e formatos de renderização." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representa um conjunto de visualizações para gerenciar objetos " "AttributeGroup. Trata das operações relacionadas ao AttributeGroup, " @@ -3098,11 +3125,11 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Trata de operações relacionadas a objetos de atributo no aplicativo. Fornece " -"um conjunto de pontos de extremidade de API para interagir com dados de " +"Trata de operações relacionadas a objetos de atributo no aplicativo. Fornece" +" um conjunto de pontos de extremidade de API para interagir com dados de " "atributos. Essa classe gerencia a consulta, a filtragem e a serialização de " -"objetos Attribute, permitindo o controle dinâmico dos dados retornados, como " -"a filtragem por campos específicos ou a recuperação de informações " +"objetos Attribute, permitindo o controle dinâmico dos dados retornados, como" +" a filtragem por campos específicos ou a recuperação de informações " "detalhadas ou simplificadas, dependendo da solicitação." #: engine/core/viewsets.py:195 @@ -3110,8 +3137,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Um conjunto de exibições para gerenciar objetos AttributeValue. Esse " "conjunto de visualizações fornece funcionalidade para listar, recuperar, " @@ -3131,8 +3158,8 @@ msgstr "" "Gerencia as visualizações das operações relacionadas à categoria. A classe " "CategoryViewSet é responsável pelo tratamento das operações relacionadas ao " "modelo de categoria no sistema. Ela suporta a recuperação, a filtragem e a " -"serialização de dados de categoria. O conjunto de visualizações também impõe " -"permissões para garantir que somente usuários autorizados possam acessar " +"serialização de dados de categoria. O conjunto de visualizações também impõe" +" permissões para garantir que somente usuários autorizados possam acessar " "dados específicos." #: engine/core/viewsets.py:326 @@ -3142,8 +3169,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"Representa um conjunto de visualizações para gerenciar instâncias de marcas. " -"Essa classe fornece funcionalidade para consulta, filtragem e serialização " +"Representa um conjunto de visualizações para gerenciar instâncias de marcas." +" Essa classe fornece funcionalidade para consulta, filtragem e serialização " "de objetos de marca. Ela usa a estrutura ViewSet do Django para simplificar " "a implementação de pontos de extremidade da API para objetos de marca." @@ -3159,9 +3186,9 @@ msgid "" msgstr "" "Gerencia as operações relacionadas ao modelo `Product` no sistema. Essa " "classe fornece um conjunto de visualizações para gerenciar produtos, " -"incluindo filtragem, serialização e operações em instâncias específicas. Ela " -"se estende do `EvibesViewSet` para usar a funcionalidade comum e se integra " -"à estrutura Django REST para operações de API RESTful. Inclui métodos para " +"incluindo filtragem, serialização e operações em instâncias específicas. Ela" +" se estende do `EvibesViewSet` para usar a funcionalidade comum e se integra" +" à estrutura Django REST para operações de API RESTful. Inclui métodos para " "recuperar detalhes do produto, aplicar permissões e acessar o feedback " "relacionado de um produto." @@ -3177,39 +3204,39 @@ msgstr "" "fornecedor. Esse conjunto de visualizações permite a busca, a filtragem e a " "serialização de dados do fornecedor. Ele define o conjunto de consultas, as " "configurações de filtro e as classes de serializador usadas para lidar com " -"diferentes ações. O objetivo dessa classe é fornecer acesso simplificado aos " -"recursos relacionados ao Vendor por meio da estrutura Django REST." +"diferentes ações. O objetivo dessa classe é fornecer acesso simplificado aos" +" recursos relacionados ao Vendor por meio da estrutura Django REST." #: engine/core/viewsets.py:588 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Representação de um conjunto de visualizações que manipula objetos de " -"feedback. Essa classe gerencia operações relacionadas a objetos de feedback, " -"incluindo listagem, filtragem e recuperação de detalhes. O objetivo desse " +"feedback. Essa classe gerencia operações relacionadas a objetos de feedback," +" incluindo listagem, filtragem e recuperação de detalhes. O objetivo desse " "conjunto de visualizações é fornecer serializadores diferentes para ações " "diferentes e implementar o manuseio baseado em permissão de objetos de " -"feedback acessíveis. Ela estende a base `EvibesViewSet` e faz uso do sistema " -"de filtragem do Django para consultar dados." +"feedback acessíveis. Ela estende a base `EvibesViewSet` e faz uso do sistema" +" de filtragem do Django para consultar dados." #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet para gerenciar pedidos e operações relacionadas. Essa classe oferece " -"funcionalidade para recuperar, modificar e gerenciar objetos de pedido. Ela " -"inclui vários pontos de extremidade para lidar com operações de pedidos, " +"ViewSet para gerenciar pedidos e operações relacionadas. Essa classe oferece" +" funcionalidade para recuperar, modificar e gerenciar objetos de pedido. Ela" +" inclui vários pontos de extremidade para lidar com operações de pedidos, " "como adicionar ou remover produtos, realizar compras para usuários " "registrados e não registrados e recuperar os pedidos pendentes do usuário " "autenticado atual. O ViewSet usa vários serializadores com base na ação " @@ -3220,13 +3247,13 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Fornece um conjunto de visualizações para gerenciar entidades OrderProduct. " -"Esse conjunto de visualizações permite operações CRUD e ações personalizadas " -"específicas do modelo OrderProduct. Ele inclui filtragem, verificações de " +"Esse conjunto de visualizações permite operações CRUD e ações personalizadas" +" específicas do modelo OrderProduct. Ele inclui filtragem, verificações de " "permissão e troca de serializador com base na ação solicitada. Além disso, " "fornece uma ação detalhada para lidar com feedback sobre instâncias de " "OrderProduct" @@ -3255,8 +3282,8 @@ msgstr "Trata de operações relacionadas a dados de estoque no sistema." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3279,8 +3306,8 @@ msgid "" "on the request context." msgstr "" "Essa classe fornece a funcionalidade de conjunto de visualizações para " -"gerenciar objetos `Address`. A classe AddressViewSet permite operações CRUD, " -"filtragem e ações personalizadas relacionadas a entidades de endereço. Ela " +"gerenciar objetos `Address`. A classe AddressViewSet permite operações CRUD," +" filtragem e ações personalizadas relacionadas a entidades de endereço. Ela " "inclui comportamentos especializados para diferentes métodos HTTP, " "substituições de serializadores e tratamento de permissões com base no " "contexto da solicitação." @@ -3303,4 +3330,3 @@ msgstr "" "de tag de produto. Ela oferece suporte à filtragem flexível de atributos " "específicos usando o backend de filtro especificado e usa dinamicamente " "diferentes serializadores com base na ação que está sendo executada." - diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.mo b/engine/core/locale/ro_RO/LC_MESSAGES/django.mo index 43ff6f302a6ea578c4886eb8cf7cfce5f031e9c9..c2246d527917daa54147340892fa606d6f137857 100644 GIT binary patch delta 15067 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 delta 13841 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 diff --git a/engine/core/locale/ro_RO/LC_MESSAGES/django.po b/engine/core/locale/ro_RO/LC_MESSAGES/django.po index 93904ae0..7506d1c2 100644 --- a/engine/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/core/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,10 +29,11 @@ msgstr "Este activ" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără " -"permisiunea necesară" +"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără" +" permisiunea necesară" #: engine/core/abstract.py:23 engine/core/choices.py:18 msgid "created" @@ -156,7 +157,8 @@ msgstr "Livrat" msgid "canceled" msgstr "Anulată" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Eșuat" @@ -184,269 +186,294 @@ msgstr "Momental" msgid "successful" msgstr "De succes" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Schema OpenAPI în formatul selectat cu limba selectată" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Schema OpenApi3 pentru acest API. Formatul poate fi selectat prin negocierea" +" conținutului. Limba poate fi selectată atât cu Accept-Language, cât și cu " +"parametrul de interogare." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Aplicați doar o cheie pentru a citi datele permise din cache.\n" -"Aplicați o cheie, date și timeout cu autentificare pentru a scrie date în " -"cache." +"Aplicați o cheie, date și timeout cu autentificare pentru a scrie date în cache." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Obțineți parametrii expunibili ai aplicației" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Trimiteți un mesaj echipei de asistență" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Solicitați un URL CORSed. Numai https este permis." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Căutare între produse, categorii și mărci" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" -"Punct final de căutare globală pentru a efectua interogări în toate tabelele " -"proiectului" +"Punct final de căutare globală pentru a efectua interogări în toate tabelele" +" proiectului" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Achiziționați o comandă ca întreprindere" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid` " -"și `attributes` furnizate." +"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid`" +" și `attributes` furnizate." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "descărcarea unui bun digital din comanda digitală achiziționată" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Lista tuturor grupurilor de atribute (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Recuperarea unui singur grup de atribute (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Crearea unui grup de atribute" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Ștergerea unui grup de atribute" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" -"Rescrierea unui grup de atribute existent cu salvarea elementelor needitabile" +"Rescrierea unui grup de atribute existent cu salvarea elementelor " +"needitabile" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +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" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Crearea unui atribut" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Ștergerea unui atribut" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 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" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Lista tuturor valorilor atributelor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Recuperarea valorii unui singur atribut (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Crearea unei valori de atribut" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Ștergerea unei valori de atribut" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Rescrierea unei valori de atribut existente care salvează non-editabile" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +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" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Categorie UUID sau slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Creați o categorie" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Ștergeți o categorie" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 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" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Returnează un instantaneu al metadatelor SEO ale categoriei" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Lista tuturor categoriilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 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." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Căutare de substring insensibilă la majuscule în human_readable_id, " "order_products.product.name și order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrați comenzile cu buy_time >= această dată ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrează comenzile cu buy_time <= această dată ISO 8601" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrare după UUID exact al comenzii" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrați după ID-ul exact al comenzii care poate fi citit de către om" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Filtrare în funcție de adresa de e-mail a utilizatorului (potrivire exactă " "insensibilă la majuscule)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrare după UUID-ul utilizatorului" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Filtrare în funcție de starea comenzii (potrivire a substringurilor fără " "deosebire de majuscule)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordonați după unul dintre: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Prefixați cu \"-\" pentru " "ordine descrescătoare (de exemplu, \"-buy_time\")." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Recuperarea unei singure categorii (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "UUID al comenzii sau identificator lizibil de către om" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Crearea unui atribut" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Ștergerea unui atribut" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Rescrieți o categorie existentă salvând non-editabile" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 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" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Prețul de achiziție la momentul comenzii" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -456,19 +483,28 @@ msgstr "" "achiziția este finalizată utilizând soldul utilizatorului; Dacă se " "utilizează `force_payment`, este inițiată o tranzacție." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "preluarea comenzii curente în așteptare a unui utilizator" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "" +"recuperează o comandă curentă în așteptare a unui utilizator autentificat" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "achiziționarea unei comenzi fără crearea unui cont" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizează achiziția comenzii pentru un utilizator neînregistrat." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Adăugați un produs la comandă" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -476,11 +512,11 @@ msgstr "" "Adaugă un produs la o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 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" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -488,11 +524,11 @@ msgstr "" "Adaugă o listă de produse la o comandă folosind `product_uuid` și " "`attributes` furnizate." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Eliminați un produs din comandă" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -500,12 +536,12 @@ msgstr "" "Elimină un produs dintr-o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "" "Eliminați un produs din comandă, cantitățile nu vor fi luate în considerare" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -513,449 +549,445 @@ msgstr "" "Îndepărtează o listă de produse dintr-o comandă folosind `product_uuid` și " "`attributes` furnizate." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 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." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Crearea unui atribut" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Ștergerea unui atribut" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 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" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "recuperează lista de dorințe în așteptare a unui utilizator" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"recuperează o listă de dorințe în așteptare curentă a unui utilizator " +"autentificat" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Adăugați un produs la comandă" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 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" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Eliminați un produs din lista de dorințe" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 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" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Adăugați mai multe produse la lista de dorințe" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 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" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Eliminați un produs din comandă" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 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" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrați după una sau mai multe perechi nume de atribut/valoare. \n" "- **Sintaxa**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metode** (valoarea implicită este `icontains` dacă este omisă): " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`\n" -"- **Value typing**: JSON este încercat în primul rând (astfel încât să " -"puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; " -"în caz contrar tratat ca string. \n" -"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în " -"condiții de siguranță URL. \n" +"- **Metode** (valoarea implicită este `icontains` dacă este omisă): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Value typing**: JSON este încercat în primul rând (astfel încât să puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; în caz contrar tratat ca string. \n" +"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în condiții de siguranță URL. \n" "Exemple: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(exact) UUID al produsului" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați " -"cu `-` pentru descrescător. \n" +"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați cu `-` pentru descrescător. \n" "**Autorizate:** uuid, rating, nume, slug, creat, modificat, preț, aleatoriu" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Creați un produs" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Rescrierea unui produs existent, păstrând câmpurile care nu pot fi editate" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 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" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Ștergeți un produs" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "listează toate feedback-urile permise pentru un produs" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Returnează un instantaneu al metadatelor SEO ale produsului" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Enumerați toate adresele" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Recuperarea unei singure adrese" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Creați o adresă nouă" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Ștergeți o adresă" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Actualizarea unei adrese întregi" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Actualizarea parțială a unei adrese" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autocompletare adresă de intrare" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" -"docker compose exec app poetry run python manage.py deepl_translate -l en-gb " -"-l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " "it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" "hans -a core -a geo -a plăți -a vibes_auth -a blog" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "limitează cantitatea de rezultate, 1 < limit < 10, implicit: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "lista tuturor feedback-urilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "recuperați un singur feedback (vizualizare detaliată)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "creați un feedback" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "ștergeți un feedback" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "rescrierea unui feedback existent cu salvarea elementelor needitabile" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "lista tuturor relațiilor comandă-produs (vedere simplă)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "recuperarea unei singure relații comandă-produs (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "crearea unei noi relații comandă-produs" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "să înlocuiască o relație comandă-produs existentă" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "actualizarea parțială a unei relații comandă-produs existente" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "ștergeți o relație comandă-produs" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "adăugarea sau eliminarea feedback-ului într-o relație comandă-produs" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Lista tuturor mărcilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Recuperarea unei singure mărci (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Marca UUID sau slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Creați un brand" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Ștergeți un brand" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" -msgstr "Rescrierea unui brand existent care economisește materiale needitabile" +msgstr "" +"Rescrierea unui brand existent care economisește materiale needitabile" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot pentru brand" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Lista tuturor furnizorilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Recuperarea unui singur furnizor (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Creați un furnizor" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Ștergeți un furnizor" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Rescrierea unui furnizor existent cu salvarea elementelor needitabile" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Listați toate imaginile produsului (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Preluarea unei singure imagini a produsului (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Creați o imagine a produsului" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Ștergeți imaginea unui produs" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" -msgstr "Rescrieți o imagine de produs existentă salvând elementele needitabile" +msgstr "" +"Rescrieți o imagine de produs existentă salvând elementele needitabile" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Lista tuturor codurilor promoționale (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Recuperarea unui singur cod promoțional (vizualizare detaliată)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Creați un cod promoțional" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Ștergeți un cod promoțional" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Rescrieți un cod promoțional existent, economisind non-editabile" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Lista tuturor promoțiilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Recuperarea unei singure promoții (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Creați o promoție" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Ștergeți o promovare" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" -msgstr "Rescrierea unei promoții existente cu salvarea elementelor needitabile" +msgstr "" +"Rescrierea unei promoții existente cu salvarea elementelor needitabile" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Lista tuturor stocurilor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Recuperarea unui singur stoc (vedere detaliată)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Crearea unei fișe de stoc" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Ștergerea unei înregistrări de stoc" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Rescrierea unei fișe de stoc existente cu salvarea elementelor needitabile" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " "needitabile" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Listați toate etichetele produselor (vizualizare simplă)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Recuperarea unei singure etichete de produs (vizualizare detaliată)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Creați o etichetă de produs" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Ștergeți o etichetă de produs" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Rescrieți o etichetă de produs existentă salvând elementele needitabile" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unei categorii existente, salvând elementele " @@ -1111,7 +1143,7 @@ msgstr "Date în cache" msgid "camelized JSON data from the requested URL" msgstr "Date JSON Camelizate de la URL-ul solicitat" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Sunt permise numai URL-urile care încep cu http(s)://" @@ -1196,8 +1228,8 @@ msgstr "Cumpărați o comandă" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Vă rugăm să trimiteți atributele sub formă de șir format ca attr1=valoare1, " "attr2=valoare2" @@ -1276,10 +1308,11 @@ msgstr "" "categorii." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt " -"disponibile." +"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt" +" disponibile." #: engine/core/graphene/object_types.py:206 msgid "tags for this category" @@ -1551,8 +1584,8 @@ msgid "" msgstr "" "Reprezintă un grup de atribute, care poate fi ierarhic. Această clasă este " "utilizată pentru gestionarea și organizarea grupurilor de atribute. Un grup " -"de atribute poate avea un grup părinte, formând o structură ierarhică. Acest " -"lucru poate fi util pentru clasificarea și gestionarea mai eficientă a " +"de atribute poate avea un grup părinte, formând o structură ierarhică. Acest" +" lucru poate fi util pentru clasificarea și gestionarea mai eficientă a " "atributelor în cadrul unui sistem complex." #: engine/core/models.py:91 @@ -1676,8 +1709,8 @@ msgid "" msgstr "" "Reprezintă o etichetă de categorie utilizată pentru produse. Această clasă " "modelează o etichetă de categorie care poate fi utilizată pentru asocierea " -"și clasificarea produselor. Aceasta include atribute pentru un identificator " -"intern al etichetei și un nume de afișare ușor de utilizat." +"și clasificarea produselor. Aceasta include atribute pentru un identificator" +" intern al etichetei și un nume de afișare ușor de utilizat." #: engine/core/models.py:254 msgid "category tag" @@ -1705,9 +1738,9 @@ msgstr "" "include câmpuri pentru metadate și reprezentare vizuală, care servesc drept " "bază pentru caracteristicile legate de categorie. Această clasă este " "utilizată de obicei pentru a defini și gestiona categoriile de produse sau " -"alte grupări similare în cadrul unei aplicații, permițând utilizatorilor sau " -"administratorilor să specifice numele, descrierea și ierarhia categoriilor, " -"precum și să atribuie atribute precum imagini, etichete sau prioritate." +"alte grupări similare în cadrul unei aplicații, permițând utilizatorilor sau" +" administratorilor să specifice numele, descrierea și ierarhia categoriilor," +" precum și să atribuie atribute precum imagini, etichete sau prioritate." #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1719,7 +1752,8 @@ msgstr "Categorie imagine" #: engine/core/models.py:282 msgid "define a markup percentage for products in this category" -msgstr "Definiți un procent de majorare pentru produsele din această categorie" +msgstr "" +"Definiți un procent de majorare pentru produsele din această categorie" #: engine/core/models.py:291 msgid "parent of this category to form a hierarchical structure" @@ -1758,10 +1792,11 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Reprezintă un obiect Brand în sistem. Această clasă gestionează informațiile " -"și atributele legate de o marcă, inclusiv numele acesteia, logo-urile, " +"Reprezintă un obiect Brand în sistem. Această clasă gestionează informațiile" +" și atributele legate de o marcă, inclusiv numele acesteia, logo-urile, " "descrierea, categoriile asociate, un slug unic și ordinea de prioritate. " "Aceasta permite organizarea și reprezentarea datelor legate de marcă în " "cadrul aplicației." @@ -1808,8 +1843,8 @@ msgstr "Categorii" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1898,14 +1933,14 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"Reprezintă un produs cu atribute precum categoria, marca, etichetele, starea " -"digitală, numele, descrierea, numărul piesei și slug-ul. Oferă proprietăți " +"Reprezintă un produs cu atribute precum categoria, marca, etichetele, starea" +" digitală, numele, descrierea, numărul piesei și slug-ul. Oferă proprietăți " "utilitare conexe pentru a prelua evaluări, numărul de comentarii, prețul, " "cantitatea și comenzile totale. Concepută pentru a fi utilizată într-un " "sistem care gestionează comerțul electronic sau inventarul. Această clasă " "interacționează cu modele conexe (cum ar fi Category, Brand și ProductTag) " -"și gestionează memoria cache pentru proprietățile accesate frecvent pentru a " -"îmbunătăți performanța. Este utilizată pentru a defini și manipula datele " +"și gestionează memoria cache pentru proprietățile accesate frecvent pentru a" +" îmbunătăți performanța. Este utilizată pentru a defini și manipula datele " "despre produse și informațiile asociate acestora în cadrul unei aplicații." #: engine/core/models.py:585 @@ -1961,16 +1996,16 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Reprezintă un atribut în sistem. Această clasă este utilizată pentru " "definirea și gestionarea atributelor, care sunt elemente de date " "personalizabile care pot fi asociate cu alte entități. Atributele au " "asociate categorii, grupuri, tipuri de valori și nume. Modelul acceptă mai " -"multe tipuri de valori, inclusiv șir, număr întreg, float, boolean, array și " -"obiect. Acest lucru permite structurarea dinamică și flexibilă a datelor." +"multe tipuri de valori, inclusiv șir, număr întreg, float, boolean, array și" +" obiect. Acest lucru permite structurarea dinamică și flexibilă a datelor." #: engine/core/models.py:733 msgid "group of this attribute" @@ -2033,9 +2068,9 @@ msgstr "Atribut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Reprezintă o valoare specifică pentru un atribut care este legat de un " "produs. Leagă \"atributul\" de o \"valoare\" unică, permițând o mai bună " @@ -2056,8 +2091,8 @@ msgstr "Valoarea specifică pentru acest atribut" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2106,8 +2141,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Reprezintă o campanie promoțională pentru produse cu o reducere. Această " "clasă este utilizată pentru a defini și gestiona campanii promoționale care " @@ -2155,9 +2190,9 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"Reprezintă lista de dorințe a unui utilizator pentru stocarea și gestionarea " -"produselor dorite. Clasa oferă funcționalitatea de a gestiona o colecție de " -"produse, suportând operațiuni precum adăugarea și eliminarea de produse, " +"Reprezintă lista de dorințe a unui utilizator pentru stocarea și gestionarea" +" produselor dorite. Clasa oferă funcționalitatea de a gestiona o colecție de" +" produse, suportând operațiuni precum adăugarea și eliminarea de produse, " "precum și operațiuni pentru adăugarea și eliminarea mai multor produse " "simultan." @@ -2183,8 +2218,8 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Reprezintă o înregistrare documentară legată de un produs. Această clasă " "este utilizată pentru a stoca informații despre documentarele legate de " @@ -2208,14 +2243,14 @@ msgstr "Nerezolvat" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Reprezintă o entitate de adresă care include detalii despre locație și " "asocieri cu un utilizator. Oferă funcționalitate pentru stocarea datelor " @@ -2225,7 +2260,8 @@ msgstr "" "geolocalizarea (longitudine și latitudine). Aceasta suportă integrarea cu " "API-urile de geocodare, permițând stocarea răspunsurilor API brute pentru " "procesare sau inspecție ulterioară. De asemenea, clasa permite asocierea " -"unei adrese cu un utilizator, facilitând gestionarea personalizată a datelor." +"unei adrese cu un utilizator, facilitând gestionarea personalizată a " +"datelor." #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2293,8 +2329,8 @@ msgstr "" "PromoCode stochează detalii despre un cod promoțional, inclusiv " "identificatorul său unic, proprietățile de reducere (sumă sau procent), " "perioada de valabilitate, utilizatorul asociat (dacă există) și starea " -"utilizării acestuia. Aceasta include funcționalități de validare și aplicare " -"a codului promoțional la o comandă, asigurându-se în același timp că sunt " +"utilizării acestuia. Aceasta include funcționalități de validare și aplicare" +" a codului promoțional la o comandă, asigurându-se în același timp că sunt " "respectate constrângerile." #: engine/core/models.py:1087 @@ -2384,17 +2420,17 @@ msgstr "Tip de reducere invalid pentru codul promoțional {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Reprezintă o comandă plasată de un utilizator. Această clasă modelează o " "comandă în cadrul aplicației, inclusiv diferitele sale atribute, cum ar fi " -"informațiile privind facturarea și expedierea, starea, utilizatorul asociat, " -"notificările și operațiunile conexe. Comenzile pot avea produse asociate, se " -"pot aplica promoții, se pot stabili adrese și se pot actualiza detaliile de " -"expediere sau de facturare. În egală măsură, funcționalitatea sprijină " +"informațiile privind facturarea și expedierea, starea, utilizatorul asociat," +" notificările și operațiunile conexe. Comenzile pot avea produse asociate, " +"se pot aplica promoții, se pot stabili adrese și se pot actualiza detaliile " +"de expediere sau de facturare. În egală măsură, funcționalitatea sprijină " "gestionarea produselor în ciclul de viață al comenzii." #: engine/core/models.py:1213 @@ -2544,7 +2580,8 @@ msgstr "" msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" msgstr "" -"Metodă de plată invalidă: {payment_method} de la {available_payment_methods}!" +"Metodă de plată invalidă: {payment_method} de la " +"{available_payment_methods}!" #: engine/core/models.py:1699 msgid "" @@ -2571,10 +2608,11 @@ msgid "feedback comments" msgstr "Comentarii de feedback" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Face referire la produsul specific dintr-o comandă despre care este vorba în " -"acest feedback" +"Face referire la produsul specific dintr-o comandă despre care este vorba în" +" acest feedback" #: engine/core/models.py:1720 msgid "related order product" @@ -2602,8 +2640,8 @@ msgid "" msgstr "" "Reprezintă produsele asociate comenzilor și atributele acestora. Modelul " "OrderProduct păstrează informații despre un produs care face parte dintr-o " -"comandă, inclusiv detalii precum prețul de achiziție, cantitatea, atributele " -"produsului și starea acestuia. Acesta gestionează notificările pentru " +"comandă, inclusiv detalii precum prețul de achiziție, cantitatea, atributele" +" produsului și starea acestuia. Acesta gestionează notificările pentru " "utilizator și administratori și se ocupă de operațiuni precum returnarea " "soldului produsului sau adăugarea de feedback. Acest model oferă, de " "asemenea, metode și proprietăți care susțin logica de afaceri, cum ar fi " @@ -2719,17 +2757,17 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Reprezintă funcționalitatea de descărcare pentru activele digitale asociate " "comenzilor. Clasa DigitalAssetDownload oferă posibilitatea de a gestiona și " "de a accesa descărcările legate de produsele de comandă. Aceasta păstrează " -"informații despre produsul de comandă asociat, numărul de descărcări și dacă " -"activul este vizibil public. Aceasta include o metodă de generare a unei " -"adrese URL pentru descărcarea activului atunci când comanda asociată este în " -"stare finalizată." +"informații despre produsul de comandă asociat, numărul de descărcări și dacă" +" activul este vizibil public. Aceasta include o metodă de generare a unei " +"adrese URL pentru descărcarea activului atunci când comanda asociată este în" +" stare finalizată." #: engine/core/models.py:1961 msgid "download" @@ -2743,8 +2781,8 @@ msgstr "Descărcări" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"trebuie să furnizați un comentariu, un rating și uuid-ul produsului comandat " -"pentru a adăuga feedback." +"trebuie să furnizați un comentariu, un rating și uuid-ul produsului comandat" +" pentru a adăuga feedback." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2787,8 +2825,7 @@ msgstr "Bună ziua %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Vă mulțumim pentru comanda dvs. #%(order.pk)s! Suntem încântați să vă " @@ -2903,12 +2940,11 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția. " -"Mai jos sunt detaliile comenzii dvs:" +"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția." +" Mai jos sunt detaliile comenzii dvs:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2978,7 +3014,7 @@ msgstr "" "Dimensiunile imaginii nu trebuie să depășească w{max_width} x h{max_height} " "pixeli" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2986,111 +3022,106 @@ msgstr "" "Gestionează cererea pentru indexul sitemap și returnează un răspuns XML. Se " "asigură că răspunsul include antetul tip de conținut adecvat pentru XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Gestionează răspunsul de vizualizare detaliată pentru o hartă a site-ului. " -"Această funcție procesează cererea, extrage răspunsul detaliat corespunzător " -"al hărții site-ului și stabilește antetul Content-Type pentru XML." +"Această funcție procesează cererea, extrage răspunsul detaliat corespunzător" +" al hărții site-ului și stabilește antetul Content-Type pentru XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Returnează o listă a limbilor acceptate și informațiile corespunzătoare." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnează parametrii site-ului web sub forma unui obiect JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Gestionează operațiunile din cache, cum ar fi citirea și setarea datelor din " -"cache cu o cheie și un timeout specificate." +"Gestionează operațiunile din cache, cum ar fi citirea și setarea datelor din" +" cache cu o cheie și un timeout specificate." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Gestionează trimiterea formularelor `contact us`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"Gestionează cererile de procesare și validare a URL-urilor din cererile POST " -"primite." +"Gestionează cererile de procesare și validare a URL-urilor din cererile POST" +" primite." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Gestionează interogările de căutare globală." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Gestionează logica cumpărării ca o afacere fără înregistrare." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestionează descărcarea unui bun digital asociat cu o comandă.\n" -"Această funcție încearcă să servească fișierul activului digital situat în " -"directorul de stocare al proiectului. Dacă fișierul nu este găsit, este " -"generată o eroare HTTP 404 pentru a indica faptul că resursa nu este " -"disponibilă." +"Această funcție încearcă să servească fișierul activului digital situat în directorul de stocare al proiectului. Dacă fișierul nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid este necesar" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "comanda produsul nu există" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Puteți descărca activul digital o singură dată" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "comanda trebuie plătită înainte de descărcarea activului digital" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Produsul de comandă nu are un produs" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Gestionează cererile pentru favicon-ul unui site web.\n" -"Această funcție încearcă să servească fișierul favicon situat în directorul " -"static al proiectului. Dacă fișierul favicon nu este găsit, este generată o " -"eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." +"Această funcție încearcă să servească fișierul favicon situat în directorul static al proiectului. Dacă fișierul favicon nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Redirecționează solicitarea către pagina de index a administratorului. " -"Funcția gestionează cererile HTTP primite și le redirecționează către pagina " -"index a interfeței de administrare Django. Aceasta utilizează funcția " +"Funcția gestionează cererile HTTP primite și le redirecționează către pagina" +" index a interfeței de administrare Django. Aceasta utilizează funcția " "`redirect` din Django pentru gestionarea redirecționării HTTP." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Returnează versiunea curentă a eVibes." @@ -3111,10 +3142,11 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Reprezintă un set de vizualizări pentru gestionarea obiectelor " "AttributeGroup. Gestionează operațiunile legate de AttributeGroup, inclusiv " @@ -3131,20 +3163,20 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"Gestionează operațiunile legate de obiectele Attribute în cadrul aplicației. " -"Oferă un set de puncte finale API pentru a interacționa cu datele Attribute. " -"Această clasă gestionează interogarea, filtrarea și serializarea obiectelor " -"Attribute, permițând controlul dinamic asupra datelor returnate, cum ar fi " -"filtrarea după câmpuri specifice sau recuperarea de informații detaliate sau " -"simplificate în funcție de cerere." +"Gestionează operațiunile legate de obiectele Attribute în cadrul aplicației." +" Oferă un set de puncte finale API pentru a interacționa cu datele " +"Attribute. Această clasă gestionează interogarea, filtrarea și serializarea " +"obiectelor Attribute, permițând controlul dinamic asupra datelor returnate, " +"cum ar fi filtrarea după câmpuri specifice sau recuperarea de informații " +"detaliate sau simplificate în funcție de cerere." #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Un set de vizualizări pentru gestionarea obiectelor AttributeValue. Acest " "set de vizualizări oferă funcționalități pentru listarea, extragerea, " @@ -3192,9 +3224,9 @@ msgid "" msgstr "" "Gestionează operațiunile legate de modelul `Product` din sistem. Această " "clasă oferă un set de vizualizări pentru gestionarea produselor, inclusiv " -"filtrarea lor, serializarea și operațiunile asupra instanțelor specifice. Se " -"extinde de la `EvibesViewSet` pentru a utiliza funcționalități comune și se " -"integrează cu cadrul REST Django pentru operațiuni API RESTful. Include " +"filtrarea lor, serializarea și operațiunile asupra instanțelor specifice. Se" +" extinde de la `EvibesViewSet` pentru a utiliza funcționalități comune și se" +" integrează cu cadrul REST Django pentru operațiuni API RESTful. Include " "metode pentru recuperarea detaliilor produsului, aplicarea permisiunilor și " "accesarea feedback-ului aferent unui produs." @@ -3206,8 +3238,8 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Reprezintă un set de vizualizări pentru gestionarea obiectelor Vendor. Acest " -"set de vizualizare permite preluarea, filtrarea și serializarea datelor " +"Reprezintă un set de vizualizări pentru gestionarea obiectelor Vendor. Acest" +" set de vizualizare permite preluarea, filtrarea și serializarea datelor " "furnizorului. Aceasta definește queryset-ul, configurațiile de filtrare și " "clasele de serializare utilizate pentru a gestiona diferite acțiuni. Scopul " "acestei clase este de a oferi acces simplificat la resursele legate de " @@ -3218,14 +3250,14 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Reprezentarea unui set de vizualizări care gestionează obiecte Feedback. " "Această clasă gestionează operațiunile legate de obiectele Feedback, " -"inclusiv listarea, filtrarea și extragerea detaliilor. Scopul acestui set de " -"vizualizări este de a furniza serializatoare diferite pentru acțiuni " +"inclusiv listarea, filtrarea și extragerea detaliilor. Scopul acestui set de" +" vizualizări este de a furniza serializatoare diferite pentru acțiuni " "diferite și de a implementa gestionarea pe bază de permisiuni a obiectelor " "Feedback accesibile. Aceasta extinde clasa de bază `EvibesViewSet` și " "utilizează sistemul de filtrare Django pentru interogarea datelor." @@ -3235,9 +3267,9 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet pentru gestionarea comenzilor și a operațiunilor conexe. Această " @@ -3254,8 +3286,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Oferă un set de vizualizări pentru gestionarea entităților OrderProduct. " @@ -3267,7 +3299,8 @@ msgstr "" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " -msgstr "Gestionează operațiunile legate de imaginile produselor din aplicație." +msgstr "" +"Gestionează operațiunile legate de imaginile produselor din aplicație." #: engine/core/viewsets.py:880 msgid "" @@ -3290,8 +3323,8 @@ msgstr "" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3314,8 +3347,8 @@ msgid "" "on the request context." msgstr "" "Această clasă oferă funcționalități de tip viewset pentru gestionarea " -"obiectelor `Address`. Clasa AddressViewSet permite operațiuni CRUD, filtrare " -"și acțiuni personalizate legate de entitățile adresă. Aceasta include " +"obiectelor `Address`. Clasa AddressViewSet permite operațiuni CRUD, filtrare" +" și acțiuni personalizate legate de entitățile adresă. Aceasta include " "comportamente specializate pentru diferite metode HTTP, înlocuiri ale " "serializatorului și gestionarea permisiunilor în funcție de contextul " "cererii." @@ -3339,4 +3372,3 @@ msgstr "" "filtrarea flexibilă pe baza unor atribute specifice utilizând backend-ul de " "filtrare specificat și utilizează în mod dinamic serializatoare diferite în " "funcție de acțiunea efectuată." - diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.mo b/engine/core/locale/ru_RU/LC_MESSAGES/django.mo index a0a3ee261656a3e18e04831d40a9be7041b78e7a..ad634f177bd1d789b3cb3910671cb5cf4b88c431 100644 GIT binary patch delta 15091 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 delta 13871 zcmZwO1$Y%lzsK=eT#5w?o**Fv4-lLLf?J?iaF^h2Egan49f}o-H&_c43N0xvMN83^ zBBi`71!}at-`|oLH02kpFOo3G^*m^ZFiiX5sF!6a6jZs@a#+>*K?&D=%A^&H# zRk8Pbh_v1OEqW8HVIa>pO~_=!I82S>P(3mOv*Th+jyq6Y z9FIK9oW-L&D1B{XT2ek=$Cy@>3)M9y8pqVL_xrrQ^$Z46?<%Sxzo9Q5nKxusV(tdE zs}JHkl#il%<}5bhhWAlpAKu8AyI2{w63^Axm}2;4j4^HL`WJM|H=J+W%$Q-si!^75 zaBT}?>SF?}jm3ai`oB6C^l5F(asoTr8nYMcv^VAqH+a*5Mp6E%qcOkY!%oJOB!06C zQcm5Khf%KBjp3nOth+JwxZl(s^cv+$y=((}_BLi9@l1V|Ks2a5aYFMpRdxbMecrd=qJtxr3Ul(L?MIPa10LuS5;? zIv<%dWIn(J0u-ZtDqMazJe^ARN$9r}z#Goc+H&oBPj~OrlwI5tZP3F6( zIrJKJ-=y!`Hx9;Dl#3$M#%Csyi6n3tYhu6{yJ57#qLh0hdy-j#>G30X{uAWh<}4P% zx?}As>5u6s4@K=G6EFamp@wuDs_Tzn2Ce@DGHUU4)CTk%^@jiYE0Cv-;)R_RP(xM^ zb7FH;0|#IbPQ)BP2TpJ&7GM_2D^Xp(8`XtJ zQ4hR~deA*r{t1I9|ApEga!;_cybx+mgrV*qjvA60sOw`V(EoZ+cLG{Qqfr<5P!FDp z>VYNBEvWjRqQ?9JYG_`ehA_oMdp-|pNWxJKuZ?!=1j#bWpZH7WB=vJY&4DtEyOI0q|Y0_p|4$@T>@I`g9%To%>fT0Sy*qjsnk4?;b7 zGOESPP%Ykx>WR-#^)8|s{JrxZRK36{b}odX?$ZD@2RfjJx);{KAsCLn{bV#2Pp}-m zMm?a|RQm=|s20bd#L6Dl&8D$0@RH*ViDYl{x{r#vOJBnrTDkjG?Gwjf0#LATGp&B?D zQ)>MmAQMX9DC$ifV+f|1X&+P?wI9Txx^z5h$QEG`Zbj__r%^-n5F6odI2>!uGNvCM zMl~pGw(Z$cSX=8ql1yrxg6fHRs2eRs4arti1Mgx=Of|<2Nk&w?U{sHk!J^m)OX5=0 zP$pnKyoJ@U&|LexZssnwg?CQ!s%u9JT zY6!NY?t32#<4b4m`L?HP&ZqzLaH59`Ou`__n^ExuEQJrT5N2CoKi#TeKFXa?lWQDm z=r*9P`x4cV?=T3HEVMmS0FzOU!A#hEA^oqh>p>tDjz^VeU>)4#;y*cGV|wEMqHdIa zkzL1`F@SOyX2z-*h)q#F)!W5KqK0@DmcWHRGJ1pK*cu71yCA&jnNi zuA(0JJ!Zh)P!CGE#J+J>)P@y-s^1m0%m-s`^r3plw~CD3_zY=Boq5K*3z&}t!;;pbfloiz@1u(PLe>fSvL2cBV zH**!bp&l^Ao%gx(vrrFMjX7|$iyy=6lrN!{;S+(U?u^KZZ;o z_CU=_AEv?isC{7->cY*amLGQK&!ASvH4MU(tL*X&#R`<0qV6{XwOUqTH$04C7`&Qi zRKO8OE-&b74DbNBadeNh^O~d!QF;E=)(QhBc`B zZ$}NuNi2;ooCVkW?9SA3z3q~*&aJ2&>k3xFH&_JAZ?IcyXVhe!k7~eC)B~QOt_$2~ zhaw8q)o~b(i%<4p<5?_&sXnw1 zs)AZ}1F$4+Lf!8w*1?op?B9^S7%~dX$EtV}qcHncYb+|h9BbiqjK(}4*)I~Eu{!0A zSQCH1YFKoey}mc9q1&(k-orweY`cGmd?t)cegYLx%daiA!@j85ehRgIZ(wqKh8o)! zs2iFcb`lmuy=hUbfo)xUjdK&GA-)}TzXO;_>;DWH|Bi>LIPu(nf-M!bwWi)_cfcH| zp(%yMu_Ky&j${c=o-N1Z2dG35kgsC}mW3HxC&5DRc(9_q)Uy%xuUV8AU@HtcZyk#zwEnM=sn3bz z7x?)Fn_v@6aglA62e!f`Snz9>4)H@*`DDbfYc!UI?n3=K7IlL^OmY5AKFT@Y@D^Q6 zIUdtfzWuG83(v3y<e7vIv4fRT*R>^Q|j$_c5nHF9qqX+-+#4eZLFqm?>rz}Bk zSQ4{PPX80X1yH{LHlzVpo^u`NgI}<%()Hml`9$OV-QT&E^EdzGL7ac|HxI=s#xplC zK8a_xP=8i(&u21Iv0NI@#A3a4o*B&z)@SrgZ7Svo@XW8oyJhjr3>pv{=$Wd-zr*{~ z3(n=4E0mMw@yr} z$$l^A`M+S4j_~~7fF`4cU@2;7j$j%*i*a}zQ(^V;o`0vTk1Dsqx!4Jh@SvZu0Og&P zJpV>_8S_xSj+OA0kIXn)R;n@=($YQEJpZ@b>imEkLxqJ{AHTz~SfZxq{|>hU)v$nC zo`1^?#txMGU^Jda&Gz)QJ^#kj18Y&k;?_TVm3>o@tM5P!$h4 zA7FRN@6_}BUnmBndS)XQ#9gR2ynRurUVk3dg|D2Mo7skyMs;O7RD?W_h1gnr!Y5uhw1^-+|Gdz z)C=@N_0TBvhM-y;g=+CY7hi4-N()tipmvOmO(co=8lIc$n;I@ss=wv*{f;3TT+!#di@QyVo0x}wH( zwkt0~Eyv@iFB(r#Lm1J?-lrC-ycN~ZgE$SJU^EWy?D>Bo-H(~I{(mN;E=tzLHXtu* zEGwbrL|1H$193E-#xm^vwYu5|jpEyihHx5=$3v($uG-x*o3SzKWBnCs8E)%gpYt!) z()!QU(~fOt>`R5MI2p6`vJF{<8j>$jL-h*P16kwj7+1y0lsn?*xDxf?_Psr`8k6<$ z{J)^AM>X^l9Es1c5YIQ=``QXKQR{U*_Q0>O36|{V`M<@ELyhecEQ)(k4ZVlzp&tG1 zkQ_rj=$!#}hm6F9l-Hn!CVZfMf$Hefjub~mTj^SCjQ`*jY&6KO>->W~(}i+T%!G3= z3fH0L%ze}r`!^26l0)q5UWb|^XHb(a`%rsb9BQ(DG?eupMdpzUgbuS6x??-yn^9wy zbh!QWYK5x58f)Mk)B}P?*k#oZb$+w+5ynss9ckZuB&r9eVtL#&(r1^+Z360v7dTfJ zjPgtn9z^Y2H&H|L0#jh%X#3%m5A~^6!Y_b>pTpf;>GsCp@<*d8l{dhY3X!PE^De3( zan8x8uKobEKkP?sJb7l=)zKQ4P+p6A!-$!-X9wUK%Acb4iPp31`FQl{hR?`oOugB5 z`GlgzIu6z4kFh6?o8$Ta2z`wHo|tR*@=>Tai$}f4N#|?STnL$G<87TYormVJ{`*ql zM*>Ij$JiX3EMbb(VVmzxCFj%ITKbRnZOGQof9utR6zs?8MVst`Br)Uzu{)%3<5<~TlYF6*VyuDXN$GAd=H0Hzt1{b ze&Fo)fi3^;oVeaTDE$WeDfm8a;kxjRp8m2ozFTD0ky*LPT4l5KwsY)CF+j!x<_AjFqs1GNz&ohG{8a4L&P#@<>_S?S; znqjQg|4uU6@lqbJe{u~$&FV|23v(W{UDy*fYd4`9^rtHi_{7%x0yVoced?K2I104` zW;Wruh-s;AQXPTAQz z2(_o5LhX2^PTOxTyD+`S|KN!2b-`KB|1*1E97lN%>YGydIlHmUMXiP+=k1G($4JVT zQDYu(!Tv2+7Zvx-Afxa3r;+FQkL>)bpI@}W=(GCEs2_;Zk_wO#k1%%wmFY3F6W=3cbMf-jElK`9DZRTc zgnSuYz@a^V5M?^af248R62BEN|BOfQZzAVOrAT*4)wtP5#D96~0(#c8b`R0q2qS43 zwjfp!qe;C;_eh(ldkNd&5==ZAyX*C}#p4c+d6%sqKe^S0fT*qLXX|u*xo0DZ-A&PueQsR-xWzrJ6 zOkThBm3OgkQM=^tt~>~9x(Ae^eg*PPNFTWK70H()uF0Hu6k`7|uL;a`K{hZ`n2KGo zDe_rkUXY%Ws*uK$o^!Rk6?ENIAW>u z5Z@=gOVZZf!Cm8f#z`F;NUce~lA4or45d;HS8*hkcXg9-j;-F@CKV>}IpaS{Sj;n= zL+a(?+c62(Unkbe#avaNsr6RidlwaRN!>{6INx7^w~otiUDJg89MV$Kbm~mRpIzO5 zkWXj-e-rvA_M`kC+)0{6%A@@!oXm4lFehu1ejxt{bqpjmpq!6%!yn=IKFms4$2eSX zv;Kci@NXMpoq1b*ko`e^4Sq`cf|QxK4iEJoq)yQI7a+A)l%p%b82pk8FOhU~A(bWH z!@LppL%YKXTV4!zYv*qMmR5B6AU|s=!gvRm@Gk zguD3+^7C}k9q+q3`p{}Xop920V)-fmjMLotKuqoKk;KL7qdqNLCE@v}$uy%vUeZsT zn5heh#ZZpJ0q&xC&J5Usc;b6lF{it{>llOE{( zmk|7o!ca^+9+NNV3Msf?0r`x?CXlj|u8?%}Bpo3CjlaZFB;S~n!=3NTwW&Clit=t! ze)sTn?)!*CJ)jeIFGw@5m!;{}{dI`3jr zaka~LbQZ%xG^#r(oi60aXYv1Am-Fkj|4*V=fO#kE>70}Kc9U-xe+%_MdJVb$G60ela`Z~kwQrqB^An&y10t< zU48KrDUx(w@4tu2|B@1q-ei)J>Jcl>#f$Ju${oqKLtT@H*fAVHY!dlS=^H|4;H%3iV}-r}Vt i61*G-QgruD=J7TxZ8*sbJy3F@w=(yE`5$;`%KZ=IqSuxH diff --git a/engine/core/locale/ru_RU/LC_MESSAGES/django.po b/engine/core/locale/ru_RU/LC_MESSAGES/django.po index 8bbee8d2..6f271f54 100644 --- a/engine/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/core/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Активен" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Если установлено значение false, этот объект не может быть виден " "пользователям без необходимого разрешения" @@ -156,7 +157,8 @@ msgstr "Доставлено" msgid "canceled" msgstr "Отменено" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Не удалось" @@ -184,11 +186,25 @@ msgstr "Моментальный" msgid "successful" msgstr "Успешный" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Схема OpenAPI в выбранном формате с выбранным языком" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Схема OpenApi3 для этого API. Формат может быть выбран через согласование " +"содержимого. Язык может быть выбран с помощью Accept-Language и параметра " +"запроса." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Ввод/вывод кэша" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -196,32 +212,36 @@ msgstr "" "Применяйте только ключ для чтения разрешенных данных из кэша.\n" "Применяйте ключ, данные и таймаут с аутентификацией для записи данных в кэш." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Получите список поддерживаемых языков" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Получите параметры приложения, которые можно использовать" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Отправьте сообщение в службу поддержки" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Запросите URL-адрес с поддержкой CORS. Допускается только https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Поиск между продуктами, категориями и брендами" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "" "Ручка глобального поиска для запросов по всем открытым таблицам проекта" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Приобрести заказ в качестве предприятия" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -229,226 +249,233 @@ msgstr "" "Приобретите заказ как бизнес, используя предоставленные `продукты` с " "`product_uuid` и `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "загрузить цифровой актив из приобретенного цифрового заказа" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Список всех групп атрибутов (простой вид)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Получение одной группы атрибутов (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Создайте группу атрибутов" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Удаление группы атрибутов" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Переписать существующую группу атрибутов с сохранением нередактируемых " "элементов" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Создайте атрибут" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Удалить атрибут" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Список всех значений атрибутов (простой вид)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Получение значения одного атрибута (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Создание значения атрибута" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Удалить значение атрибута" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Перезапись существующего значения атрибута с сохранением нередактируемых " "значений" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Список всех категорий (простой вид)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "UUID или slug категории" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Создайте категорию" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Удалить категорию" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" -msgstr "SEO Meta snapshot" +msgstr "Мета-данные для SEO" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Возвращает снимок SEO-метаданных категории." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Список всех категорий (простой вид)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные заказы." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"Поиск подстроки с учетом регистра в human_readable_id, order_products." -"product.name и order_products.product.partnumber" +"Поиск подстроки с учетом регистра в human_readable_id, " +"order_products.product.name и order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Отфильтруйте ордера с buy_time >= этому времени ISO 8601" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Отфильтруйте ордера с buy_time <= этому времени ISO 8601" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Фильтр по точному UUID заказа" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Фильтр по точному человекочитаемому идентификатору заказа" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Фильтр по электронной почте пользователя (точное совпадение без учета " "регистра)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Фильтр по UUID пользователя" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Фильтр по статусу заказа (нечувствительное к регистру подстрочное " "соответствие)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Упорядочивайте по одному из следующих признаков: uuid, human_readable_id, " "user_email, user, status, created, modified, buy_time, random. Префикс '-' " "для нисходящего порядка (например, '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Получение одной категории (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "UUID заказа или человекочитаемый идентификатор" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Создайте атрибут" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Удалить атрибут" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Покупная цена на момент заказа" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -458,19 +485,27 @@ msgstr "" "завершается с использованием баланса пользователя; если используется " "`force_payment`, инициируется транзакция." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "получить текущий отложенный ордер пользователя" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "извлекает текущий отложенный заказ аутентифицированного пользователя" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "приобретение заказа без создания учетной записи" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "завершает покупку заказа для незарегистрированного пользователя." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Добавить товар в заказ" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -478,23 +513,23 @@ msgstr "" "Добавляет товар в заказ, используя предоставленные `product_uuid` и " "`attributes`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "Добавьте список продуктов для заказа, количество не учитывается" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Добавляет список товаров в заказ, используя предоставленные `product_uuid` и " -"`attributes`." +"Добавляет список товаров в заказ, используя предоставленные `product_uuid` и" +" `attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Удалить продукт из заказа" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -502,465 +537,456 @@ msgstr "" "Удаляет товар из заказа, используя предоставленные `product_uuid` и " "`attributes`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Удалите продукт из заказа, количество не будет учитываться" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "" -"Удаляет список товаров из заказа, используя предоставленные `product_uuid` и " -"`attributes`." +"Удаляет список товаров из заказа, используя предоставленные `product_uuid` и" +" `attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные списки желаний." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Создайте атрибут" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Удалить атрибут" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "получение текущего списка желаний пользователя" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"Получает текущий ожидающий список желаний аутентифицированного пользователя" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Добавить товар в заказ" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Добавляет товар в список желаний, используя предоставленный `product_uuid`." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Удалить продукт из списка желаний" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Удаляет продукт из списка желаний, используя предоставленный `product_uuid`." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Добавьте много товаров в список желаний" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Добавляет множество товаров в список желаний, используя предоставленные " "`product_uuids`." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Удалить продукт из заказа" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Фильтр по одной или нескольким парам имя/значение атрибута. \n" "- **Синтаксис**: `attr_name=method-value[;attr2=method2-value2]...`.\n" -"- **Методы** (по умолчанию используется `icontains`, если опущено): " -"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, " -"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, " -"`gt`, `gte`, `in`.\n" -"- **Типизация значений**: JSON сначала пытается принять значение (так что вы " -"можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, " -"плавающих; в противном случае обрабатывается как строка. \n" -"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования " -"исходного значения. \n" +"- **Методы** (по умолчанию используется `icontains`, если опущено): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- **Типизация значений**: JSON сначала пытается принять значение (так что вы можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, плавающих; в противном случае обрабатывается как строка. \n" +"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования исходного значения. \n" "Примеры: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(точный) UUID продукта" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Список полей для сортировки, разделенных запятыми. Для сортировки по " -"убыванию используйте префикс `-`. \n" -"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, " -"random" +"Список полей для сортировки, разделенных запятыми. Для сортировки по убыванию используйте префикс `-`. \n" +"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Создать продукт" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Удалить продукт" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "список всех разрешенных отзывов о продукте" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Возвращает снимок метаданных SEO продукта." -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Перечислите все адреса" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Получение одного адреса" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Создайте новый адрес" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Удалить адрес" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Обновление всего адреса" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Частичное обновление адреса" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Автозаполнение ввода адреса" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Строка запроса сырых данных, пожалуйста, дополните ее данными с конечной " "точки geo-IP" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "ограничивает количество результатов, 1 < limit < 10, по умолчанию: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "список всех отзывов (простой вид)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "получить один отзыв (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "создать отзыв" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "удалить отзыв" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "список всех отношений \"заказ-продукт\" (простой вид)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "получить одно отношение \"заказ-продукт\" (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "создать новое отношение \"заказ-продукт" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "заменить существующее отношение \"заказ-продукт" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "частично обновить существующее отношение \"заказ-продукт" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "удалить отношение \"заказ-продукт" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "добавлять или удалять отзывы о связи заказ-продукт" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Список всех брендов (простой вид)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Извлечение одного бренда (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID бренда или ссылка" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Создайте бренд" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Удалить бренд" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot для бренда" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Список всех продавцов (простой вид)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Получение данных по одному поставщику (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Создать поставщика" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Удалить поставщика" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Список всех изображений товаров (простой вид)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Получение изображения одного продукта (детальный просмотр)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Создайте изображение продукта" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Удаление изображения продукта" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Список всех промокодов (простой вид)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Получение одного промокода (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Создайте промокод" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Удалить промокод" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Список всех рекламных акций (простой вид)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Получение одной акции (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Создайте рекламную акцию" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Удалить акцию" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Список всех акций (простой вид)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Получение одной акции (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Создайте запись о запасах" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Удаление записи о запасах" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " "нередактируемых полей" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Список всех тегов товара (простой вид)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Получение одной метки товара (подробный просмотр)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Создайте тег продукта" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Удаление тега продукта" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Переписать существующую категорию с сохранением нередактируемых объектов" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Переписать некоторые поля существующей категории с сохранением " @@ -1116,7 +1142,7 @@ msgstr "Кэшированные данные" msgid "camelized JSON data from the requested URL" msgstr "Camelized JSON-данные из запрашиваемого URL" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://" @@ -1202,8 +1228,8 @@ msgstr "Купить заказ" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Пожалуйста, отправьте атрибуты в виде строки, отформатированной как " "attr1=value1,attr2=value2" @@ -1281,7 +1307,8 @@ msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." @@ -1599,8 +1626,8 @@ msgstr "" #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API " -"поставщика." +"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" +" поставщика." #: engine/core/models.py:125 msgid "authentication info" @@ -1648,8 +1675,8 @@ msgid "" msgstr "" "Представляет тег продукта, используемый для классификации или идентификации " "продуктов. Класс ProductTag предназначен для уникальной идентификации и " -"классификации продуктов с помощью комбинации внутреннего идентификатора тега " -"и удобного для пользователя отображаемого имени. Он поддерживает операции, " +"классификации продуктов с помощью комбинации внутреннего идентификатора тега" +" и удобного для пользователя отображаемого имени. Он поддерживает операции, " "экспортируемые через миксины, и обеспечивает настройку метаданных для " "административных целей." @@ -1681,8 +1708,8 @@ msgid "" msgstr "" "Представляет тег категории, используемый для продуктов. Этот класс " "моделирует тег категории, который может быть использован для ассоциации и " -"классификации продуктов. Он включает атрибуты для внутреннего идентификатора " -"тега и удобного для пользователя отображаемого имени." +"классификации продуктов. Он включает атрибуты для внутреннего идентификатора" +" тега и удобного для пользователя отображаемого имени." #: engine/core/models.py:254 msgid "category tag" @@ -1706,8 +1733,8 @@ msgid "" msgstr "" "Представляет собой объект категории для организации и группировки связанных " "элементов в иерархическую структуру. Категории могут иметь иерархические " -"отношения с другими категориями, поддерживая отношения \"родитель-ребенок\". " -"Класс включает поля для метаданных и визуального представления, которые " +"отношения с другими категориями, поддерживая отношения \"родитель-ребенок\"." +" Класс включает поля для метаданных и визуального представления, которые " "служат основой для функций, связанных с категориями. Этот класс обычно " "используется для определения и управления категориями товаров или другими " "подобными группировками в приложении, позволяя пользователям или " @@ -1763,7 +1790,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Представляет объект Brand в системе. Этот класс обрабатывает информацию и " "атрибуты, связанные с брендом, включая его название, логотипы, описание, " @@ -1812,8 +1840,8 @@ msgstr "Категории" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1906,8 +1934,8 @@ msgstr "" "цифровой статус, название, описание, номер детали и метка. Предоставляет " "связанные с ним полезные свойства для получения оценок, количества отзывов, " "цены, количества и общего числа заказов. Предназначен для использования в " -"системе, которая занимается электронной коммерцией или управлением запасами. " -"Этот класс взаимодействует со связанными моделями (такими как Category, " +"системе, которая занимается электронной коммерцией или управлением запасами." +" Этот класс взаимодействует со связанными моделями (такими как Category, " "Brand и ProductTag) и управляет кэшированием часто используемых свойств для " "повышения производительности. Он используется для определения и " "манипулирования данными о товаре и связанной с ним информацией в приложении." @@ -1965,8 +1993,8 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Представляет атрибут в системе. Этот класс используется для определения и " @@ -2037,12 +2065,12 @@ msgstr "Атрибут" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Представляет собой конкретное значение для атрибута, связанного с продуктом. " -"Он связывает \"атрибут\" с уникальным \"значением\", позволяя лучше " +"Представляет собой конкретное значение для атрибута, связанного с продуктом." +" Он связывает \"атрибут\" с уникальным \"значением\", позволяя лучше " "организовать и динамически представить характеристики продукта." #: engine/core/models.py:788 @@ -2060,8 +2088,8 @@ msgstr "Конкретное значение для этого атрибута #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2111,8 +2139,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Представляет рекламную кампанию для товаров со скидкой. Этот класс " "используется для определения и управления рекламными кампаниями, " @@ -2188,15 +2216,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Представляет документальную запись, связанную с продуктом. Этот класс " "используется для хранения информации о документальных записях, связанных с " "конкретными продуктами, включая загруженные файлы и их метаданные. Он " "содержит методы и свойства для обработки типа файла и пути хранения " -"документальных файлов. Он расширяет функциональность определенных миксинов и " -"предоставляет дополнительные пользовательские возможности." +"документальных файлов. Он расширяет функциональность определенных миксинов и" +" предоставляет дополнительные пользовательские возможности." #: engine/core/models.py:998 msgid "documentary" @@ -2212,14 +2240,14 @@ msgstr "Неразрешенные" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Представляет адресную сущность, включающую сведения о местоположении и " "ассоциации с пользователем. Обеспечивает функциональность для хранения " @@ -2295,8 +2323,8 @@ msgstr "" "Представляет промокод, который можно использовать для получения скидки, " "управляя его сроком действия, типом скидки и применением. Класс PromoCode " "хранит информацию о промокоде, включая его уникальный идентификатор, " -"свойства скидки (размер или процент), срок действия, связанного пользователя " -"(если таковой имеется) и статус его использования. Он включает в себя " +"свойства скидки (размер или процент), срок действия, связанного пользователя" +" (если таковой имеется) и статус его использования. Он включает в себя " "функциональность для проверки и применения промокода к заказу, обеспечивая " "при этом соблюдение ограничений." @@ -2372,8 +2400,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Следует определить только один тип скидки (сумма или процент), но не оба или " -"ни один из них." +"Следует определить только один тип скидки (сумма или процент), но не оба или" +" ни один из них." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2388,13 +2416,13 @@ msgstr "Неверный тип скидки для промокода {self.uui msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"Представляет заказ, оформленный пользователем. Этот класс моделирует заказ в " -"приложении, включая его различные атрибуты, такие как информация о " +"Представляет заказ, оформленный пользователем. Этот класс моделирует заказ в" +" приложении, включая его различные атрибуты, такие как информация о " "выставлении счета и доставке, статус, связанный пользователь, уведомления и " "связанные операции. Заказы могут иметь связанные продукты, к ним можно " "применять рекламные акции, устанавливать адреса и обновлять данные о " @@ -2432,8 +2460,8 @@ msgstr "Статус заказа" #: engine/core/models.py:1243 engine/core/models.py:1769 msgid "json structure of notifications to display to users" msgstr "" -"JSON-структура уведомлений для отображения пользователям, в административном " -"интерфейсе используется табличный вид" +"JSON-структура уведомлений для отображения пользователям, в административном" +" интерфейсе используется табличный вид" #: engine/core/models.py:1249 msgid "json representation of order attributes for this order" @@ -2486,7 +2514,8 @@ msgstr "Вы не можете добавить больше товаров, ч #: engine/core/models.py:1395 engine/core/models.py:1420 #: engine/core/models.py:1428 msgid "you cannot remove products from an order that is not a pending one" -msgstr "Вы не можете удалить товары из заказа, который не является отложенным." +msgstr "" +"Вы не можете удалить товары из заказа, который не является отложенным." #: engine/core/models.py:1416 #, python-brace-format @@ -2571,7 +2600,8 @@ msgid "feedback comments" msgstr "Комментарии к отзывам" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" @@ -2619,7 +2649,8 @@ msgstr "Покупная цена на момент заказа" #: engine/core/models.py:1763 msgid "internal comments for admins about this ordered product" -msgstr "Внутренние комментарии для администраторов об этом заказанном продукте" +msgstr "" +"Внутренние комментарии для администраторов об этом заказанном продукте" #: engine/core/models.py:1764 msgid "internal comments" @@ -2715,15 +2746,15 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Представляет функциональность загрузки цифровых активов, связанных с " "заказами. Класс DigitalAssetDownload предоставляет возможность управления и " "доступа к загрузкам, связанным с продуктами заказа. Он хранит информацию о " -"связанном с заказом продукте, количестве загрузок и о том, является ли актив " -"общедоступным. Он включает метод для генерации URL-адреса для загрузки " +"связанном с заказом продукте, количестве загрузок и о том, является ли актив" +" общедоступным. Он включает метод для генерации URL-адреса для загрузки " "актива, когда связанный заказ находится в состоянии завершения." #: engine/core/models.py:1961 @@ -2782,12 +2813,11 @@ msgstr "Привет %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" -"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш " -"заказ в работу. Ниже приведены детали вашего заказа:" +"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш" +" заказ в работу. Ниже приведены детали вашего заказа:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2897,8 +2927,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены " @@ -2971,9 +3000,10 @@ msgstr "Параметр NOMINATIM_URL должен быть настроен!" #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Размеры изображения не должны превышать w{max_width} x h{max_height} пикселей" +"Размеры изображения не должны превышать w{max_width} x h{max_height} " +"пикселей" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2982,27 +3012,27 @@ msgstr "" "Он обеспечивает включение в ответ заголовка типа содержимого, " "соответствующего типу XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" "Обрабатывает подробный ответ на просмотр карты сайта. Эта функция " -"обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и " -"устанавливает заголовок Content-Type для XML." +"обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и" +" устанавливает заголовок Content-Type для XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Возвращает список поддерживаемых языков и соответствующую информацию о них." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Возвращает параметры сайта в виде объекта JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3010,73 +3040,69 @@ msgstr "" "Выполняет операции с кэшем, такие как чтение и установка данных кэша с " "заданным ключом и таймаутом." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Обрабатывает отправленные формы `contact us`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" "Обрабатывает запросы на обработку и проверку URL из входящих POST-запросов." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Обрабатывает глобальные поисковые запросы." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Работает с логикой покупки как бизнеса без регистрации." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Обрабатывает загрузку цифрового актива, связанного с заказом.\n" -"Эта функция пытается обслужить файл цифрового актива, расположенный в " -"каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, " -"указывающая на недоступность ресурса." +"Эта функция пытается обслужить файл цифрового актива, расположенный в каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "требуется order_product_uuid" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "заказанный товар не существует" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Вы можете загрузить цифровой актив только один раз" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "заказ должен быть оплачен до загрузки цифрового актива" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "У заказанного продукта нет продукта" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon не найден" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Обрабатывает запросы на фавикон веб-сайта.\n" -"Эта функция пытается обслужить файл favicon, расположенный в статической " -"директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, " -"указывающая на недоступность ресурса." +"Эта функция пытается обслужить файл favicon, расположенный в статической директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Перенаправляет запрос на индексную страницу админки. Функция обрабатывает " @@ -3084,7 +3110,7 @@ msgstr "" "администратора Django. Для обработки HTTP-перенаправления используется " "функция Django `redirect`." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Возвращает текущую версию eVibes." @@ -3098,16 +3124,17 @@ msgid "" msgstr "" "Определяет набор представлений для управления операциями, связанными с " "Evibes. Класс EvibesViewSet наследует от ModelViewSet и предоставляет " -"функциональность для обработки действий и операций над сущностями Evibes. Он " -"включает в себя поддержку динамических классов сериализаторов в зависимости " -"от текущего действия, настраиваемые разрешения и форматы рендеринга." +"функциональность для обработки действий и операций над сущностями Evibes. Он" +" включает в себя поддержку динамических классов сериализаторов в зависимости" +" от текущего действия, настраиваемые разрешения и форматы рендеринга." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Представляет собой набор представлений для управления объектами " "AttributeGroup. Обрабатывает операции, связанные с AttributeGroup, включая " @@ -3136,15 +3163,15 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Набор представлений для управления объектами AttributeValue. Этот набор " "представлений предоставляет функциональность для перечисления, извлечения, " "создания, обновления и удаления объектов AttributeValue. Он интегрируется с " "механизмами наборов представлений Django REST Framework и использует " -"соответствующие сериализаторы для различных действий. Возможности фильтрации " -"предоставляются через DjangoFilterBackend." +"соответствующие сериализаторы для различных действий. Возможности фильтрации" +" предоставляются через DjangoFilterBackend." #: engine/core/viewsets.py:214 msgid "" @@ -3155,8 +3182,8 @@ msgid "" "can access specific data." msgstr "" "Управляет представлениями для операций, связанных с категорией. Класс " -"CategoryViewSet отвечает за обработку операций, связанных с моделью Category " -"в системе. Он поддерживает получение, фильтрацию и сериализацию данных " +"CategoryViewSet отвечает за обработку операций, связанных с моделью Category" +" в системе. Он поддерживает получение, фильтрацию и сериализацию данных " "категории. Набор представлений также обеспечивает соблюдение прав доступа, " "чтобы только авторизованные пользователи могли получить доступ к " "определенным данным." @@ -3199,10 +3226,10 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Представляет собой набор представлений для управления объектами Vendor. Этот " -"набор представлений позволяет получать, фильтровать и сериализовать данные о " -"поставщиках. Он определяет наборы запросов, конфигурации фильтров и классы " -"сериализаторов, используемые для выполнения различных действий. Цель этого " +"Представляет собой набор представлений для управления объектами Vendor. Этот" +" набор представлений позволяет получать, фильтровать и сериализовать данные " +"о поставщиках. Он определяет наборы запросов, конфигурации фильтров и классы" +" сериализаторов, используемые для выполнения различных действий. Цель этого " "класса - обеспечить упрощенный доступ к ресурсам, связанным с Vendor, через " "фреймворк Django REST." @@ -3211,8 +3238,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Представление набора представлений, обрабатывающих объекты Feedback. Этот " @@ -3228,35 +3255,36 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet для управления заказами и связанными с ними операциями. Этот класс " "предоставляет функциональность для получения, изменения и управления " -"объектами заказов. Он включает в себя различные конечные точки для обработки " -"операций с заказами, таких как добавление или удаление продуктов, выполнение " -"покупок для зарегистрированных и незарегистрированных пользователей, а также " -"получение информации о текущих заказах аутентифицированного пользователя. " -"ViewSet использует несколько сериализаторов в зависимости от конкретного " -"выполняемого действия и соответствующим образом устанавливает разрешения при " -"взаимодействии с данными заказа." +"объектами заказов. Он включает в себя различные конечные точки для обработки" +" операций с заказами, таких как добавление или удаление продуктов, " +"выполнение покупок для зарегистрированных и незарегистрированных " +"пользователей, а также получение информации о текущих заказах " +"аутентифицированного пользователя. ViewSet использует несколько " +"сериализаторов в зависимости от конкретного выполняемого действия и " +"соответствующим образом устанавливает разрешения при взаимодействии с " +"данными заказа." #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Предоставляет набор представлений для управления сущностями OrderProduct. " "Этот набор представлений позволяет выполнять CRUD-операции и " "пользовательские действия, специфичные для модели OrderProduct. Он включает " -"фильтрацию, проверку прав доступа и переключение сериализатора в зависимости " -"от запрашиваемого действия. Кроме того, он предоставляет подробное действие " -"для обработки отзывов об экземплярах OrderProduct" +"фильтрацию, проверку прав доступа и переключение сериализатора в зависимости" +" от запрашиваемого действия. Кроме того, он предоставляет подробное действие" +" для обработки отзывов об экземплярах OrderProduct" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " @@ -3284,8 +3312,8 @@ msgstr "Выполняет операции, связанные с данным msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3326,9 +3354,8 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"Обрабатывает операции, связанные с тегами продуктов в приложении. Этот класс " -"предоставляет функциональность для получения, фильтрации и сериализации " +"Обрабатывает операции, связанные с тегами продуктов в приложении. Этот класс" +" предоставляет функциональность для получения, фильтрации и сериализации " "объектов Product Tag. Он поддерживает гибкую фильтрацию по определенным " "атрибутам с помощью указанного бэкэнда фильтрации и динамически использует " "различные сериализаторы в зависимости от выполняемого действия." - diff --git a/engine/core/locale/sv_SE/LC_MESSAGES/django.mo b/engine/core/locale/sv_SE/LC_MESSAGES/django.mo index 0eff49b2493bbc4b9103eebe9949634e349e2014..e1584aca911233fd6e72bbb574a36c0f808f6107 100644 GIT binary patch delta 14991 zcmZ|V37pMU|iYrk{5o5^`3N1>C zETxpD6k1d&w9!IRM55(U|IhcHGoGiO=l^@X&b-g|JLmk)IlpsfTeu}`|IV=B7gb6v zGhA~@7*iJ$su?q?q%mFMlxxiTcE*rp9>MV*V|HR$(lt65QwC$OJjP-aw#HgG0K?Fa zRWJi-*380EI0t7L6Eyb_Q3IuujETg`SREVSQcS|q_ztSx5$w)DzQp>Zy`AVBdtz;z zf;)JadDxM3=dQNB0%YuFfpcHTpfOj7=n0#5Go}glL?5POJv@Xn>F|3TglXN4Va#S{ z4`YVnIlPR?J&kz|+xIf20`OV(~QMe=x8mDBt5RLF*lLkfxR%Izin^W0P7g6Pdz_s3GTrlvuN%o zvJBtA7#uUunALbYmd2Wcj0wkjsF`YpL+PM9YA-Av%yQr=e3JYbL)b^yXc%p=6vKua zbDZ)mHyBeu{`?zRGW>HS>))S9lbemX8K;io$++R*Xk%8A4!^~i=kc*|ECUUUnZPC` z9qTjZXY4)Em=@$Gr6B1vyh!>XzcHgpFPLmhKiWH$$^(*aImHfee}*x+s$h8v>S7TUW3eP7Jv*HZO8)uVjETqS8FsVw!B(WRu_dlYEy??+ zx8gW9#1gmL`7l6d;7nJr2|JPT9@fV4chCtocJ@Mb?8DG&gw;szLv7NJQ8RZA zD`Cf(_I&7vHAoLb?V&V`#sXxs2TdW7o5*+=*+1qNOvc``2sjsYfE>VP_!(BkvMgOi ztcxmdhK${G!^Zd`>a96}5qJu#<0Vx6^0T$1B%+DvwQGT)k)uZ34|O0-Kt179RQbKA z{FTnls3qHjnz{X`0iHxJ{(?=h#+{sw*aNj>0c=YD<}o5__3WY=!EuH>#uIERFT_%~0`-7vQ0;HLi}}}@JWqxiIEdO*pP+8| z0d>O#RL8%eW}xg`Yi(5h1k{@MKrKxwY6)+3<%>{DvJo}#-Kc&K&1L>Il9R5&1*}Cn zY@Rg+Ro)SGV?We@#$p1dpf=@VREICS^byp_YVNilLLE^LkdJzRInJd)A{y~ys0MbS zp6FfFh`&a4d<8Y)^7q&Qc~K3uMAhqw8u&fmuAJ&Ama ztub!CU5YW-j&vHTgSDt9*oGSLJ}iqLp!UG0s7-YS>*Ft27Hi&X+wo#6(j!p=n2!uB zXqFJ^PR0(@h%cj_tn__$S4W}JF{lPxxpXHiM|vQ}<4Ej)vvCvdM%5p;z|LGMwk16i z!*ClW>HXhLq%#>8P$O)9zg^?;7)Lr4^+XS16WoUC=oso;sQiGP+IZB`bwMu({GHPjtp$2#lmceIHOS2nQ z?*M9`pJFqt`k?)^Ohzqf4hH)Xxr<0Qd5wG zW88}k@f(c6vP?VpwrCVbk z9OUwsIoG0=?r~H*J5jIm9@LY5fK~BZjKbegGgT$H+!lDTG#PC%5j&&a+bK8-AHeo_ z8nxT&t+4g_qIUCi)Bt9pI=mk%;W|`DTd^*_j9xsB2^jo?h;EE~$iDX-P!)TlrpkwU z^4X{XuEt1w6xG0Xtbr#`9bUmCEVI(S4c#%E^o>{nC!*TVM)pY1EFjX3jK@*C_;csC zs44pqJD_Kk-FzLfE$LKL{u=C!M^H0XYc+2Mc0qNx5Ub%T)J$zfoeMj#jNbpfMAXrK z)Kncu&B%8y{|f2}Dy*?j9)&88M|F^dD(~&ehoL%{h_x`o<tf|~_K6Zv^*dl9_CsyTTd@~zMK%00>McoFZ}&_9HNe|Z z173_VxOzSFuQl64hWrBcK6@Uq=~&bh_D8LG3Ti+rQ8Ta;$KXC3fzglJy)YH~sT{RQ z%?3LI%~5+{FlwnMZ3x;9rjnsGS%9r@m-7tjV5+mx&PXq3HY$H5cEWuakN?6J*kqI4 ztRqnan2T!vIn;fhqn08p_?T@t5tT6tRdEig;b*Wbp25}_`?ww8Xw+2SkIH|;rGG^& zO{*tty$Q}GsQlMaOZGErMuSbCw4Z+Cu?-okQ4PL_dM!(AwojCVnwd20gR8Iye&y1Q zp0WeY#O~y8cAj^VNV`2_&-i?7 zOnL=I;LF$m51|gGb2t|N!iqR{t9`vQFpP8%b>BQ}sQ15+NNF;5VGG=gjLe*K`K_L{ zsC8#!>QPa^iu4CFQA_MGHMDvJM95g2K9PY#fI1%>)iI?q@cSr59RBVlBQA-xAx7Rk<6ICz|2jFgOkELF*9d$-^l!n?og{Thq zxcqN1nsnr=9Mc}29&3><+()ORx1ip#>P7a+>moA|G|hsOu-W@{paoewBI@W29xTE1zeyvc zj~uWc8qo*s@A})*!iQT2+j#*Ptn=uzl;aW_<4fr4) zM(qjTaXzr{UM!DEpW4^77iy+P-~!suKn?iHXUzX4BA(CLu@qd!KKS~V#@xYDgrB4$ z>3hHC`!y{5hCyP#Q+)2@^3(kEgBQPJpHP3s_xAUDKmNc66ZtF7@uNNM&-lrNDHUyWH$I_D2#PGIC!ri}axf7+(qc#Bl2p=WE!B{NP0*Ixw0?ctUG7 z5!;c@!mhXho8U=I!m<@Tq21mCHShxLgO6i9JnyVn$rIWm%~AJ_#%@@Ms`r64Xf6;L zKt^PwC$ve%qGlq1dZOD=yLu67SFc764)Yvl;EOmOn^g9g;dnQW#$%{W*tUv&pk!3X z1*rU`SY7Y`IwBj$*n!&BqpEsBug%?9jr9Gf8y<1#r%_9=4>gdZ7=b5I13ZtFFpLdV z8>?eQY>9fHWQ@cSs9$256e4;(valA;!$!Cco8jxIDf|iBV|;bHmJ_fF=?Ae4Zop`K z3N_#ZsP>Ma27J!thjGX#9f?6rbu1B$FcD+0t4rU4dcsW9W-LH0MG&>A7N9!XdDIM*scGw1N4*u^nx0^&pfwp9KzD42LtKS?)ax=2^$o>+s3%^5YH%}Z zDtDuv^Z;rmzDC`57B!%sP#uOv*(a}wY9}!&=n0){J;+c)Ij9?EJC~u>Y_luhi@NbW zSN@etUqMZ2`C6XPhfsY~y-v4*4c|VLNJse~44%E4_5moPf)PTbq zu%vqb8!3WGs1s@+>Pa$CQ#KdJ<7!O7KX43AXlQr&OQ^Nphu7f|)DzckWH((LY9?Bs z26i24$#O9C{;wsX-MYOPZAGDFC@%H2!j14HrcIm~aP4gV;hIdg*bP@Grm7ChV(g(Gs zLr_O>Dr&FHbLoYs&H6Oz#Ju9lO9Y$QC#rxtv0_jSHA0epr$qr)xq5^U5MHv&!O6X6IK5hYGB`B zP$RwMG9udA0YsywE*7<>ld%cT$7I}!UObO67}?Ha@~|c9#M^*gJcN3nA5b%M8RM~3 zd;8sTVtd~IK4eTMqbI(CL$E{#yQ_zz-iA@AkxxZ+c!zTh>a~2yrB66blC9@O9qrvw z=fDiq`LQ0;@cAU(|FJ}(J9@-^yY9g5ohcc9+u&8V5%?#kcB7Nmd0 zRv6dW)*p>cNzZp~cYc8#$S)V{VyC1Bs)G#YO4P1>)0JOBO>Modw%+xq0S2%&u17Wa zA!;TobhA@D81=fXa2|H~<&y1N5FAdV7Zny^Up0W8v2J(!jmXWY^h)fFAED~k?qSQv zp$?pNsHy%O^_ft!r>%Dj>UDbrhvOHhC2rNrqkmcnnmdW8;3%qtX1(n<7P+YOE2#2P z*V!ey35Sw?5(nY$I0E}#Z_C%9Iyi?qsJivBM|O^LAyy%O3&!dFf0c+%s53Yne?{%u z+`e|R%)l_x3sLX+Qq)qcM;*Oyp_bx39FKpX&Wkbq>^U(3wfoah_f13fw-&3>zu7`W z9lnMd+1sf1^-I(_Z~-;t;r;E}4#mev7orB-X@LC^ZX4=tI*oeGS`74r{*E{bwKvwI zX5=WwVYxxP|H^1hL>){*t>NRS22NrltT5QVJ}ptZd?ac~?nZr>977#Um4?{e-wOwl zE@IJC z>NpGaWC7F@%|S0NL>(|&QBPQeTGB62uk!_Li1lu;Gu|^uL=D}I*|-!n(vmmY23w$> zY$&Rub*R1Z6zX7k88rjnq0W9Y(mrtnhE6`z>o^0G@m18!=pV%rA(%u&YnO`MaWxLY z&s>G3H+%GddS(==-ci(&g^#lJ5>N-s3>=NyQSW=j(YAvDs2QB$(i>3&{}9=PLGvdO zt$pkmkMZD3gwuq-l;A2`fRL*?_^LvA@x>cv z*wf~Em&fOgVJn#<1YO?|UQt~Ae?_FMD;P(b6ViNvdkM=4-;n;DpjS%QBgFR+vWVYF z2b|cUe?V-Dn?p71muEn)XYs|}GfxnTFa07bcspORTqdu(;Z-(#Mue`<@HC+usqxg? zqB7z`h(F-!sA7N8y4qqZ!tJi?kn?HE-gNPOp_=x~Va^|OKk@e|oaG88JHI1uJK;te zEQhz@Q&@p;iaH*gfh(~1sz@DObDZ-inCIfn zskqGE8~Qqu27acDk8abEcmV6*VOQr_pPkv#n}ve4z%AkO&|`ll3S^>z7!$REY| z6T18)_=ql=FA;^np^9I-Llu$*)QH)0L}%8N^R2;;uH-Yevx7@)2dx#HYEk z1mgF&c(9PdI|w7lxPbjIm2if5fQnOHMRAZkoqomFx1^^N+PaKM)K4Kk8Fkgg>uogj zPYmTq4|ioctT?!Wp*FiKumAG`w_8`wg`SZlL z5#K}DPtdiNaJwQdt!M#tbt=B7_1{Rr1m$x5Ldc;oPI-h=ggS&|@_)cD3A%jL`3uLB zUP2f{x)GrVc`v&Wa~>VvafnLes#5WmPh&l08(pHH4XsPtiWovU|0WmO4$XBPTB0G}H{^Dzls`2;?k zLYJ2t77?%IZhV>Cb%Yr524O2#Z#HpVS4mgGR9F8?;_niwk$)D8ufddmK;mZdtA#Q( z|6KJbm`diS1pPd)n=ps)J?YMr?I*75CelXbPXfFI`MhLFXK}Q7l&5*g&>5dVeHjG%8sf)&U-Q(V&-O<_rbpYSk2*M}DK03IiAAwl0@ zyyx;o4MGI%ZO2~;_YvN4_g8U}Wp?Td*PmMdjubpbc!-SNZq%1T#rDe!kWPLR*FdDJ z(~0~I*gRc;}>OP!>I|<>GWuv~q?M*1Y7842H zO@Xdq7So5ydx-ywu!gXL@F_u8U&`LJ(a_&`75#=VfqY%tEZ4qPc5N%;YZs3q{-mpM zkNrW2>7ap!sBlYR{Z>^&Kaz|fXFWMLU`t6@!ficBcgGk!f@KIbiLawvR}mqe_^U2G zp7c_}P(mf@%_YCDEBgTT{*57cDSrWH+V$tGBN0z#5;qlJO^7EG+7k{?ew>0Xgk8lI z@OwgO%Aa$2N1d_MA5Hj*^j>W3^2NKPOAsCo<*_A768RSyz3_cPJK{a@PC_HXkEGWS z&Jv2R^28HJ93XThWVnLb3}z@{nX9|f<%=PNILaClbloE9-#kd=ON0i5Y%*JsSC^pc z9l}DwEtGYqY%L}djuCXVz|RT82u(@r53bJ;ZxJfBU%rM+@=g%CsZ*{<;<|#v^_9$z zp#veEg07@93Aw~?BMc`0C2Z<$CTZG}z5}nrF9^R8uZ34|HuY{sUG*$xBDND7eaNQb`r%7!Y0Xu@nV-@<8BJQ=D$!dPZK)6#w3Njcd8e|Er|?N7}Kq!0E5 z(sQyCy#rml-hbW_>b}RMN&ehG^J|rS*(u(s1^&F-yt%$SUzR`M&+|^q38W=%|D*q1 zv4yMh+BWz5@+PIxd0@KVpY6@f%SkDi6v$7Y{Qw>3rTg=}YGq;`U-P%Wop-icg3p_h zo|+!;WqN)2`Tl@+a$ZiBH@ARxeEG~rabZqgia&4rmV2gEj7Z6$ne3c^*MDnz{`RWN z=T(SD|NdN4E_s{ZeGv%S88KpK6f^L*Da*uVAjzwZ58SAVHOThqD>jswnTC5$wfQ!yea-b!1uRJk-?^zRHH^#m837^RkJG zH$WggGc&bl6AP;jvsIK)v@0_o9_hrF&9r5w`11VbAGat!z{L5zMLV8DUbcVN Ksg9l}>i!>*S8=fb delta 13833 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 zle\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "Är aktiv" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Om det är inställt på false kan objektet inte ses av användare utan " "nödvändigt tillstånd" @@ -154,7 +155,8 @@ msgstr "Levereras" msgid "canceled" msgstr "Annullerad" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Misslyckades" @@ -182,44 +184,60 @@ msgstr "Momental" msgid "successful" msgstr "Framgångsrik" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "OpenAPI-schema i valt format med valt språk" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3-schema för detta API. Format kan väljas via innehållsförhandling. " +"Språk kan väljas med både Accept-Language och frågeparameter." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Cache I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" "Använd endast en nyckel för att läsa tillåtna data från cacheminnet.\n" -"Använd nyckel, data och timeout med autentisering för att skriva data till " -"cacheminnet." +"Använd nyckel, data och timeout med autentisering för att skriva data till cacheminnet." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Hämta en lista över språk som stöds" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Hämta applikationens exponerbara parametrar" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Skicka ett meddelande till supportteamet" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Begär en CORSed URL. Endast https tillåtet." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Sök mellan produkter, kategorier och varumärken" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Global sökpunkt för att söka i projektets alla tabeller" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Köpa en order som ett företag" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -227,213 +245,222 @@ msgstr "" "Köp en order som ett företag, med hjälp av de tillhandahållna `produkterna` " "med `produkt_uuid` och `attribut`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "ladda ner en digital tillgång från en köpt digital order" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Lista alla attributgrupper (enkel vy)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Hämta en enskild attributgrupp (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Skapa en attributgrupp" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Ta bort en attributgrupp" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Skriva om en befintlig attributgrupp och spara icke-redigerbara attribut" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Skriv om vissa fält i en befintlig attributgrupp och spara icke-redigerbara " "fält" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Lista alla attribut (enkel vy)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Hämta ett enskilt attribut (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Skapa ett attribut" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Ta bort ett attribut" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Skriva om ett befintligt attribut och spara icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara fält" +"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara " +"fält" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Lista alla attributvärden (enkel vy)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Hämta ett enskilt attributvärde (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Skapa ett attributvärde" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Ta bort ett attributvärde" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "Skriva om ett befintligt attributvärde som sparar icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" "Skriva om vissa fält i ett befintligt attributvärde och spara icke-" "redigerbara fält" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Lista alla kategorier (enkel vy)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Hämta en enskild kategori (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Kategori UUID eller slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Skapa en kategori" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Ta bort en kategori" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Skriva om en befintlig kategori som sparar icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "Skriva om vissa fält i en befintlig kategori spara icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Returnerar en ögonblicksbild av kategorins SEO-metadata" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Lista alla kategorier (enkel vy)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "För användare som inte är anställda returneras endast deras egna " "beställningar." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Substringsökning utan skiftlägeskänslighet över human_readable_id, " "order_products.product.name och order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Filtrera order med buy_time >= denna ISO 8601-datumtid" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Filtrera order med buy_time <= denna ISO 8601-datumtid" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Filtrera efter exakt order UUID" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Filtrera efter exakt mänskligt läsbart order-ID" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" -"Filtrera efter användarens e-post (exakt matchning utan skiftlägeskänslighet)" +"Filtrera efter användarens e-post (exakt matchning utan " +"skiftlägeskänslighet)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Filtrera efter användarens UUID" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "Filtrera efter orderstatus (skiftlägeskänslig matchning av delsträng)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Ordna efter en av följande: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Prefix med \"-\" för fallande " "ordning (t.ex. \"-buy_time\")." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Hämta en enskild kategori (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Order UUID eller mänskligt läsbart id" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Skapa ett attribut" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Fungerar inte för användare som inte är anställda." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Ta bort ett attribut" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Skriva om en befintlig kategori som sparar icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "Skriva om vissa fält i en befintlig kategori spara icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Inköpspris vid ordertillfället" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -442,19 +469,27 @@ msgstr "" "Slutför orderköpet. Om `force_balance` används, slutförs köpet med " "användarens saldo; Om `force_payment` används, initieras en transaktion." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "hämta aktuell pågående order för en användare" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "hämtar en aktuell väntande order för en autentiserad användare" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "köpa en order utan att skapa ett konto" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "slutför orderköpet för en icke registrerad användare." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Lägg till en produkt i ordern" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -462,11 +497,11 @@ msgstr "" "Lägger till en produkt till en order med hjälp av de angivna `product_uuid` " "och `attributes`." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "Lägg till en lista med produkter till ordern, kvantiteter räknas inte" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -474,23 +509,23 @@ msgstr "" "Lägger till en lista med produkter till en order med hjälp av de angivna " "`product_uuid` och `attributes`." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Ta bort en produkt från ordern" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -"Tar bort en produkt från en order med hjälp av de angivna `product_uuid` och " -"`attributen`." +"Tar bort en produkt från en order med hjälp av de angivna `product_uuid` och" +" `attributen`." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Ta bort en produkt från ordern, kvantiteter räknas inte" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -498,438 +533,433 @@ msgstr "" "Tar bort en lista med produkter från en order med hjälp av de angivna " "`product_uuid` och `attributes`." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Lista alla attribut (enkel vy)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"För användare som inte är anställda returneras endast deras egna önskelistor." +"För användare som inte är anställda returneras endast deras egna " +"önskelistor." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Hämta ett enskilt attribut (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Skapa ett attribut" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Fungerar inte för användare som inte är anställda." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Ta bort ett attribut" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Skriva om ett befintligt attribut och spara icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara fält" +"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara " +"fält" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "hämta aktuell väntande önskelista för en användare" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "hämtar en aktuell väntande önskelista för en autentiserad användare" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Lägg till en produkt i ordern" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Lägger till en produkt i en önskelista med hjälp av den angivna " "`product_uuid`." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Ta bort en produkt från önskelistan" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Tar bort en produkt från en önskelista med hjälp av den angivna " "`product_uuid`" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Lägg till många produkter på önskelistan" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Lägger till många produkter till en önskelista med hjälp av de angivna " "`product_uuids`" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Ta bort en produkt från ordern" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Tar bort många produkter från en önskelista med hjälp av de angivna " "`product_uuids`" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filtrera efter ett eller flera attributnamn/värdepar. \n" "- **Syntax**: `attr_namn=metod-värde[;attr2=metod2-värde2]...`\n" -"- **Metoder** (standard är `icontains` om den utelämnas): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- **Värde typning**: JSON prövas först (så att du kan skicka listor/dikter), " -"`true`/`false` för booleaner, heltal, flottörer; annars behandlas som " -"sträng. \n" +"- **Metoder** (standard är `icontains` om den utelämnas): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- **Värde typning**: JSON prövas först (så att du kan skicka listor/dikter), `true`/`false` för booleaner, heltal, flottörer; annars behandlas som sträng. \n" "- **Base64**: prefix med `b64-` för URL-säker base64-kodning av råvärdet. \n" "Exempel på detta: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-beskrivning=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Lista alla produkter (enkel vy)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(exakt) UUID för produkt" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Kommaseparerad lista över fält att sortera efter. Prefix med `-` för " -"fallande. \n" +"Kommaseparerad lista över fält att sortera efter. Prefix med `-` för fallande. \n" "**Tillåtna:** uuid, betyg, namn, slug, skapad, modifierad, pris, slumpmässig" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Hämta en enskild produkt (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Skapa en produkt" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Skriva om en befintlig produkt och bevara icke redigerbara fält" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Uppdatera vissa fält i en befintlig produkt och bevara icke redigerbara fält" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Ta bort en produkt" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "listar alla tillåtna återkopplingar för en produkt" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Returnerar en ögonblicksbild av produktens SEO-metadata" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Lista alla adresser" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Hämta en enskild adress" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Skapa en ny adress" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Ta bort en adress" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Uppdatera en hel adress" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Delvis uppdatera en adress" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Autokomplettering av adressinmatning" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "Frågesträng för rådata, komplettera med data från geo-IP-slutpunkt" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "begränsar resultatmängden, 1 < limit < 10, standard: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "lista alla återkopplingar (enkel vy)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "hämta en enskild feedback (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "skapa en återkoppling" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "ta bort en återkoppling" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "skriva om en befintlig feedback och spara icke-redigerbara filer" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "skriva om vissa fält i en befintlig feedback och spara icke-redigerbara fält" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "lista alla order-produktrelationer (enkel vy)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "hämta en enskild order-produktrelation (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "skapa en ny relation mellan order och produkt" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "ersätta en befintlig order-produktrelation" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "delvis uppdatera en befintlig order-produktrelation" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "ta bort en order-produktrelation" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "lägga till eller ta bort feedback om en order-produktrelation" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Lista alla varumärken (enkel vy)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Hämta ett enskilt varumärke (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "UUID eller slug för varumärke" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Skapa ett varumärke" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Ta bort ett varumärke" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" "Skriva om ett befintligt varumärke och spara icke-redigerbara produkter" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Skriva om vissa fält i ett befintligt varumärke och spara icke-redigerbara " "fält" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot for brand" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Lista alla leverantörer (enkel vy)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Hämta en enskild leverantör (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Skapa en leverantör" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Ta bort en leverantör" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Skriva om en befintlig leverantör och spara icke-redigerbara filer" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Skriva om vissa fält i en befintlig leverantör och spara icke-redigerbara " "fält" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Lista alla produktbilder (enkel vy)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Hämta en enskild produktbild (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Skapa en produktbild" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Ta bort en produktbild" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "Skriva om en befintlig produktbild och spara icke-redigerbara objekt" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Skriva om några fält i en befintlig produktbild och spara icke-redigerbara " "fält" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Lista alla kampanjkoder (enkel vy)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Hämta en enskild kampanjkod (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Skapa en kampanjkod" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Ta bort en kampanjkod" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "Skriva om en befintlig kampanjkod som sparar icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Skriva om vissa fält i en befintlig kampanjkod och spara icke-redigerbara " "fält" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Lista alla kampanjer (enkel vy)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Hämta en enskild kampanj (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Skapa en kampanj" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Ta bort en kampanj" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Skriv om en befintlig kampanj som sparar icke-redigerbara" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Skriva om vissa fält i en befintlig kampanj och spara icke-redigerbara fält" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Lista alla aktier (enkel vy)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Hämta en enskild aktie (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Skapa en lagerpost" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Ta bort en lagerpost" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "Skriva om en befintlig lagerpost och spara icke-redigerbara uppgifter" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Skriva om vissa fält i en befintlig lagerpost och spara icke-redigerbara " "uppgifter" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Lista alla produkttaggar (enkel vy)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Hämta en enskild produkttagg (detaljerad vy)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Skapa en produkttagg" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Ta bort en produkttagg" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Skriv om en befintlig produkttagg och spara icke-redigerbara objekt" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Skriva om vissa fält i en befintlig produkttagg och spara icke-redigerbara " @@ -1085,7 +1115,7 @@ msgstr "Cachad data" msgid "camelized JSON data from the requested URL" msgstr "Cameliserad JSON-data från den begärda URL:en" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Endast webbadresser som börjar med http(s):// är tillåtna" @@ -1114,7 +1144,8 @@ msgstr "Köpa en order" #: engine/core/graphene/mutations.py:212 engine/core/graphene/mutations.py:266 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -"Vänligen ange antingen order_uuid eller order_hr_id - ömsesidigt uteslutande!" +"Vänligen ange antingen order_uuid eller order_hr_id - ömsesidigt " +"uteslutande!" #: engine/core/graphene/mutations.py:237 engine/core/graphene/mutations.py:502 #: engine/core/graphene/mutations.py:544 engine/core/viewsets.py:704 @@ -1170,8 +1201,8 @@ msgstr "Köpa en order" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Skicka attributen som en sträng formaterad som attr1=värde1,attr2=värde2" @@ -1248,7 +1279,8 @@ msgstr "" "Vilka attribut och värden som kan användas för att filtrera denna kategori." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Minsta och högsta pris för produkter i denna kategori, om tillgängligt." @@ -1459,8 +1491,7 @@ msgstr "Företagets telefonnummer" #: engine/core/graphene/object_types.py:681 msgid "email from, sometimes it must be used instead of host user value" -msgstr "" -"\"email from\", ibland måste det användas istället för host user-värdet" +msgstr "\"email from\", ibland måste det användas istället för host user-värdet" #: engine/core/graphene/object_types.py:682 msgid "email host user" @@ -1520,8 +1551,8 @@ msgid "" "categorizing and managing attributes more effectively in acomplex system." msgstr "" "Representerar en grupp av attribut, som kan vara hierarkiska. Denna klass " -"används för att hantera och organisera attributgrupper. En attributgrupp kan " -"ha en överordnad grupp som bildar en hierarkisk struktur. Detta kan vara " +"används för att hantera och organisera attributgrupper. En attributgrupp kan" +" ha en överordnad grupp som bildar en hierarkisk struktur. Detta kan vara " "användbart för att kategorisera och hantera attribut på ett mer effektivt " "sätt i ett komplext system." @@ -1554,10 +1585,10 @@ msgstr "" "Representerar en vendor-enhet som kan lagra information om externa " "leverantörer och deras interaktionskrav. Klassen Vendor används för att " "definiera och hantera information som är relaterad till en extern " -"leverantör. Den lagrar leverantörens namn, autentiseringsuppgifter som krävs " -"för kommunikation och den procentuella markering som tillämpas på produkter " -"som hämtas från leverantören. Modellen innehåller också ytterligare metadata " -"och begränsningar, vilket gör den lämplig att använda i system som " +"leverantör. Den lagrar leverantörens namn, autentiseringsuppgifter som krävs" +" för kommunikation och den procentuella markering som tillämpas på produkter" +" som hämtas från leverantören. Modellen innehåller också ytterligare " +"metadata och begränsningar, vilket gör den lämplig att använda i system som " "interagerar med tredjepartsleverantörer." #: engine/core/models.py:124 @@ -1615,8 +1646,8 @@ msgstr "" "identifiera produkter. Klassen ProductTag är utformad för att unikt " "identifiera och klassificera produkter genom en kombination av en intern " "taggidentifierare och ett användarvänligt visningsnamn. Den stöder " -"operationer som exporteras via mixins och tillhandahåller metadataanpassning " -"för administrativa ändamål." +"operationer som exporteras via mixins och tillhandahåller metadataanpassning" +" för administrativa ändamål." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1675,8 +1706,8 @@ msgstr "" "innehåller fält för metadata och visuell representation, som utgör grunden " "för kategorirelaterade funktioner. Den här klassen används vanligtvis för " "att definiera och hantera produktkategorier eller andra liknande " -"grupperingar inom en applikation, så att användare eller administratörer kan " -"ange namn, beskrivning och hierarki för kategorier samt tilldela attribut " +"grupperingar inom en applikation, så att användare eller administratörer kan" +" ange namn, beskrivning och hierarki för kategorier samt tilldela attribut " "som bilder, taggar eller prioritet." #: engine/core/models.py:274 @@ -1728,7 +1759,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Representerar ett Brand-objekt i systemet. Klassen hanterar information och " "attribut som är relaterade till ett varumärke, inklusive dess namn, " @@ -1778,8 +1810,8 @@ msgstr "Kategorier" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1871,8 +1903,8 @@ msgstr "" "Representerar en produkt med attribut som kategori, varumärke, taggar, " "digital status, namn, beskrivning, artikelnummer och slug. Tillhandahåller " "relaterade verktygsegenskaper för att hämta betyg, feedbackräkning, pris, " -"kvantitet och totala beställningar. Utformad för användning i ett system som " -"hanterar e-handel eller lagerhantering. Klassen interagerar med relaterade " +"kvantitet och totala beställningar. Utformad för användning i ett system som" +" hanterar e-handel eller lagerhantering. Klassen interagerar med relaterade " "modeller (t.ex. Category, Brand och ProductTag) och hanterar cachelagring " "för egenskaper som används ofta för att förbättra prestandan. Den används " "för att definiera och manipulera produktdata och tillhörande information i " @@ -1931,16 +1963,16 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"Representerar ett attribut i systemet. Denna klass används för att definiera " -"och hantera attribut, som är anpassningsbara bitar av data som kan " +"Representerar ett attribut i systemet. Denna klass används för att definiera" +" och hantera attribut, som är anpassningsbara bitar av data som kan " "associeras med andra enheter. Attribut har associerade kategorier, grupper, " "värdetyper och namn. Modellen stöder flera typer av värden, inklusive " -"sträng, heltal, flottör, boolean, array och objekt. Detta ger möjlighet till " -"dynamisk och flexibel datastrukturering." +"sträng, heltal, flottör, boolean, array och objekt. Detta ger möjlighet till" +" dynamisk och flexibel datastrukturering." #: engine/core/models.py:733 msgid "group of this attribute" @@ -2002,9 +2034,9 @@ msgstr "Attribut" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Representerar ett specifikt värde för ett attribut som är kopplat till en " "produkt. Det kopplar \"attributet\" till ett unikt \"värde\", vilket " @@ -2026,8 +2058,8 @@ msgstr "Det specifika värdet för detta attribut" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2075,8 +2107,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "Representerar en kampanj för produkter med rabatt. Den här klassen används " "för att definiera och hantera kampanjer som erbjuder en procentbaserad " @@ -2125,8 +2157,8 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" "Representerar en användares önskelista för lagring och hantering av önskade " -"produkter. Klassen tillhandahåller funktionalitet för att hantera en samling " -"produkter, med stöd för operationer som att lägga till och ta bort " +"produkter. Klassen tillhandahåller funktionalitet för att hantera en samling" +" produkter, med stöd för operationer som att lägga till och ta bort " "produkter, samt stöd för operationer för att lägga till och ta bort flera " "produkter samtidigt." @@ -2152,15 +2184,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Representerar en dokumentärpost som är knuten till en produkt. Denna klass " "används för att lagra information om dokumentärer som är relaterade till " "specifika produkter, inklusive filuppladdningar och deras metadata. Den " "innehåller metoder och egenskaper för att hantera filtyp och lagringssökväg " -"för dokumentärfilerna. Den utökar funktionaliteten från specifika mixins och " -"tillhandahåller ytterligare anpassade funktioner." +"för dokumentärfilerna. Den utökar funktionaliteten från specifika mixins och" +" tillhandahåller ytterligare anpassade funktioner." #: engine/core/models.py:998 msgid "documentary" @@ -2176,24 +2208,24 @@ msgstr "Olöst" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Representerar en adressentitet som innehåller platsinformation och " "associationer med en användare. Tillhandahåller funktionalitet för lagring " -"av geografiska data och adressdata samt integration med geokodningstjänster. " -"Denna klass är utformad för att lagra detaljerad adressinformation inklusive " -"komponenter som gata, stad, region, land och geolokalisering (longitud och " -"latitud). Den stöder integration med API:er för geokodning, vilket möjliggör " -"lagring av råa API-svar för vidare bearbetning eller inspektion. Klassen gör " -"det också möjligt att associera en adress med en användare, vilket " -"underlättar personlig datahantering." +"av geografiska data och adressdata samt integration med geokodningstjänster." +" Denna klass är utformad för att lagra detaljerad adressinformation " +"inklusive komponenter som gata, stad, region, land och geolokalisering " +"(longitud och latitud). Den stöder integration med API:er för geokodning, " +"vilket möjliggör lagring av råa API-svar för vidare bearbetning eller " +"inspektion. Klassen gör det också möjligt att associera en adress med en " +"användare, vilket underlättar personlig datahantering." #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2334,8 +2366,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Endast en typ av rabatt ska definieras (belopp eller procent), men inte båda " -"eller ingendera." +"Endast en typ av rabatt ska definieras (belopp eller procent), men inte båda" +" eller ingendera." #: engine/core/models.py:1171 msgid "promocode already used" @@ -2350,8 +2382,8 @@ msgstr "Ogiltig rabattyp för promokod {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" @@ -2519,9 +2551,9 @@ msgstr "" "Hanterar feedback från användare för produkter. Den här klassen är utformad " "för att fånga upp och lagra feedback från användare om specifika produkter " "som de har köpt. Den innehåller attribut för att lagra användarkommentarer, " -"en referens till den relaterade produkten i ordern och ett användartilldelat " -"betyg. Klassen använder databasfält för att effektivt modellera och hantera " -"feedbackdata." +"en referens till den relaterade produkten i ordern och ett användartilldelat" +" betyg. Klassen använder databasfält för att effektivt modellera och hantera" +" feedbackdata." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2532,10 +2564,11 @@ msgid "feedback comments" msgstr "Återkoppling av kommentarer" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Refererar till den specifika produkten i en order som denna feedback handlar " -"om" +"Refererar till den specifika produkten i en order som denna feedback handlar" +" om" #: engine/core/models.py:1720 msgid "related order product" @@ -2565,10 +2598,10 @@ msgstr "" "OrderProduct-modellen innehåller information om en produkt som ingår i en " "order, inklusive detaljer som inköpspris, kvantitet, produktattribut och " "status. Den hanterar meddelanden till användaren och administratörer och " -"hanterar åtgärder som att returnera produktsaldot eller lägga till feedback. " -"Modellen innehåller också metoder och egenskaper som stöder affärslogik, t." -"ex. beräkning av totalpriset eller generering av en URL för nedladdning av " -"digitala produkter. Modellen integreras med Order- och Product-modellerna " +"hanterar åtgärder som att returnera produktsaldot eller lägga till feedback." +" Modellen innehåller också metoder och egenskaper som stöder affärslogik, " +"t.ex. beräkning av totalpriset eller generering av en URL för nedladdning av" +" digitala produkter. Modellen integreras med Order- och Product-modellerna " "och lagrar en referens till dem." #: engine/core/models.py:1757 @@ -2677,17 +2710,17 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"Representerar nedladdningsfunktionen för digitala tillgångar som är kopplade " -"till order. Klassen DigitalAssetDownload ger möjlighet att hantera och komma " -"åt nedladdningar som är relaterade till orderprodukter. Den upprätthåller " -"information om den associerade orderprodukten, antalet nedladdningar och om " -"tillgången är offentligt synlig. Den innehåller en metod för att generera en " -"URL för nedladdning av tillgången när den associerade ordern har statusen " -"slutförd." +"Representerar nedladdningsfunktionen för digitala tillgångar som är kopplade" +" till order. Klassen DigitalAssetDownload ger möjlighet att hantera och " +"komma åt nedladdningar som är relaterade till orderprodukter. Den " +"upprätthåller information om den associerade orderprodukten, antalet " +"nedladdningar och om tillgången är offentligt synlig. Den innehåller en " +"metod för att generera en URL för nedladdning av tillgången när den " +"associerade ordern har statusen slutförd." #: engine/core/models.py:1961 msgid "download" @@ -2701,8 +2734,8 @@ msgstr "Nedladdningar" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"du måste ge en kommentar, betyg och beställa produkt uuid för att lägga till " -"feedback." +"du måste ge en kommentar, betyg och beställa produkt uuid för att lägga till" +" feedback." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2745,8 +2778,7 @@ msgstr "Hej %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Tack för din beställning #%(order.pk)s! Vi är glada att kunna informera dig " @@ -2861,8 +2893,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Tack för din beställning! Vi är glada att kunna bekräfta ditt köp. Nedan " @@ -2934,7 +2965,7 @@ msgstr "Parametern NOMINATIM_URL måste konfigureras!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "Bildmåtten får inte överstiga w{max_width} x h{max_height} pixlar!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2942,7 +2973,7 @@ msgstr "" "Hanterar begäran om index för webbplatskartan och returnerar ett XML-svar. " "Den ser till att svaret innehåller rätt innehållstypshuvud för XML." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2952,16 +2983,16 @@ msgstr "" "bearbetar begäran, hämtar det lämpliga detaljerade svaret för " "webbplatskartan och ställer in Content-Type-huvudet för XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "Returnerar en lista över språk som stöds och motsvarande information." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Returnerar webbplatsens parametrar som ett JSON-objekt." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -2969,11 +3000,11 @@ msgstr "" "Hanterar cacheoperationer som att läsa och ställa in cachedata med en " "angiven nyckel och timeout." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Hanterar formulärinlämningar för `kontakta oss`." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2981,62 +3012,58 @@ msgstr "" "Hanterar förfrågningar om bearbetning och validering av URL:er från " "inkommande POST-förfrågningar." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Hanterar globala sökfrågor." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Hanterar logiken i att köpa som ett företag utan registrering." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Hanterar nedladdning av en digital tillgång som är kopplad till en order.\n" -"Denna funktion försöker servera den digitala tillgångsfilen som finns i " -"lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel " -"som indikerar att resursen inte är tillgänglig." +"Denna funktion försöker servera den digitala tillgångsfilen som finns i lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel som indikerar att resursen inte är tillgänglig." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid är obligatoriskt" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "Beställ produkten finns inte" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Du kan bara ladda ner den digitala tillgången en gång" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "beställningen måste betalas innan den digitala tillgången laddas ner" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Beställningens produkt har ingen produkt" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon hittades inte" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Hanterar förfrågningar om favicon på en webbplats.\n" -"Denna funktion försöker servera favicon-filen som finns i den statiska " -"katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel " -"som anger att resursen inte är tillgänglig." +"Denna funktion försöker servera favicon-filen som finns i den statiska katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel som anger att resursen inte är tillgänglig." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "Omdirigerar begäran till indexsidan för admin. Funktionen hanterar " @@ -3044,7 +3071,7 @@ msgstr "" "admin-gränssnitt. Den använder Djangos `redirect`-funktion för att hantera " "HTTP-omdirigeringen." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Returnerar aktuell version av eVibes." @@ -3057,23 +3084,24 @@ msgid "" "and rendering formats." msgstr "" "Definierar en vy för hantering av Evibes-relaterade operationer. Klassen " -"EvibesViewSet ärver från ModelViewSet och tillhandahåller funktionalitet för " -"att hantera åtgärder och operationer på Evibes-entiteter. Den innehåller " +"EvibesViewSet ärver från ModelViewSet och tillhandahåller funktionalitet för" +" att hantera åtgärder och operationer på Evibes-entiteter. Den innehåller " "stöd för dynamiska serializerklasser baserat på den aktuella åtgärden, " "anpassningsbara behörigheter och renderingsformat." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Representerar en vy för hantering av AttributeGroup-objekt. Hanterar " -"åtgärder relaterade till AttributeGroup, inklusive filtrering, serialisering " -"och hämtning av data. Denna klass är en del av applikationens API-lager och " -"tillhandahåller ett standardiserat sätt att behandla förfrågningar och svar " -"för AttributeGroup-data." +"åtgärder relaterade till AttributeGroup, inklusive filtrering, serialisering" +" och hämtning av data. Denna klass är en del av applikationens API-lager och" +" tillhandahåller ett standardiserat sätt att behandla förfrågningar och svar" +" för AttributeGroup-data." #: engine/core/viewsets.py:176 msgid "" @@ -3096,8 +3124,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Ett viewset för hantering av AttributeValue-objekt. Denna viewset " "tillhandahåller funktionalitet för att lista, hämta, skapa, uppdatera och " @@ -3127,8 +3155,8 @@ msgid "" "endpoints for Brand objects." msgstr "" "Representerar en vy för hantering av varumärkesinstanser. Denna klass " -"tillhandahåller funktionalitet för att fråga, filtrera och serialisera Brand-" -"objekt. Den använder Djangos ViewSet-ramverk för att förenkla " +"tillhandahåller funktionalitet för att fråga, filtrera och serialisera " +"Brand-objekt. Den använder Djangos ViewSet-ramverk för att förenkla " "implementeringen av API-slutpunkter för varumärkesobjekt." #: engine/core/viewsets.py:438 @@ -3142,8 +3170,8 @@ msgid "" "product." msgstr "" "Hanterar operationer relaterade till modellen `Product` i systemet. Denna " -"klass tillhandahåller en vy för att hantera produkter, inklusive filtrering, " -"serialisering och operationer på specifika instanser. Den utökar från " +"klass tillhandahåller en vy för att hantera produkter, inklusive filtrering," +" serialisering och operationer på specifika instanser. Den utökar från " "`EvibesViewSet` för att använda gemensam funktionalitet och integreras med " "Django REST-ramverket för RESTful API-operationer. Innehåller metoder för " "att hämta produktinformation, tillämpa behörigheter och få tillgång till " @@ -3157,8 +3185,8 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"Representerar en vy för hantering av Vendor-objekt. Denna vy gör det möjligt " -"att hämta, filtrera och serialisera Vendor-data. Den definierar queryset, " +"Representerar en vy för hantering av Vendor-objekt. Denna vy gör det möjligt" +" att hämta, filtrera och serialisera Vendor-data. Den definierar queryset, " "filterkonfigurationer och serializer-klasser som används för att hantera " "olika åtgärder. Syftet med denna klass är att ge strömlinjeformad åtkomst " "till Vendor-relaterade resurser genom Django REST-ramverket." @@ -3168,12 +3196,12 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"Representation av en vyuppsättning som hanterar Feedback-objekt. Denna klass " -"hanterar åtgärder relaterade till Feedback-objekt, inklusive listning, " +"Representation av en vyuppsättning som hanterar Feedback-objekt. Denna klass" +" hanterar åtgärder relaterade till Feedback-objekt, inklusive listning, " "filtrering och hämtning av detaljer. Syftet med denna vyuppsättning är att " "tillhandahålla olika serializers för olika åtgärder och implementera " "behörighetsbaserad hantering av tillgängliga Feedback-objekt. Den utökar " @@ -3185,15 +3213,15 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "ViewSet för hantering av order och relaterade operationer. Den här klassen " "innehåller funktioner för att hämta, ändra och hantera orderobjekt. Den " -"innehåller olika slutpunkter för hantering av orderoperationer som att lägga " -"till eller ta bort produkter, utföra inköp för registrerade och " +"innehåller olika slutpunkter för hantering av orderoperationer som att lägga" +" till eller ta bort produkter, utföra inköp för registrerade och " "oregistrerade användare och hämta den aktuella autentiserade användarens " "pågående order. ViewSet använder flera serializers baserat på den specifika " "åtgärd som utförs och verkställer behörigheter i enlighet med detta vid " @@ -3203,8 +3231,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Tillhandahåller en vy för hantering av OrderProduct-enheter. Denna " @@ -3238,8 +3266,8 @@ msgstr "Hanterar åtgärder relaterade till lagerdata i systemet." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3282,6 +3310,5 @@ msgstr "" "Hanterar operationer relaterade till Product Tags inom applikationen. " "Klassen tillhandahåller funktionalitet för att hämta, filtrera och " "serialisera Product Tag-objekt. Den stöder flexibel filtrering på specifika " -"attribut med hjälp av det angivna filterbackend och använder dynamiskt olika " -"serializers baserat på den åtgärd som utförs." - +"attribut med hjälp av det angivna filterbackend och använder dynamiskt olika" +" serializers baserat på den åtgärd som utförs." diff --git a/engine/core/locale/th_TH/LC_MESSAGES/django.mo b/engine/core/locale/th_TH/LC_MESSAGES/django.mo index 7c150bd9607b0849bb7659002dddb6380b1befd6..ed0aabef613d3e1813c6e6dee8690bb7179fef3b 100644 GIT binary patch delta 14989 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 Cy5+}Va>Xuz0E_(v*Z8pkna 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,8 +27,11 @@ msgstr "กำลังใช้งานอยู่" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" -msgstr "หากตั้งค่าเป็น false, วัตถุนี้ไม่สามารถมองเห็นได้โดยผู้ใช้ที่ไม่มีสิทธิ์ที่ต้องการ" +"if set to false, this object can't be seen by users without needed " +"permission" +msgstr "" +"หากตั้งค่าเป็น false, " +"วัตถุนี้ไม่สามารถมองเห็นได้โดยผู้ใช้ที่ไม่มีสิทธิ์ที่ต้องการ" #: engine/core/abstract.py:23 engine/core/choices.py:18 msgid "created" @@ -152,7 +155,8 @@ msgstr "ส่งมอบแล้ว" msgid "canceled" msgstr "ยกเลิก" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "ล้มเหลว" @@ -180,712 +184,782 @@ msgstr "ชั่วขณะหนึ่ง" msgid "successful" msgstr "ประสบความสำเร็จ" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "สคีมา OpenAPI ในรูปแบบที่เลือกพร้อมภาษาที่เลือก" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"OpenApi3 schema สำหรับ API นี้. รูปแบบสามารถเลือกได้ผ่านการเจรจาเนื้อหา. " +"ภาษาสามารถเลือกได้ทั้งผ่าน Accept-Language และพารามิเตอร์ค้นหา." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "แคช I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"ใช้เฉพาะคีย์เพื่ออ่านข้อมูลที่ได้รับอนุญาตจากแคช ใช้คีย์ ข้อมูล และระยะเวลาหมดอายุ " -"พร้อมการยืนยันตัวตนเพื่อเขียนข้อมูลลงในแคช" +"ใช้เฉพาะคีย์เพื่ออ่านข้อมูลที่ได้รับอนุญาตจากแคช ใช้คีย์ ข้อมูล " +"และระยะเวลาหมดอายุ พร้อมการยืนยันตัวตนเพื่อเขียนข้อมูลลงในแคช" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "รับรายการภาษาที่รองรับ" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "รับพารามิเตอร์ที่สามารถเปิดเผยได้ของแอปพลิเคชัน" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "ส่งข้อความถึงทีมสนับสนุน" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "ขอ URL ที่รองรับ CORS เท่านั้น อนุญาตเฉพาะ https" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "ค้นหาสินค้า หมวดหมู่ และแบรนด์" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "จุดสิ้นสุดการค้นหาทั่วโลกเพื่อค้นหาข้ามตารางของโครงการ" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "ซื้อสินค้าเป็นธุรกิจ" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"ซื้อสินค้าในฐานะธุรกิจ โดยใช้ `products` ที่ให้มาพร้อมกับ `product_uuid` และ `attributes`" +"ซื้อสินค้าในฐานะธุรกิจ โดยใช้ `products` ที่ให้มาพร้อมกับ `product_uuid` และ" +" `attributes`" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "ดาวน์โหลดสินทรัพย์ดิจิทัลจากคำสั่งซื้อดิจิทัลที่ซื้อแล้ว" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "แสดงกลุ่มแอตทริบิวต์ทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "ดึงกลุ่มแอตทริบิวต์เดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "สร้างกลุ่มคุณลักษณะ" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "ลบกลุ่มแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" -msgstr "เขียนกลุ่มคุณลักษณะที่มีอยู่ใหม่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนกลุ่มคุณลักษณะที่มีอยู่ใหม่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของกลุ่มแอตทริบิวต์ที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "" +"เขียนฟิลด์บางส่วนของกลุ่มแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "แสดงรายการคุณลักษณะทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "ดึงข้อมูลคุณลักษณะเดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "สร้างแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "ลบแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "เขียนแอตทริบิวต์ที่มีอยู่ใหม่โดยบันทึกเฉพาะส่วนที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" +msgstr "" +"เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "แสดงรายการค่าของแอตทริบิวต์ทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "ดึงค่าแอตทริบิวต์เดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "สร้างค่าแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "ลบค่าของแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "เขียนค่าแอตทริบิวต์ที่มีอยู่ใหม่โดยเก็บค่าที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของค่าแอตทริบิวต์ที่มีอยู่ใหม่ โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "" +"เขียนฟิลด์บางส่วนของค่าแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "แสดงรายการหมวดหมู่ทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "ดึงข้อมูลหมวดหมู่เดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "หมวดหมู่ UUID หรือ slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "สร้างหมวดหมู่" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "ลบหมวดหมู่" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "เขียนหมวดหมู่ที่มีอยู่ใหม่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "ส่งคืนภาพรวมของข้อมูลเมตา SEO ของหมวดหมู่" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "แสดงรายการหมวดหมู่ทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "สำหรับผู้ใช้ที่ไม่ใช่พนักงาน จะแสดงเฉพาะคำสั่งซื้อของตนเองเท่านั้น" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"การค้นหาส่วนย่อยโดยไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ใน human_readable_id, order_products." -"product.name และ order_products.product.partnumber" +"การค้นหาส่วนย่อยโดยไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ใน human_readable_id, " +"order_products.product.name และ order_products.product.partnumber" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "กรองคำสั่งซื้อที่มี buy_time >= วันที่และเวลาตามมาตรฐาน ISO 8601 นี้" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "กรองคำสั่งซื้อที่มี buy_time <= วันที่และเวลาตามมาตรฐาน ISO 8601 นี้" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "กรองตาม UUID ของคำสั่งซื้อที่ตรงกัน" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "กรองตามหมายเลขคำสั่งซื้อที่อ่านได้โดยมนุษย์อย่างถูกต้อง" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" -msgstr "กรองตามอีเมลของผู้ใช้ (ตรงตามตัวอักษรโดยไม่คำนึงถึงตัวพิมพ์ใหญ่หรือเล็ก)" +msgstr "" +"กรองตามอีเมลของผู้ใช้ (ตรงตามตัวอักษรโดยไม่คำนึงถึงตัวพิมพ์ใหญ่หรือเล็ก)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "กรองตาม UUID ของผู้ใช้" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" -msgstr "กรองตามสถานะคำสั่งซื้อ (การจับคู่สตริงย่อยโดยไม่คำนึงตัวพิมพ์ใหญ่/เล็ก)" +msgstr "" +"กรองตามสถานะคำสั่งซื้อ (การจับคู่สตริงย่อยโดยไม่คำนึงตัวพิมพ์ใหญ่/เล็ก)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "เรียงลำดับโดยหนึ่งใน: uuid, human_readable_id, user_email, user, status, " -"created, modified, buy_time, random. นำหน้าด้วย '-' สำหรับเรียงลำดับจากมากไปน้อย " -"(เช่น '-buy_time')." +"created, modified, buy_time, random. นำหน้าด้วย '-' " +"สำหรับเรียงลำดับจากมากไปน้อย (เช่น '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "ดึงข้อมูลหมวดหมู่เดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "ลำดับ UUID หรือรหัสที่มนุษย์อ่านได้" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "สร้างแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "ไม่สามารถใช้งานได้สำหรับผู้ใช้ที่ไม่ใช่พนักงาน" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "ลบแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "เขียนหมวดหมู่ที่มีอยู่ใหม่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนฟิลด์บางส่วนของหมวดหมู่ที่มีอยู่แล้วใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "ราคาซื้อ ณ เวลาที่สั่งซื้อ" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" "สรุปการสั่งซื้อสินค้า หากใช้ `force_balance` " -"การสั่งซื้อจะเสร็จสมบูรณ์โดยใช้ยอดเงินคงเหลือของผู้ใช้ หากใช้ `force_payment` " -"จะเริ่มการทำธุรกรรม" +"การสั่งซื้อจะเสร็จสมบูรณ์โดยใช้ยอดเงินคงเหลือของผู้ใช้ หากใช้ " +"`force_payment` จะเริ่มการทำธุรกรรม" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "ดึงคำสั่งซื้อที่รอดำเนินการปัจจุบันของผู้ใช้" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "ดึงคำสั่งซื้อที่รอดำเนินการในปัจจุบันของผู้ใช้ที่ผ่านการยืนยันแล้ว" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "ซื้อสินค้าโดยไม่ต้องสร้างบัญชี" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "สรุปการสั่งซื้อสินค้าสำหรับผู้ใช้ที่ไม่ได้ลงทะเบียน" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "เพิ่มสินค้าในคำสั่งซื้อ" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "เพิ่มสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"เพิ่มสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "เพิ่มรายการสินค้าที่ต้องการสั่งซื้อ โดยจำนวนจะไม่ถูกนับ" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." -msgstr "เพิ่มรายการสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"เพิ่มรายการสินค้าไปยังคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` " +"ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "ลบสินค้าออกจากคำสั่งซื้อ" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "ลบผลิตภัณฑ์ออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"ลบผลิตภัณฑ์ออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "นำสินค้าออกจากคำสั่งซื้อ, จำนวนจะไม่ถูกนับ" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" -msgstr "ลบรายการสินค้าออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` ที่ให้มา" +msgstr "" +"ลบรายการสินค้าออกจากคำสั่งซื้อโดยใช้ `product_uuid` และ `attributes` " +"ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "แสดงรายการคุณลักษณะทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." -msgstr "สำหรับผู้ใช้ที่ไม่ใช่บุคลากร จะแสดงเฉพาะรายการที่อยู่ในรายการสิ่งที่ต้องการของตนเองเท่านั้น" +msgstr "" +"สำหรับผู้ใช้ที่ไม่ใช่บุคลากร " +"จะแสดงเฉพาะรายการที่อยู่ในรายการสิ่งที่ต้องการของตนเองเท่านั้น" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "ดึงข้อมูลคุณลักษณะเดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "สร้างแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "ไม่สามารถใช้งานได้สำหรับผู้ใช้ที่ไม่ใช่พนักงาน" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "ลบแอตทริบิวต์" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "เขียนแอตทริบิวต์ที่มีอยู่ใหม่โดยบันทึกเฉพาะส่วนที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" +msgstr "" +"เขียนฟิลด์บางส่วนของแอตทริบิวต์ที่มีอยู่ใหม่ " +"โดยบันทึกเฉพาะข้อมูลที่ไม่มีการแก้ไข" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "ดึงรายการสินค้าที่ผู้ใช้ต้องการซื้อที่ยังไม่ได้ซื้อในปัจจุบัน" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"ดึงรายการความปรารถนาที่รอดำเนินการในปัจจุบันของผู้ใช้ที่ผ่านการยืนยันแล้ว" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "เพิ่มสินค้าในคำสั่งซื้อ" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "เพิ่มสินค้าไปยังรายการที่ต้องการโดยใช้ `product_uuid` ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "นำสินค้าออกจากรายการที่อยากได้" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "ลบผลิตภัณฑ์ออกจากรายการที่ต้องการโดยใช้ `product_uuid` ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "เพิ่มสินค้าหลายรายการลงในรายการที่ต้องการ" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "เพิ่มสินค้าหลายรายการลงในรายการสินค้าที่ต้องการโดยใช้ `product_uuids` ที่ให้มา" +msgstr "" +"เพิ่มสินค้าหลายรายการลงในรายการสินค้าที่ต้องการโดยใช้ `product_uuids` " +"ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "ลบสินค้าออกจากคำสั่งซื้อ" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "ลบผลิตภัณฑ์หลายรายการออกจากรายการที่ต้องการโดยใช้ `product_uuids` ที่ให้มา" +msgstr "" +"ลบผลิตภัณฑ์หลายรายการออกจากรายการที่ต้องการโดยใช้ `product_uuids` ที่ให้มา" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -"กรองตามชื่อ/ค่าของแอตทริบิวต์หนึ่งรายการหรือมากกว่า • **ไวยากรณ์**: `attr_name=method-" -"value[;attr2=method2-value2]…` •**วิธีการ** (ค่าเริ่มต้นคือ `icontains` " -"หากไม่ได้ระบุ): `iexact`, `exact`, `icontains`, `contains`, `isnull`, " -"`startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, " -"`lt`, `lte`, `gt`, `gte`, `in` •**การกำหนดประเภทข้อมูล**: JSON " -"จะถูกพยายามแปลงก่อน (ดังนั้นคุณสามารถส่งรายการ/ดิคชันนารีได้), `true`/`false` สำหรับบูลีน, " -"จำนวนเต็ม, จำนวนทศนิยม; มิฉะนั้นจะถือว่าเป็นสตริง. • **Base64**: นำหน้าด้วย `b64-` " -"เพื่อเข้ารหัส base64 ที่ปลอดภัยสำหรับ URL ของค่าดิบ. \n" -"ตัวอย่าง: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" +"กรองตามชื่อ/ค่าของแอตทริบิวต์หนึ่งรายการหรือมากกว่า • **ไวยากรณ์**: `attr_name=method-value[;attr2=method2-value2]…` •**วิธีการ** (ค่าเริ่มต้นคือ `icontains` หากไม่ได้ระบุ): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` •**การกำหนดประเภทข้อมูล**: JSON จะถูกพยายามแปลงก่อน (ดังนั้นคุณสามารถส่งรายการ/ดิคชันนารีได้), `true`/`false` สำหรับบูลีน, จำนวนเต็ม, จำนวนทศนิยม; มิฉะนั้นจะถือว่าเป็นสตริง. • **Base64**: นำหน้าด้วย `b64-` เพื่อเข้ารหัส base64 ที่ปลอดภัยสำหรับ URL ของค่าดิบ. \n" +"ตัวอย่าง: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "รายการสินค้าทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(exact) รหัส UUID ของผลิตภัณฑ์" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเรียงลำดับ โดยให้ขึ้นต้นด้วย `-` " -"สำหรับการเรียงลำดับจากน้อยไปมาก **ที่อนุญาต:** uuid, rating, name, slug, created, " -"modified, price, random" +"รายการฟิลด์ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเรียงลำดับ โดยให้ขึ้นต้นด้วย `-`" +" สำหรับการเรียงลำดับจากน้อยไปมาก **ที่อนุญาต:** uuid, rating, name, slug, " +"created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "ดึงข้อมูลสินค้าเพียงรายการเดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "รหัส UUID ของผลิตภัณฑ์ หรือชื่อเรียก" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "สร้างผลิตภัณฑ์" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "เขียนใหม่ผลิตภัณฑ์ที่มีอยู่ โดยรักษาฟิลด์ที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "อัปเดตบางฟิลด์ของสินค้าที่มีอยู่แล้ว โดยคงฟิลด์ที่ไม่สามารถแก้ไขได้ไว้" +msgstr "" +"อัปเดตบางฟิลด์ของสินค้าที่มีอยู่แล้ว โดยคงฟิลด์ที่ไม่สามารถแก้ไขได้ไว้" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "ลบผลิตภัณฑ์" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "แสดงรายการข้อเสนอแนะที่ได้รับอนุญาตทั้งหมดสำหรับผลิตภัณฑ์" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "ส่งคืนภาพรวมของข้อมูลเมตา SEO ของผลิตภัณฑ์" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "รายการที่อยู่ทั้งหมด" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "ดึงที่อยู่เดียว" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "สร้างที่อยู่ใหม่" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "ลบที่อยู่" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "อัปเดตที่อยู่ทั้งหมด" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "อัปเดตที่อยู่บางส่วน" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "การเติมที่อยู่โดยอัตโนมัติ" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "ข้อมูลดิบสำหรับคำค้นหา กรุณาเพิ่มข้อมูลจากจุดสิ้นสุด geo-IP" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "จำกัดจำนวนผลลัพธ์, 1 < limit < 10, ค่าเริ่มต้น: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "แสดงความคิดเห็นทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "ดึงข้อมูลความคิดเห็นหนึ่งรายการ (มุมมองแบบละเอียด)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "สร้างข้อเสนอแนะ" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "ลบความคิดเห็น" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "เขียนใหม่ข้อเสนอแนะที่มีอยู่โดยไม่แก้ไขส่วนที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของฟิลด์ในข้อเสนอแนะที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของฟิลด์ในข้อเสนอแนะที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "แสดงความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์ทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" -msgstr "ดึงความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์เพียงรายการเดียว (มุมมองรายละเอียด)" +msgstr "" +"ดึงความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์เพียงรายการเดียว " +"(มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "สร้างความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์ใหม่" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "แทนที่ความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์ที่มีอยู่" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "อัปเดตบางส่วนของความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์ที่มีอยู่" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "ลบความสัมพันธ์ระหว่างคำสั่งซื้อและสินค้า" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" -msgstr "เพิ่มหรือลบความคิดเห็นเกี่ยวกับความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์" +msgstr "" +"เพิ่มหรือลบความคิดเห็นเกี่ยวกับความสัมพันธ์ระหว่างคำสั่งซื้อและผลิตภัณฑ์" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "แสดงรายการทั้งหมดของแบรนด์ (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "ดึงข้อมูลแบรนด์เดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "แบรนด์ UUID หรือ slug" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "สร้างแบรนด์" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "ลบแบรนด์" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "เขียนใหม่แบรนด์ที่มีอยู่โดยไม่แก้ไขส่วนที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" -msgstr "เขียนข้อมูลในบางช่องของแบรนด์ที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลในบางช่องของแบรนด์ที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot สำหรับแบรนด์" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "แสดงรายชื่อผู้จำหน่ายทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "ดึงข้อมูลผู้ขายรายเดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "สร้างผู้ขาย" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "ลบผู้ขาย" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "เขียนใหม่ผู้ขายที่มีอยู่โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" -msgstr "เขียนข้อมูลในบางช่องของซัพพลายเออร์ที่มีอยู่แล้วใหม่ โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" +msgstr "" +"เขียนข้อมูลในบางช่องของซัพพลายเออร์ที่มีอยู่แล้วใหม่ " +"โดยเก็บค่าที่ไม่สามารถแก้ไขได้ไว้" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "แสดงภาพสินค้าทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "ดึงภาพสินค้าเพียงหนึ่งรายการ (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "สร้างภาพสินค้า" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "ลบรูปภาพสินค้า" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "เขียนภาพสินค้าที่มีอยู่ใหม่โดยเก็บส่วนที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของภาพสินค้าที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของภาพสินค้าที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "แสดงรายการรหัสโปรโมชั่นทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "ดึงรหัสโปรโมชั่นเพียงหนึ่งรายการ (มุมมองแบบละเอียด)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "สร้างรหัสโปรโมชั่น" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "ลบโค้ดโปรโมชั่น" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "เขียนโค้ดโปรโมชั่นใหม่โดยคงส่วนที่ไม่สามารถแก้ไขได้ไว้" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของรหัสโปรโมชั่นที่มีอยู่ใหม่ โดยคงค่าที่ไม่สามารถแก้ไขได้ไว้" +msgstr "" +"เขียนฟิลด์บางส่วนของรหัสโปรโมชั่นที่มีอยู่ใหม่ " +"โดยคงค่าที่ไม่สามารถแก้ไขได้ไว้" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "รายการโปรโมชั่นทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "ดึงข้อมูลโปรโมชั่นเดียว (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "สร้างโปรโมชั่น" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "ลบโปรโมชั่น" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "เขียนโปรโมชั่นใหม่โดยคงส่วนที่ไม่สามารถแก้ไขได้ไว้" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของโปรโมชั่นที่มีอยู่ใหม่ โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของโปรโมชั่นที่มีอยู่ใหม่ " +"โดยเก็บรักษาข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "แสดงรายการหุ้นทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "ดึงข้อมูลสินค้าคงคลังหนึ่งรายการ (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "สร้างบันทึกสินค้าคงคลัง" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "ลบข้อมูลสินค้าคงคลัง" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "เขียนบันทึกสต็อกที่มีอยู่ใหม่โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" -msgstr "เขียนฟิลด์บางส่วนของบันทึกสต็อกที่มีอยู่ใหม่ โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนฟิลด์บางส่วนของบันทึกสต็อกที่มีอยู่ใหม่ " +"โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "แสดงแท็กสินค้าทั้งหมด (มุมมองแบบง่าย)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "ดึงแท็กสินค้าหนึ่งรายการ (มุมมองรายละเอียด)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "สร้างแท็กสินค้า" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "ลบแท็กสินค้า" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "เขียนแท็กสินค้าที่มีอยู่ใหม่โดยเก็บส่วนที่ไม่สามารถแก้ไขได้" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" -msgstr "เขียนข้อมูลบางส่วนของแท็กสินค้าที่มีอยู่แล้วใหม่ โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" +msgstr "" +"เขียนข้อมูลบางส่วนของแท็กสินค้าที่มีอยู่แล้วใหม่ " +"โดยบันทึกข้อมูลที่ไม่สามารถแก้ไขได้" #: engine/core/elasticsearch/__init__.py:122 #: engine/core/elasticsearch/__init__.py:570 @@ -1035,7 +1109,7 @@ msgstr "ข้อมูลที่เก็บไว้ในแคช" msgid "camelized JSON data from the requested URL" msgstr "ข้อมูล JSON ที่ผ่านการคาราเมลไลซ์จาก URL ที่ร้องขอ" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "อนุญาตเฉพาะ URL ที่ขึ้นต้นด้วย http(s):// เท่านั้น" @@ -1063,7 +1137,8 @@ msgstr "ซื้อคำสั่ง" #: engine/core/graphene/mutations.py:212 engine/core/graphene/mutations.py:266 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" -msgstr "กรุณาให้ order_uuid หรือ order_hr_id - ต้องเลือกอย่างใดอย่างหนึ่งเท่านั้น!" +msgstr "" +"กรุณาให้ order_uuid หรือ order_hr_id - ต้องเลือกอย่างใดอย่างหนึ่งเท่านั้น!" #: engine/core/graphene/mutations.py:237 engine/core/graphene/mutations.py:502 #: engine/core/graphene/mutations.py:544 engine/core/viewsets.py:704 @@ -1119,9 +1194,10 @@ msgstr "ซื้อคำสั่ง" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" -msgstr "กรุณาส่งแอตทริบิวต์ในรูปแบบสตริงที่จัดรูปแบบดังนี้ attr1=value1,attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" +msgstr "" +"กรุณาส่งแอตทริบิวต์ในรูปแบบสตริงที่จัดรูปแบบดังนี้ attr1=value1,attr2=value2" #: engine/core/graphene/mutations.py:550 msgid "add or delete a feedback for orderproduct" @@ -1195,7 +1271,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "คุณลักษณะและคุณค่าใดที่สามารถใช้สำหรับกรองหมวดหมู่นี้ได้" #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "ราคาต่ำสุดและราคาสูงสุดสำหรับสินค้าในหมวดนี้ (หากมี)" #: engine/core/graphene/object_types.py:206 @@ -1464,7 +1541,8 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"แทนกลุ่มของแอตทริบิวต์ ซึ่งสามารถมีลำดับชั้นได้ คลาสนี้ใช้เพื่อจัดการและจัดระเบียบกลุ่มแอตทริบิวต์ " +"แทนกลุ่มของแอตทริบิวต์ ซึ่งสามารถมีลำดับชั้นได้ " +"คลาสนี้ใช้เพื่อจัดการและจัดระเบียบกลุ่มแอตทริบิวต์ " "กลุ่มแอตทริบิวต์สามารถมีกลุ่มแม่ได้ ทำให้เกิดโครงสร้างลำดับชั้น " "ซึ่งสามารถมีประโยชน์ในการจัดหมวดหมู่และจัดการแอตทริบิวต์ได้อย่างมีประสิทธิภาพมากขึ้นในระบบที่ซับซ้อน" @@ -1494,16 +1572,17 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"แทนหน่วยงานผู้ขายที่สามารถจัดเก็บข้อมูลเกี่ยวกับผู้ขายภายนอกและข้อกำหนดในการโต้ตอบของพวกเขาได้ " -"คลาสผู้ขายถูกใช้เพื่อกำหนดและจัดการข้อมูลที่เกี่ยวข้องกับผู้ขายภายนอก มันจัดเก็บชื่อผู้ขาย " -"รายละเอียดการตรวจสอบสิทธิ์ที่จำเป็นสำหรับการสื่อสาร " +"แทนหน่วยงานผู้ขายที่สามารถจัดเก็บข้อมูลเกี่ยวกับผู้ขายภายนอกและข้อกำหนดในการโต้ตอบของพวกเขาได้" +" คลาสผู้ขายถูกใช้เพื่อกำหนดและจัดการข้อมูลที่เกี่ยวข้องกับผู้ขายภายนอก " +"มันจัดเก็บชื่อผู้ขาย รายละเอียดการตรวจสอบสิทธิ์ที่จำเป็นสำหรับการสื่อสาร " "และเปอร์เซ็นต์การเพิ่มราคาที่นำไปใช้กับสินค้าที่นำมาจากผู้ขาย " "โมเดลนี้ยังรักษาข้อมูลเมตาเพิ่มเติมและข้อจำกัด " "ทำให้เหมาะสำหรับการใช้งานในระบบที่มีการโต้ตอบกับผู้ขายภายนอก" #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" -msgstr "เก็บรักษาข้อมูลประจำตัวและจุดสิ้นสุดที่จำเป็นสำหรับการสื่อสาร API ของผู้ขาย" +msgstr "" +"เก็บรักษาข้อมูลประจำตัวและจุดสิ้นสุดที่จำเป็นสำหรับการสื่อสาร API ของผู้ขาย" #: engine/core/models.py:125 msgid "authentication info" @@ -1550,8 +1629,8 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "แทนแท็กผลิตภัณฑ์ที่ใช้ในการจัดประเภทหรือระบุผลิตภัณฑ์ คลาส ProductTag " -"ถูกออกแบบมาเพื่อระบุและจัดประเภทผลิตภัณฑ์อย่างเป็นเอกลักษณ์ผ่านการรวมกันของตัวระบุแท็กภายในและชื่อแสดงผลที่ใช้งานง่าย " -"รองรับการดำเนินการที่ส่งออกผ่าน mixins " +"ถูกออกแบบมาเพื่อระบุและจัดประเภทผลิตภัณฑ์อย่างเป็นเอกลักษณ์ผ่านการรวมกันของตัวระบุแท็กภายในและชื่อแสดงผลที่ใช้งานง่าย" +" รองรับการดำเนินการที่ส่งออกผ่าน mixins " "และให้การปรับแต่งเมตาดาต้าสำหรับวัตถุประสงค์ในการบริหารจัดการ" #: engine/core/models.py:209 engine/core/models.py:240 @@ -1604,13 +1683,13 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"แทนถึงเอนทิตีประเภทเพื่อจัดระเบียบและจัดกลุ่มรายการที่เกี่ยวข้องในโครงสร้างลำดับชั้น " -"หมวดหมู่สามารถมีความสัมพันธ์ลำดับชั้นกับหมวดหมู่อื่น ๆ ได้ ซึ่งสนับสนุนความสัมพันธ์แบบพ่อแม่-" -"ลูกคลาสนี้ประกอบด้วยฟิลด์สำหรับข้อมูลเมตาและตัวแทนภาพ " -"ซึ่งทำหน้าที่เป็นพื้นฐานสำหรับคุณสมบัติที่เกี่ยวข้องกับหมวดหมู่ " -"คลาสนี้มักใช้เพื่อกำหนดและจัดการหมวดหมู่สินค้าหรือการจัดกลุ่มที่คล้ายกันภายในแอปพลิเคชัน " -"ช่วยให้ผู้ใช้หรือผู้ดูแลระบบสามารถระบุชื่อ คำอธิบาย และลำดับชั้นของหมวดหมู่ " -"รวมถึงกำหนดคุณลักษณะต่างๆ เช่น รูปภาพ แท็ก หรือความสำคัญ" +"แทนถึงเอนทิตีประเภทเพื่อจัดระเบียบและจัดกลุ่มรายการที่เกี่ยวข้องในโครงสร้างลำดับชั้น" +" หมวดหมู่สามารถมีความสัมพันธ์ลำดับชั้นกับหมวดหมู่อื่น ๆ ได้ " +"ซึ่งสนับสนุนความสัมพันธ์แบบพ่อแม่-ลูกคลาสนี้ประกอบด้วยฟิลด์สำหรับข้อมูลเมตาและตัวแทนภาพ" +" ซึ่งทำหน้าที่เป็นพื้นฐานสำหรับคุณสมบัติที่เกี่ยวข้องกับหมวดหมู่ " +"คลาสนี้มักใช้เพื่อกำหนดและจัดการหมวดหมู่สินค้าหรือการจัดกลุ่มที่คล้ายกันภายในแอปพลิเคชัน" +" ช่วยให้ผู้ใช้หรือผู้ดูแลระบบสามารถระบุชื่อ คำอธิบาย และลำดับชั้นของหมวดหมู่" +" รวมถึงกำหนดคุณลักษณะต่างๆ เช่น รูปภาพ แท็ก หรือความสำคัญ" #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1661,10 +1740,11 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"แทนวัตถุแบรนด์ในระบบ คลาสนี้จัดการข้อมูลและคุณลักษณะที่เกี่ยวข้องกับแบรนด์ รวมถึงชื่อ โลโก้ " -"คำอธิบาย หมวดหมู่ที่เกี่ยวข้อง สลักเฉพาะ และลำดับความสำคัญ " +"แทนวัตถุแบรนด์ในระบบ คลาสนี้จัดการข้อมูลและคุณลักษณะที่เกี่ยวข้องกับแบรนด์ " +"รวมถึงชื่อ โลโก้ คำอธิบาย หมวดหมู่ที่เกี่ยวข้อง สลักเฉพาะ และลำดับความสำคัญ " "ช่วยให้สามารถจัดระเบียบและแสดงข้อมูลที่เกี่ยวข้องกับแบรนด์ภายในแอปพลิเคชันได้" #: engine/core/models.py:448 @@ -1709,18 +1789,19 @@ msgstr "หมวดหมู่" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"แสดงถึงสต็อกของสินค้าที่จัดการในระบบ คลาสนี้ให้รายละเอียดเกี่ยวกับความสัมพันธ์ระหว่างผู้จำหน่าย, " -"สินค้า, และข้อมูลสต็อกของพวกเขา รวมถึงคุณสมบัติที่เกี่ยวข้องกับสินค้าคงคลัง เช่น ราคา, ราคาซื้อ, " -"จำนวน, รหัสสินค้า (SKU), และสินทรัพย์ดิจิทัล " -"เป็นส่วนหนึ่งของระบบการจัดการสินค้าคงคลังเพื่อให้สามารถติดตามและประเมินสินค้าที่มีจากผู้จำหน่ายต่างๆ " -"ได้" +"แสดงถึงสต็อกของสินค้าที่จัดการในระบบ " +"คลาสนี้ให้รายละเอียดเกี่ยวกับความสัมพันธ์ระหว่างผู้จำหน่าย, สินค้า, " +"และข้อมูลสต็อกของพวกเขา รวมถึงคุณสมบัติที่เกี่ยวข้องกับสินค้าคงคลัง เช่น " +"ราคา, ราคาซื้อ, จำนวน, รหัสสินค้า (SKU), และสินทรัพย์ดิจิทัล " +"เป็นส่วนหนึ่งของระบบการจัดการสินค้าคงคลังเพื่อให้สามารถติดตามและประเมินสินค้าที่มีจากผู้จำหน่ายต่างๆ" +" ได้" #: engine/core/models.py:520 msgid "the vendor supplying this product stock" @@ -1798,11 +1879,13 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"แสดงถึงผลิตภัณฑ์ที่มีคุณลักษณะต่างๆ เช่น หมวดหมู่, แบรนด์, แท็ก, สถานะดิจิทัล, ชื่อ, คำอธิบาย, " -"หมายเลขชิ้นส่วน, และ slug ให้คุณสมบัติประโยชน์ที่เกี่ยวข้องเพื่อดึงคะแนน, จำนวนความคิดเห็น, " -"ราคา, จำนวนสินค้า, และยอดสั่งซื้อทั้งหมด " +"แสดงถึงผลิตภัณฑ์ที่มีคุณลักษณะต่างๆ เช่น หมวดหมู่, แบรนด์, แท็ก, " +"สถานะดิจิทัล, ชื่อ, คำอธิบาย, หมายเลขชิ้นส่วน, และ slug " +"ให้คุณสมบัติประโยชน์ที่เกี่ยวข้องเพื่อดึงคะแนน, จำนวนความคิดเห็น, ราคา, " +"จำนวนสินค้า, และยอดสั่งซื้อทั้งหมด " "ออกแบบมาเพื่อใช้ในระบบที่จัดการอีคอมเมิร์ซหรือการจัดการสินค้าคงคลัง " -"คลาสนี้โต้ตอบกับโมเดลที่เกี่ยวข้อง (เช่น หมวดหมู่, แบรนด์, และแท็กผลิตภัณฑ์) " +"คลาสนี้โต้ตอบกับโมเดลที่เกี่ยวข้อง (เช่น หมวดหมู่, แบรนด์, และแท็กผลิตภัณฑ์)" +" " "และจัดการการแคชสำหรับคุณสมบัติที่เข้าถึงบ่อยเพื่อปรับปรุงประสิทธิภาพใช้เพื่อกำหนดและจัดการข้อมูลผลิตภัณฑ์และข้อมูลที่เกี่ยวข้องภายในแอปพลิเคชัน" #: engine/core/models.py:585 @@ -1858,14 +1941,15 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "แทนคุณสมบัติในระบบ. คลาสนี้ใช้เพื่อกำหนดและจัดการคุณสมบัติ " -"ซึ่งเป็นข้อมูลที่สามารถปรับแต่งได้ซึ่งสามารถเชื่อมโยงกับเอนทิตีอื่น ๆ ได้. คุณสมบัติมีหมวดหมู่, กลุ่ม, " -"ประเภทค่า, และชื่อที่เกี่ยวข้อง. แบบจำลองรองรับหลายประเภทของค่า รวมถึงสตริง, จำนวนเต็ม, " -"จำนวนทศนิยม, บูลีน, อาร์เรย์, และออบเจ็กต์. " +"ซึ่งเป็นข้อมูลที่สามารถปรับแต่งได้ซึ่งสามารถเชื่อมโยงกับเอนทิตีอื่น ๆ ได้. " +"คุณสมบัติมีหมวดหมู่, กลุ่ม, ประเภทค่า, และชื่อที่เกี่ยวข้อง. " +"แบบจำลองรองรับหลายประเภทของค่า รวมถึงสตริง, จำนวนเต็ม, จำนวนทศนิยม, บูลีน, " +"อาร์เรย์, และออบเจ็กต์. " "ซึ่งช่วยให้สามารถจัดโครงสร้างข้อมูลได้ไดนามิกและยืดหยุ่น." #: engine/core/models.py:733 @@ -1927,11 +2011,12 @@ msgstr "คุณสมบัติ" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"แทนค่าเฉพาะสำหรับคุณลักษณะที่เชื่อมโยงกับผลิตภัณฑ์ มันเชื่อมโยง 'คุณลักษณะ' กับ 'ค่า' ที่ไม่ซ้ำกัน " +"แทนค่าเฉพาะสำหรับคุณลักษณะที่เชื่อมโยงกับผลิตภัณฑ์ มันเชื่อมโยง 'คุณลักษณะ' " +"กับ 'ค่า' ที่ไม่ซ้ำกัน " "ทำให้การจัดระเบียบและการแสดงลักษณะของผลิตภัณฑ์เป็นไปอย่างมีประสิทธิภาพและยืดหยุ่นมากขึ้น" #: engine/core/models.py:788 @@ -1949,14 +2034,16 @@ msgstr "ค่าเฉพาะสำหรับคุณสมบัติน #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"แสดงภาพสินค้าที่เกี่ยวข้องกับสินค้าในระบบ. คลาสนี้ออกแบบมาเพื่อจัดการภาพสำหรับสินค้า " +"แสดงภาพสินค้าที่เกี่ยวข้องกับสินค้าในระบบ. " +"คลาสนี้ออกแบบมาเพื่อจัดการภาพสำหรับสินค้า " "รวมถึงฟังก์ชันสำหรับการอัปโหลดไฟล์ภาพ, การเชื่อมโยงกับสินค้าเฉพาะ, " -"และการกำหนดลำดับการแสดงผล. นอกจากนี้ยังมีคุณสมบัติการเข้าถึงสำหรับผู้ใช้ที่มีความต้องการพิเศษ " +"และการกำหนดลำดับการแสดงผล. " +"นอกจากนี้ยังมีคุณสมบัติการเข้าถึงสำหรับผู้ใช้ที่มีความต้องการพิเศษ " "โดยให้ข้อความทางเลือกสำหรับภาพ." #: engine/core/models.py:826 @@ -1997,13 +2084,13 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "แสดงถึงแคมเปญส่งเสริมการขายสำหรับสินค้าที่มีส่วนลด. " -"คลาสนี้ใช้เพื่อกำหนดและจัดการแคมเปญส่งเสริมการขายที่มอบส่วนลดเป็นเปอร์เซ็นต์สำหรับสินค้า. " -"คลาสนี้ประกอบด้วยคุณสมบัติสำหรับการตั้งค่าอัตราส่วนลด, ให้รายละเอียดเกี่ยวกับโปรโมชั่น, " -"และเชื่อมโยงกับสินค้าที่เกี่ยวข้อง. " +"คลาสนี้ใช้เพื่อกำหนดและจัดการแคมเปญส่งเสริมการขายที่มอบส่วนลดเป็นเปอร์เซ็นต์สำหรับสินค้า." +" คลาสนี้ประกอบด้วยคุณสมบัติสำหรับการตั้งค่าอัตราส่วนลด, " +"ให้รายละเอียดเกี่ยวกับโปรโมชั่น, และเชื่อมโยงกับสินค้าที่เกี่ยวข้อง. " "คลาสนี้ผสานการทำงานกับแคตตาล็อกสินค้าเพื่อกำหนดสินค้าที่ได้รับผลกระทบในแคมเปญ." #: engine/core/models.py:880 @@ -2045,9 +2132,10 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"แสดงรายการสินค้าที่ผู้ใช้ต้องการเก็บไว้เพื่อจัดการและค้นหาสินค้าที่ต้องการในอนาคต " -"คลาสนี้ให้บริการฟังก์ชันสำหรับการจัดการคอลเลกชันของสินค้า " -"ซึ่งรวมถึงการเพิ่มและลบสินค้าออกจากคอลเลกชัน ตลอดจนการเพิ่มและลบสินค้าหลายรายการพร้อมกัน" +"แสดงรายการสินค้าที่ผู้ใช้ต้องการเก็บไว้เพื่อจัดการและค้นหาสินค้าที่ต้องการในอนาคต" +" คลาสนี้ให้บริการฟังก์ชันสำหรับการจัดการคอลเลกชันของสินค้า " +"ซึ่งรวมถึงการเพิ่มและลบสินค้าออกจากคอลเลกชัน " +"ตลอดจนการเพิ่มและลบสินค้าหลายรายการพร้อมกัน" #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2071,14 +2159,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "แทนเอกสารบันทึกที่เกี่ยวข้องกับผลิตภัณฑ์. " "คลาสนี้ใช้เพื่อเก็บข้อมูลเกี่ยวกับเอกสารที่เกี่ยวข้องกับผลิตภัณฑ์เฉพาะ " "รวมถึงการอัปโหลดไฟล์และข้อมูลเมตาของไฟล์. " -"คลาสนี้มีเมธอดและคุณสมบัติเพื่อจัดการกับประเภทไฟล์และเส้นทางจัดเก็บสำหรับไฟล์เอกสาร. " -"คลาสนี้ขยายฟังก์ชันการทำงานจากมิกซ์อินเฉพาะ และให้คุณสมบัติเพิ่มเติมตามความต้องการ." +"คลาสนี้มีเมธอดและคุณสมบัติเพื่อจัดการกับประเภทไฟล์และเส้นทางจัดเก็บสำหรับไฟล์เอกสาร." +" คลาสนี้ขยายฟังก์ชันการทำงานจากมิกซ์อินเฉพาะ " +"และให้คุณสมบัติเพิ่มเติมตามความต้องการ." #: engine/core/models.py:998 msgid "documentary" @@ -2094,23 +2183,24 @@ msgstr "ยังไม่ได้รับการแก้ไข" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "แทนที่หน่วยงานที่อยู่ซึ่งรวมถึงรายละเอียดตำแหน่งและความสัมพันธ์กับผู้ใช้ " "ให้ฟังก์ชันสำหรับการจัดเก็บข้อมูลทางภูมิศาสตร์และที่อยู่ " "รวมถึงการผสานรวมกับบริการการเข้ารหัสทางภูมิศาสตร์ " -"คลาสนี้ถูกออกแบบมาเพื่อจัดเก็บข้อมูลที่อยู่โดยละเอียด รวมถึงองค์ประกอบเช่น ถนน เมือง ภูมิภาค " -"ประเทศ และตำแหน่งทางภูมิศาสตร์ (ลองจิจูดและละติจูด) รองรับการผสานรวมกับ API " -"การเข้ารหัสทางภูมิศาสตร์ ทำให้สามารถจัดเก็บการตอบสนองของ API " -"ดิบเพื่อการประมวลผลหรือตรวจสอบเพิ่มเติมได้คลาสนี้ยังอนุญาตให้เชื่อมโยงที่อยู่กับผู้ใช้ได้ " -"ซึ่งช่วยให้การจัดการข้อมูลส่วนบุคคลเป็นไปอย่างสะดวก" +"คลาสนี้ถูกออกแบบมาเพื่อจัดเก็บข้อมูลที่อยู่โดยละเอียด รวมถึงองค์ประกอบเช่น " +"ถนน เมือง ภูมิภาค ประเทศ และตำแหน่งทางภูมิศาสตร์ (ลองจิจูดและละติจูด) " +"รองรับการผสานรวมกับ API การเข้ารหัสทางภูมิศาสตร์ " +"ทำให้สามารถจัดเก็บการตอบสนองของ API " +"ดิบเพื่อการประมวลผลหรือตรวจสอบเพิ่มเติมได้คลาสนี้ยังอนุญาตให้เชื่อมโยงที่อยู่กับผู้ใช้ได้" +" ซึ่งช่วยให้การจัดการข้อมูลส่วนบุคคลเป็นไปอย่างสะดวก" #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2173,12 +2263,13 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"แสดงรหัสโปรโมชั่นที่สามารถใช้เพื่อรับส่วนลด การจัดการความถูกต้อง ประเภทของส่วนลด " -"และการใช้งาน คลาส PromoCode จัดเก็บรายละเอียดเกี่ยวกับรหัสโปรโมชั่น รวมถึงตัวระบุที่ไม่ซ้ำกัน " -"คุณสมบัติของส่วนลด (จำนวนหรือเปอร์เซ็นต์) ระยะเวลาการใช้งาน ผู้ใช้ที่เกี่ยวข้อง (ถ้ามี) " -"และสถานะการใช้งาน " -"รวมถึงฟังก์ชันการทำงานเพื่อตรวจสอบและใช้รหัสโปรโมชั่นกับคำสั่งซื้อในขณะที่ตรวจสอบให้แน่ใจว่าข้อจำกัดต่างๆ " -"ได้รับการปฏิบัติตาม" +"แสดงรหัสโปรโมชั่นที่สามารถใช้เพื่อรับส่วนลด การจัดการความถูกต้อง " +"ประเภทของส่วนลด และการใช้งาน คลาส PromoCode " +"จัดเก็บรายละเอียดเกี่ยวกับรหัสโปรโมชั่น รวมถึงตัวระบุที่ไม่ซ้ำกัน " +"คุณสมบัติของส่วนลด (จำนวนหรือเปอร์เซ็นต์) ระยะเวลาการใช้งาน " +"ผู้ใช้ที่เกี่ยวข้อง (ถ้ามี) และสถานะการใช้งาน " +"รวมถึงฟังก์ชันการทำงานเพื่อตรวจสอบและใช้รหัสโปรโมชั่นกับคำสั่งซื้อในขณะที่ตรวจสอบให้แน่ใจว่าข้อจำกัดต่างๆ" +" ได้รับการปฏิบัติตาม" #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2265,16 +2356,19 @@ msgstr "ประเภทส่วนลดไม่ถูกต้องสำ msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"แทนคำสั่งซื้อที่ผู้ใช้ได้ทำการสั่งซื้อไว้ คลาสนี้จำลองคำสั่งซื้อภายในแอปพลิเคชัน รวมถึงคุณสมบัติต่าง ๆ " -"เช่น ข้อมูลการเรียกเก็บเงิน ข้อมูลการจัดส่ง สถานะ ผู้ใช้ที่เกี่ยวข้อง การแจ้งเตือน " -"และการดำเนินการที่เกี่ยวข้อง คำสั่งซื้อสามารถมีสินค้าที่เกี่ยวข้องได้ โปรโมชั่นสามารถนำมาใช้ได้ " -"ที่อยู่สามารถตั้งค่าได้ และรายละเอียดการจัดส่งหรือการเรียกเก็บเงินสามารถอัปเดตได้เช่นกัน " -"นอกจากนี้ ฟังก์ชันการทำงานยังรองรับการจัดการสินค้าในวงจรชีวิตของคำสั่งซื้อ" +"แทนคำสั่งซื้อที่ผู้ใช้ได้ทำการสั่งซื้อไว้ " +"คลาสนี้จำลองคำสั่งซื้อภายในแอปพลิเคชัน รวมถึงคุณสมบัติต่าง ๆ เช่น " +"ข้อมูลการเรียกเก็บเงิน ข้อมูลการจัดส่ง สถานะ ผู้ใช้ที่เกี่ยวข้อง " +"การแจ้งเตือน และการดำเนินการที่เกี่ยวข้อง " +"คำสั่งซื้อสามารถมีสินค้าที่เกี่ยวข้องได้ โปรโมชั่นสามารถนำมาใช้ได้ " +"ที่อยู่สามารถตั้งค่าได้ " +"และรายละเอียดการจัดส่งหรือการเรียกเก็บเงินสามารถอัปเดตได้เช่นกัน นอกจากนี้ " +"ฟังก์ชันการทำงานยังรองรับการจัดการสินค้าในวงจรชีวิตของคำสั่งซื้อ" #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2344,11 +2438,13 @@ msgstr "คำสั่ง" #: engine/core/models.py:1319 msgid "a user must have only one pending order at a time" -msgstr "ผู้ใช้ต้องมีคำสั่งซื้อที่รอดำเนินการเพียงหนึ่งรายการเท่านั้นในแต่ละครั้ง!" +msgstr "" +"ผู้ใช้ต้องมีคำสั่งซื้อที่รอดำเนินการเพียงหนึ่งรายการเท่านั้นในแต่ละครั้ง!" #: engine/core/models.py:1351 msgid "you cannot add products to an order that is not a pending one" -msgstr "คุณไม่สามารถเพิ่มสินค้าในคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่รอดำเนินการได้" +msgstr "" +"คุณไม่สามารถเพิ่มสินค้าในคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่รอดำเนินการได้" #: engine/core/models.py:1356 msgid "you cannot add inactive products to order" @@ -2361,7 +2457,8 @@ msgstr "คุณไม่สามารถเพิ่มสินค้าไ #: engine/core/models.py:1395 engine/core/models.py:1420 #: engine/core/models.py:1428 msgid "you cannot remove products from an order that is not a pending one" -msgstr "คุณไม่สามารถลบสินค้าออกจากคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่อยู่ในสถานะรอดำเนินการได้" +msgstr "" +"คุณไม่สามารถลบสินค้าออกจากคำสั่งซื้อที่ไม่ใช่คำสั่งซื้อที่อยู่ในสถานะรอดำเนินการได้" #: engine/core/models.py:1416 #, python-brace-format @@ -2374,7 +2471,8 @@ msgstr "รหัสโปรโมชั่นไม่มีอยู่" #: engine/core/models.py:1454 msgid "you can only buy physical products with shipping address specified" -msgstr "คุณสามารถซื้อได้เฉพาะสินค้าทางกายภาพที่มีที่อยู่สำหรับจัดส่งระบุไว้เท่านั้น!" +msgstr "" +"คุณสามารถซื้อได้เฉพาะสินค้าทางกายภาพที่มีที่อยู่สำหรับจัดส่งระบุไว้เท่านั้น!" #: engine/core/models.py:1473 msgid "address does not exist" @@ -2409,14 +2507,15 @@ msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"คุณไม่สามารถซื้อได้หากไม่มีการลงทะเบียน กรุณาให้ข้อมูลต่อไปนี้: ชื่อลูกค้า, อีเมลลูกค้า, " -"หมายเลขโทรศัพท์ลูกค้า" +"คุณไม่สามารถซื้อได้หากไม่มีการลงทะเบียน กรุณาให้ข้อมูลต่อไปนี้: ชื่อลูกค้า, " +"อีเมลลูกค้า, หมายเลขโทรศัพท์ลูกค้า" #: engine/core/models.py:1584 #, python-brace-format msgid "" "invalid payment method: {payment_method} from {available_payment_methods}" -msgstr "วิธีการชำระเงินไม่ถูกต้อง: {payment_method} จาก {available_payment_methods}!" +msgstr "" +"วิธีการชำระเงินไม่ถูกต้อง: {payment_method} จาก {available_payment_methods}!" #: engine/core/models.py:1699 msgid "" @@ -2427,9 +2526,9 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "จัดการข้อเสนอแนะของผู้ใช้สำหรับผลิตภัณฑ์ " -"คลาสนี้ถูกออกแบบมาเพื่อรวบรวมและจัดเก็บข้อมูลข้อเสนอแนะของผู้ใช้สำหรับผลิตภัณฑ์เฉพาะที่พวกเขาได้ซื้อ " -"ประกอบด้วยแอตทริบิวต์สำหรับจัดเก็บความคิดเห็นของผู้ใช้ การอ้างอิงถึงผลิตภัณฑ์ที่เกี่ยวข้องในคำสั่งซื้อ " -"และคะแนนที่ผู้ใช้กำหนด " +"คลาสนี้ถูกออกแบบมาเพื่อรวบรวมและจัดเก็บข้อมูลข้อเสนอแนะของผู้ใช้สำหรับผลิตภัณฑ์เฉพาะที่พวกเขาได้ซื้อ" +" ประกอบด้วยแอตทริบิวต์สำหรับจัดเก็บความคิดเห็นของผู้ใช้ " +"การอ้างอิงถึงผลิตภัณฑ์ที่เกี่ยวข้องในคำสั่งซื้อ และคะแนนที่ผู้ใช้กำหนด " "คลาสนี้ใช้ฟิลด์ในฐานข้อมูลเพื่อสร้างแบบจำลองและจัดการข้อมูลข้อเสนอแนะอย่างมีประสิทธิภาพ" #: engine/core/models.py:1711 @@ -2441,7 +2540,8 @@ msgid "feedback comments" msgstr "ความคิดเห็นจากผู้ตอบแบบสอบถาม" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "อ้างอิงถึงผลิตภัณฑ์เฉพาะในคำสั่งซื้อที่ความคิดเห็นนี้เกี่ยวข้อง" #: engine/core/models.py:1720 @@ -2468,12 +2568,14 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"แสดงผลิตภัณฑ์ที่เกี่ยวข้องกับคำสั่งซื้อและคุณลักษณะของผลิตภัณฑ์โมเดล OrderProduct " -"ดูแลข้อมูลเกี่ยวกับสินค้าที่เป็นส่วนหนึ่งของคำสั่งซื้อ รวมถึงรายละเอียดเช่น ราคาซื้อ จำนวน " -"คุณสมบัติของสินค้า และสถานะ โมเดลนี้จัดการการแจ้งเตือนสำหรับผู้ใช้และผู้ดูแลระบบ " +"แสดงผลิตภัณฑ์ที่เกี่ยวข้องกับคำสั่งซื้อและคุณลักษณะของผลิตภัณฑ์โมเดล " +"OrderProduct ดูแลข้อมูลเกี่ยวกับสินค้าที่เป็นส่วนหนึ่งของคำสั่งซื้อ " +"รวมถึงรายละเอียดเช่น ราคาซื้อ จำนวน คุณสมบัติของสินค้า และสถานะ " +"โมเดลนี้จัดการการแจ้งเตือนสำหรับผู้ใช้และผู้ดูแลระบบ " "และจัดการการดำเนินการเช่น การคืนสินค้าคงเหลือหรือการเพิ่มความคิดเห็น " -"โมเดลนี้ยังมีวิธีการและคุณสมบัติที่สนับสนุนตรรกะทางธุรกิจ เช่น การคำนวณราคารวมหรือการสร้าง URL " -"สำหรับดาวน์โหลดสินค้าดิจิทัล โมเดลนี้ผสานรวมกับโมเดล Order และ Product " +"โมเดลนี้ยังมีวิธีการและคุณสมบัติที่สนับสนุนตรรกะทางธุรกิจ เช่น " +"การคำนวณราคารวมหรือการสร้าง URL สำหรับดาวน์โหลดสินค้าดิจิทัล " +"โมเดลนี้ผสานรวมกับโมเดล Order และ Product " "และเก็บการอ้างอิงถึงโมเดลเหล่านี้ไว้" #: engine/core/models.py:1757 @@ -2582,14 +2684,14 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"แสดงถึงฟังก์ชันการดาวน์โหลดสำหรับสินทรัพย์ดิจิทัลที่เกี่ยวข้องกับคำสั่งซื้อ คลาส " -"DigitalAssetDownload " -"ให้ความสามารถในการจัดการและเข้าถึงการดาวน์โหลดที่เกี่ยวข้องกับผลิตภัณฑ์ในคำสั่งซื้อ " -"มันเก็บข้อมูลเกี่ยวกับผลิตภัณฑ์ในคำสั่งซื้อที่เกี่ยวข้อง จำนวนการดาวน์โหลด " +"แสดงถึงฟังก์ชันการดาวน์โหลดสำหรับสินทรัพย์ดิจิทัลที่เกี่ยวข้องกับคำสั่งซื้อ " +"คลาส DigitalAssetDownload " +"ให้ความสามารถในการจัดการและเข้าถึงการดาวน์โหลดที่เกี่ยวข้องกับผลิตภัณฑ์ในคำสั่งซื้อ" +" มันเก็บข้อมูลเกี่ยวกับผลิตภัณฑ์ในคำสั่งซื้อที่เกี่ยวข้อง จำนวนการดาวน์โหลด " "และว่าสินทรัพย์นั้นสามารถมองเห็นได้สาธารณะหรือไม่ รวมถึงวิธีการสร้าง URL " "สำหรับการดาวน์โหลดสินทรัพย์เมื่อคำสั่งซื้อที่เกี่ยวข้องอยู่ในสถานะเสร็จสมบูรณ์" @@ -2604,7 +2706,8 @@ msgstr "ดาวน์โหลด" #: engine/core/serializers/utility.py:89 msgid "" "you must provide a comment, rating, and order product uuid to add feedback." -msgstr "คุณต้องแสดงความคิดเห็น, ให้คะแนน, และระบุ uuid ของสินค้าเพื่อเพิ่มคำแนะนำ" +msgstr "" +"คุณต้องแสดงความคิดเห็น, ให้คะแนน, และระบุ uuid ของสินค้าเพื่อเพิ่มคำแนะนำ" #: engine/core/sitemaps.py:25 msgid "Home" @@ -2647,12 +2750,12 @@ msgstr "สวัสดีครับ/ค่ะ %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "ขอบคุณสำหรับคำสั่งซื้อของคุณ #%(order.pk)s! " -"เราขอแจ้งให้คุณทราบว่าเราได้ดำเนินการตามคำสั่งซื้อของคุณแล้ว รายละเอียดของคำสั่งซื้อของคุณมีดังนี้:" +"เราขอแจ้งให้คุณทราบว่าเราได้ดำเนินการตามคำสั่งซื้อของคุณแล้ว " +"รายละเอียดของคำสั่งซื้อของคุณมีดังนี้:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2675,7 +2778,9 @@ msgstr "ราคาทั้งหมด" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "หากคุณมีคำถามใด ๆ โปรดติดต่อทีมสนับสนุนของเราได้ที่ %(config.EMAIL_HOST_USER)s" +msgstr "" +"หากคุณมีคำถามใด ๆ โปรดติดต่อทีมสนับสนุนของเราได้ที่ " +"%(config.EMAIL_HOST_USER)s" #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2754,12 +2859,11 @@ msgstr "ขอบคุณที่เข้าพักกับเรา! เ #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" -"ขอบคุณสำหรับการสั่งซื้อของคุณ! เราขอแจ้งยืนยันการสั่งซื้อของคุณเรียบร้อยแล้ว " -"รายละเอียดการสั่งซื้อของคุณมีดังนี้:" +"ขอบคุณสำหรับการสั่งซื้อของคุณ! เราขอแจ้งยืนยันการสั่งซื้อของคุณเรียบร้อยแล้ว" +" รายละเอียดการสั่งซื้อของคุณมีดังนี้:" #: engine/core/templates/shipped_order_created_email.html:123 #: engine/core/templates/shipped_order_delivered_email.html:123 @@ -2825,7 +2929,7 @@ msgstr "ต้องกำหนดค่าพารามิเตอร์ NO msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "ขนาดของภาพไม่ควรเกิน w{max_width} x h{max_height} พิกเซล!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2833,103 +2937,106 @@ msgstr "" "จัดการคำขอสำหรับดัชนีแผนผังเว็บไซต์และส่งคืนการตอบสนองในรูปแบบ XML " "โดยตรวจสอบให้แน่ใจว่าการตอบสนองมีหัวข้อประเภทเนื้อหาที่เหมาะสมสำหรับ XML" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"จัดการการตอบสนองมุมมองรายละเอียดสำหรับแผนผังเว็บไซต์ ฟังก์ชันนี้ประมวลผลคำขอ " -"ดึงการตอบสนองรายละเอียดแผนผังเว็บไซต์ที่เหมาะสม และตั้งค่าส่วนหัว Content-Type สำหรับ XML" +"จัดการการตอบสนองมุมมองรายละเอียดสำหรับแผนผังเว็บไซต์ ฟังก์ชันนี้ประมวลผลคำขอ" +" ดึงการตอบสนองรายละเอียดแผนผังเว็บไซต์ที่เหมาะสม และตั้งค่าส่วนหัว Content-" +"Type สำหรับ XML" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "ส่งคืนรายการของภาษาที่รองรับและข้อมูลที่เกี่ยวข้อง" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "ส่งคืนพารามิเตอร์ของเว็บไซต์ในรูปแบบอ็อบเจ็กต์ JSON" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"จัดการการดำเนินการแคช เช่น การอ่านและการตั้งค่าข้อมูลแคชด้วยคีย์ที่กำหนดและเวลาหมดอายุ" +"จัดการการดำเนินการแคช เช่น " +"การอ่านและการตั้งค่าข้อมูลแคชด้วยคีย์ที่กำหนดและเวลาหมดอายุ" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "จัดการการส่งแบบฟอร์ม 'ติดต่อเรา'" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "" -"จัดการคำขอสำหรับการประมวลผลและตรวจสอบความถูกต้องของ URL จากคำขอ POST ที่เข้ามา" +"จัดการคำขอสำหรับการประมวลผลและตรวจสอบความถูกต้องของ URL จากคำขอ POST " +"ที่เข้ามา" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "จัดการคำค้นหาทั่วโลก" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "จัดการตรรกะของการซื้อในฐานะธุรกิจโดยไม่ต้องจดทะเบียน" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "จัดการการดาวน์โหลดสินทรัพย์ดิจิทัลที่เกี่ยวข้องกับคำสั่งซื้อ " -"ฟังก์ชันนี้พยายามให้บริการไฟล์สินทรัพย์ดิจิทัลที่อยู่ในไดเรกทอรีจัดเก็บของโครงการ หากไม่พบไฟล์ " -"จะเกิดข้อผิดพลาด HTTP 404 เพื่อระบุว่าทรัพยากรไม่พร้อมใช้งาน" +"ฟังก์ชันนี้พยายามให้บริการไฟล์สินทรัพย์ดิจิทัลที่อยู่ในไดเรกทอรีจัดเก็บของโครงการ" +" หากไม่พบไฟล์ จะเกิดข้อผิดพลาด HTTP 404 เพื่อระบุว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid เป็นข้อมูลที่จำเป็น" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "คำสั่งซื้อสินค้าไม่มีอยู่" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "คุณสามารถดาวน์โหลดสินทรัพย์ดิจิทัลได้เพียงครั้งเดียวเท่านั้น" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "คำสั่งซื้อจะต้องชำระเงินก่อนดาวน์โหลดสินทรัพย์ดิจิทัล" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "สินค้าตามคำสั่งซื้อไม่มีสินค้า" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "ไม่พบไอคอนเว็บไซต์" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"จัดการคำขอสำหรับไอคอนเว็บไซต์ (favicon) ฟังก์ชันนี้พยายามให้บริการไฟล์ favicon " -"ที่อยู่ในไดเรกทอรีแบบคงที่ของโปรเจกต์ หากไม่พบไฟล์ favicon จะเกิดข้อผิดพลาด HTTP 404 " -"เพื่อแสดงว่าทรัพยากรไม่พร้อมใช้งาน" +"จัดการคำขอสำหรับไอคอนเว็บไซต์ (favicon) ฟังก์ชันนี้พยายามให้บริการไฟล์ " +"favicon ที่อยู่ในไดเรกทอรีแบบคงที่ของโปรเจกต์ หากไม่พบไฟล์ favicon " +"จะเกิดข้อผิดพลาด HTTP 404 เพื่อแสดงว่าทรัพยากรไม่พร้อมใช้งาน" -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "เปลี่ยนเส้นทางคำขอไปยังหน้าดัชนีของผู้ดูแลระบบ ฟังก์ชันนี้จัดการคำขอ HTTP " -"ที่เข้ามาและเปลี่ยนเส้นทางไปยังหน้าดัชนีของอินเทอร์เฟซผู้ดูแลระบบ Django โดยใช้ฟังก์ชัน " -"`redirect` ของ Django สำหรับการเปลี่ยนเส้นทาง HTTP" +"ที่เข้ามาและเปลี่ยนเส้นทางไปยังหน้าดัชนีของอินเทอร์เฟซผู้ดูแลระบบ Django " +"โดยใช้ฟังก์ชัน `redirect` ของ Django สำหรับการเปลี่ยนเส้นทาง HTTP" -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "ส่งคืนเวอร์ชันปัจจุบันของ eVibes" @@ -2941,23 +3048,25 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"กำหนดชุดมุมมองสำหรับการจัดการการดำเนินการที่เกี่ยวข้องกับ Evibes คลาส EvibesViewSet " -"สืบทอดมาจาก ModelViewSet " -"และให้ฟังก์ชันการทำงานสำหรับการจัดการการกระทำและการดำเนินการบนเอนทิตีของ Evibes " -"รวมถึงการรองรับคลาสตัวแปลงแบบไดนามิกตามการกระทำปัจจุบัน การอนุญาตที่ปรับแต่งได้ " -"และรูปแบบการแสดงผล" +"กำหนดชุดมุมมองสำหรับการจัดการการดำเนินการที่เกี่ยวข้องกับ Evibes คลาส " +"EvibesViewSet สืบทอดมาจาก ModelViewSet " +"และให้ฟังก์ชันการทำงานสำหรับการจัดการการกระทำและการดำเนินการบนเอนทิตีของ " +"Evibes รวมถึงการรองรับคลาสตัวแปลงแบบไดนามิกตามการกระทำปัจจุบัน " +"การอนุญาตที่ปรับแต่งได้ และรูปแบบการแสดงผล" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"แสดงชุดมุมมองสำหรับการจัดการวัตถุ AttributeGroup ดำเนินการที่เกี่ยวข้องกับ AttributeGroup " -"รวมถึงการกรอง การแปลงข้อมูลเป็นรูปแบบที่ส่งผ่านได้ และการดึงข้อมูล คลาสนี้เป็นส่วนหนึ่งของชั้น " -"API ของแอปพลิเคชันและให้วิธีการมาตรฐานในการประมวลผลคำขอและการตอบสนองสำหรับข้อมูล " -"AttributeGroup" +"แสดงชุดมุมมองสำหรับการจัดการวัตถุ AttributeGroup ดำเนินการที่เกี่ยวข้องกับ " +"AttributeGroup รวมถึงการกรอง การแปลงข้อมูลเป็นรูปแบบที่ส่งผ่านได้ " +"และการดึงข้อมูล คลาสนี้เป็นส่วนหนึ่งของชั้น API " +"ของแอปพลิเคชันและให้วิธีการมาตรฐานในการประมวลผลคำขอและการตอบสนองสำหรับข้อมูล" +" AttributeGroup" #: engine/core/viewsets.py:176 msgid "" @@ -2968,24 +3077,26 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุ Attribute ภายในแอปพลิเคชัน ให้ชุดของจุดสิ้นสุด API " -"สำหรับการโต้ตอบกับข้อมูล Attribute คลาสนี้จัดการการค้นหา การกรอง และการแปลงวัตถุ " -"Attribute เป็นรูปแบบที่อ่านได้ ช่วยให้สามารถควบคุมข้อมูลที่ส่งคืนได้อย่างยืดหยุ่น เช่น " -"การกรองตามฟิลด์เฉพาะ หรือการดึงข้อมูลแบบละเอียดหรือแบบย่อ ขึ้นอยู่กับความต้องการของคำขอ" +"จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุ Attribute ภายในแอปพลิเคชัน " +"ให้ชุดของจุดสิ้นสุด API สำหรับการโต้ตอบกับข้อมูล Attribute " +"คลาสนี้จัดการการค้นหา การกรอง และการแปลงวัตถุ Attribute เป็นรูปแบบที่อ่านได้" +" ช่วยให้สามารถควบคุมข้อมูลที่ส่งคืนได้อย่างยืดหยุ่น เช่น " +"การกรองตามฟิลด์เฉพาะ หรือการดึงข้อมูลแบบละเอียดหรือแบบย่อ " +"ขึ้นอยู่กับความต้องการของคำขอ" #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "ชุดมุมมองสำหรับการจัดการวัตถุ AttributeValue " -"ชุดมุมมองนี้ให้ฟังก์ชันการทำงานสำหรับการแสดงรายการ การดึงข้อมูล การสร้าง การอัปเดต " -"และการลบวัตถุ AttributeValue มันผสานรวมกับกลไกชุดมุมมองของ Django REST Framework " -"และใช้ตัวแปลงข้อมูลที่เหมาะสมสำหรับแต่ละการกระทำ ความสามารถในการกรองข้อมูลมีให้ผ่าน " -"DjangoFilterBackend" +"ชุดมุมมองนี้ให้ฟังก์ชันการทำงานสำหรับการแสดงรายการ การดึงข้อมูล การสร้าง " +"การอัปเดต และการลบวัตถุ AttributeValue มันผสานรวมกับกลไกชุดมุมมองของ Django " +"REST Framework และใช้ตัวแปลงข้อมูลที่เหมาะสมสำหรับแต่ละการกระทำ " +"ความสามารถในการกรองข้อมูลมีให้ผ่าน DjangoFilterBackend" #: engine/core/viewsets.py:214 msgid "" @@ -2996,8 +3107,9 @@ msgid "" "can access specific data." msgstr "" "จัดการมุมมองสำหรับการดำเนินการที่เกี่ยวข้องกับหมวดหมู่ คลาส CategoryViewSet " -"รับผิดชอบในการจัดการการดำเนินการที่เกี่ยวข้องกับโมเดลหมวดหมู่ในระบบ มันรองรับการดึงข้อมูล " -"การกรอง และการแปลงข้อมูลหมวดหมู่เป็นรูปแบบที่ส่งต่อได้ " +"รับผิดชอบในการจัดการการดำเนินการที่เกี่ยวข้องกับโมเดลหมวดหมู่ในระบบ " +"มันรองรับการดึงข้อมูล การกรอง และการแปลงข้อมูลหมวดหมู่เป็นรูปแบบที่ส่งต่อได้" +" " "ชุดมุมมองนี้ยังบังคับใช้สิทธิ์การเข้าถึงเพื่อให้แน่ใจว่าเฉพาะผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงข้อมูลเฉพาะได้" #: engine/core/viewsets.py:326 @@ -3007,9 +3119,11 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"แทนชุดมุมมองสำหรับการจัดการอินสแตนซ์ของแบรนด์ คลาสนี้ให้ฟังก์ชันการทำงานสำหรับการค้นหา " -"การกรอง และการแปลงออบเจ็กต์แบรนด์เป็นรูปแบบที่ส่งผ่านได้ โดยใช้เฟรมเวิร์ก ViewSet ของ " -"Django เพื่อทำให้การพัฒนาระบบจุดสิ้นสุด API สำหรับออบเจ็กต์แบรนด์เป็นเรื่องง่ายขึ้น" +"แทนชุดมุมมองสำหรับการจัดการอินสแตนซ์ของแบรนด์ " +"คลาสนี้ให้ฟังก์ชันการทำงานสำหรับการค้นหา การกรอง " +"และการแปลงออบเจ็กต์แบรนด์เป็นรูปแบบที่ส่งผ่านได้ โดยใช้เฟรมเวิร์ก ViewSet " +"ของ Django เพื่อทำให้การพัฒนาระบบจุดสิ้นสุด API " +"สำหรับออบเจ็กต์แบรนด์เป็นเรื่องง่ายขึ้น" #: engine/core/viewsets.py:438 msgid "" @@ -3024,8 +3138,8 @@ msgstr "" "จัดการการดำเนินงานที่เกี่ยวข้องกับโมเดล `Product` ในระบบ " "คลาสนี้ให้ชุดมุมมองสำหรับการจัดการผลิตภัณฑ์ รวมถึงการกรอง การแปลงเป็นลำดับ " "และปฏิบัติการบนอินสแตนซ์เฉพาะ มันขยายจาก `EvibesViewSet` " -"เพื่อใช้ฟังก์ชันทั่วไปและผสานรวมกับเฟรมเวิร์ก Django REST สำหรับการดำเนินการ API แบบ " -"RESTful รวมถึงวิธีการสำหรับการดึงรายละเอียดผลิตภัณฑ์ การใช้สิทธิ์ " +"เพื่อใช้ฟังก์ชันทั่วไปและผสานรวมกับเฟรมเวิร์ก Django REST สำหรับการดำเนินการ" +" API แบบ RESTful รวมถึงวิธีการสำหรับการดึงรายละเอียดผลิตภัณฑ์ การใช้สิทธิ์ " "และการเข้าถึงข้อเสนอแนะที่เกี่ยวข้องของผลิตภัณฑ์" #: engine/core/viewsets.py:568 @@ -3036,9 +3150,9 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"แสดงชุดมุมมองสำหรับการจัดการวัตถุ Vendor ชุดมุมมองนี้อนุญาตให้ดึงข้อมูล กรอง และแปลงข้อมูล " -"Vendor เป็นรูปแบบที่อ่านได้ ชุดมุมมองนี้กำหนด queryset การกำหนดค่าตัวกรอง และคลาส " -"serializer ที่ใช้จัดการการดำเนินการต่างๆ " +"แสดงชุดมุมมองสำหรับการจัดการวัตถุ Vendor ชุดมุมมองนี้อนุญาตให้ดึงข้อมูล กรอง" +" และแปลงข้อมูล Vendor เป็นรูปแบบที่อ่านได้ ชุดมุมมองนี้กำหนด queryset " +"การกำหนดค่าตัวกรอง และคลาส serializer ที่ใช้จัดการการดำเนินการต่างๆ " "วัตถุประสงค์ของคลาสนี้คือการให้การเข้าถึงทรัพยากรที่เกี่ยวข้องกับ Vendor " "อย่างมีประสิทธิภาพผ่านกรอบงาน Django REST" @@ -3047,29 +3161,32 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"การแสดงชุดมุมมองที่จัดการวัตถุข้อเสนอแนะ คลาสนี้จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุข้อเสนอแนะ " -"รวมถึงการแสดงรายการ การกรอง และการดึงรายละเอียด " -"วัตถุประสงค์ของชุดมุมมองนี้คือการจัดเตรียมตัวแปลงอนุกรมที่แตกต่างกันสำหรับการดำเนินการต่างๆ " -"และจัดการวัตถุข้อเสนอแนะที่เข้าถึงได้บนพื้นฐานของสิทธิ์ มันขยายคลาสพื้นฐาน `EvibesViewSet` " -"และใช้ระบบกรองของ Django สำหรับการสืบค้นข้อมูล" +"การแสดงชุดมุมมองที่จัดการวัตถุข้อเสนอแนะ " +"คลาสนี้จัดการการดำเนินการที่เกี่ยวข้องกับวัตถุข้อเสนอแนะ รวมถึงการแสดงรายการ" +" การกรอง และการดึงรายละเอียด " +"วัตถุประสงค์ของชุดมุมมองนี้คือการจัดเตรียมตัวแปลงอนุกรมที่แตกต่างกันสำหรับการดำเนินการต่างๆ" +" และจัดการวัตถุข้อเสนอแนะที่เข้าถึงได้บนพื้นฐานของสิทธิ์ มันขยายคลาสพื้นฐาน " +"`EvibesViewSet` และใช้ระบบกรองของ Django สำหรับการสืบค้นข้อมูล" #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet สำหรับการจัดการคำสั่งซื้อและกิจกรรมที่เกี่ยวข้อง คลาสนี้ให้ฟังก์ชันการทำงานในการดึงข้อมูล " -"แก้ไข และจัดการอ็อบเจ็กต์คำสั่งซื้อ รวมถึงจุดสิ้นสุดต่างๆ สำหรับการจัดการคำสั่งซื้อ เช่น " -"การเพิ่มหรือลบผลิตภัณฑ์ การดำเนินการซื้อสำหรับผู้ใช้ที่ลงทะเบียนและไม่ได้ลงทะเบียน " +"ViewSet สำหรับการจัดการคำสั่งซื้อและกิจกรรมที่เกี่ยวข้อง " +"คลาสนี้ให้ฟังก์ชันการทำงานในการดึงข้อมูล แก้ไข และจัดการอ็อบเจ็กต์คำสั่งซื้อ" +" รวมถึงจุดสิ้นสุดต่างๆ สำหรับการจัดการคำสั่งซื้อ เช่น " +"การเพิ่มหรือลบผลิตภัณฑ์ " +"การดำเนินการซื้อสำหรับผู้ใช้ที่ลงทะเบียนและไม่ได้ลงทะเบียน " "และการดึงคำสั่งซื้อที่รอดำเนินการของผู้ใช้ที่เข้าสู่ระบบปัจจุบัน ViewSet " "ใช้ตัวแปลงข้อมูลหลายแบบตามการกระทำที่เฉพาะเจาะจงและบังคับใช้สิทธิ์การเข้าถึงอย่างเหมาะสมขณะโต้ตอบกับข้อมูลคำสั่งซื้อ" @@ -3077,15 +3194,16 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"ให้ชุดมุมมองสำหรับการจัดการเอนทิตี OrderProduct ชุดมุมมองนี้ช่วยให้สามารถดำเนินการ CRUD " -"และดำเนินการเฉพาะที่เกี่ยวกับโมเดล OrderProduct รวมถึงการกรอง การตรวจสอบสิทธิ์ " +"ให้ชุดมุมมองสำหรับการจัดการเอนทิตี OrderProduct " +"ชุดมุมมองนี้ช่วยให้สามารถดำเนินการ CRUD และดำเนินการเฉพาะที่เกี่ยวกับโมเดล " +"OrderProduct รวมถึงการกรอง การตรวจสอบสิทธิ์ " "และการสลับตัวแปลงตามการดำเนินการที่ร้องขอ " -"นอกจากนี้ยังมีรายละเอียดการดำเนินการสำหรับการจัดการข้อเสนอแนะเกี่ยวกับอินสแตนซ์ของ " -"OrderProduct" +"นอกจากนี้ยังมีรายละเอียดการดำเนินการสำหรับการจัดการข้อเสนอแนะเกี่ยวกับอินสแตนซ์ของ" +" OrderProduct" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " @@ -3095,7 +3213,8 @@ msgstr "จัดการการดำเนินงานที่เกี msgid "" "Manages the retrieval and handling of PromoCode instances through various " "API actions." -msgstr "จัดการการดึงและการจัดการของตัวอย่าง PromoCode ผ่านการกระทำของ API ต่าง ๆ" +msgstr "" +"จัดการการดึงและการจัดการของตัวอย่าง PromoCode ผ่านการกระทำของ API ต่าง ๆ" #: engine/core/viewsets.py:902 msgid "Represents a view set for managing promotions. " @@ -3109,18 +3228,19 @@ msgstr "จัดการการดำเนินงานที่เกี msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"ViewSet สำหรับการจัดการการดำเนินการในรายการที่ต้องการ (Wishlist) WishlistViewSet " -"ให้จุดเชื่อมต่อสำหรับการโต้ตอบกับรายการที่ต้องการของผู้ใช้ ซึ่งช่วยให้สามารถดึงข้อมูล แก้ไข " -"และปรับแต่งผลิตภัณฑ์ในรายการที่ต้องการได้ ViewSet นี้อำนวยความสะดวกในการทำงาน เช่น " -"การเพิ่ม การลบ และการดำเนินการแบบกลุ่มสำหรับผลิตภัณฑ์ในรายการที่ต้องการ " -"มีการตรวจสอบสิทธิ์เพื่อรับรองว่าผู้ใช้สามารถจัดการรายการที่ต้องการของตนเองเท่านั้น " -"เว้นแต่จะได้รับสิทธิ์อนุญาตอย่างชัดเจน" +"ViewSet สำหรับการจัดการการดำเนินการในรายการที่ต้องการ (Wishlist) " +"WishlistViewSet ให้จุดเชื่อมต่อสำหรับการโต้ตอบกับรายการที่ต้องการของผู้ใช้ " +"ซึ่งช่วยให้สามารถดึงข้อมูล แก้ไข และปรับแต่งผลิตภัณฑ์ในรายการที่ต้องการได้ " +"ViewSet นี้อำนวยความสะดวกในการทำงาน เช่น การเพิ่ม การลบ " +"และการดำเนินการแบบกลุ่มสำหรับผลิตภัณฑ์ในรายการที่ต้องการ " +"มีการตรวจสอบสิทธิ์เพื่อรับรองว่าผู้ใช้สามารถจัดการรายการที่ต้องการของตนเองเท่านั้น" +" เว้นแต่จะได้รับสิทธิ์อนุญาตอย่างชัดเจน" #: engine/core/viewsets.py:1044 msgid "" @@ -3132,8 +3252,9 @@ msgid "" msgstr "" "คลาสนี้ให้ฟังก์ชันการทำงานของ viewset สำหรับจัดการออบเจ็กต์ `Address` คลาส " "AddressViewSet ช่วยให้สามารถดำเนินการ CRUD การกรอง " -"และการดำเนินการที่กำหนดเองที่เกี่ยวข้องกับเอนทิตีที่อยู่ รวมถึงพฤติกรรมเฉพาะสำหรับวิธีการ HTTP " -"ที่แตกต่างกัน การแทนที่ตัวแปลงข้อมูล และการจัดการสิทธิ์ตามบริบทของคำขอ" +"และการดำเนินการที่กำหนดเองที่เกี่ยวข้องกับเอนทิตีที่อยู่ " +"รวมถึงพฤติกรรมเฉพาะสำหรับวิธีการ HTTP ที่แตกต่างกัน การแทนที่ตัวแปลงข้อมูล " +"และการจัดการสิทธิ์ตามบริบทของคำขอ" #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3153,4 +3274,3 @@ msgstr "" "และการแปลงออบเจ็กต์แท็กสินค้าเป็นรูปแบบที่ส่งต่อได้ " "รองรับการกรองที่ยืดหยุ่นบนคุณสมบัติเฉพาะโดยใช้แบ็กเอนด์ตัวกรองที่กำหนดไว้ " "และใช้ตัวแปลงรูปแบบที่แตกต่างกันโดยอัตโนมัติตามการดำเนินการที่กำลังดำเนินการอยู่" - diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.mo b/engine/core/locale/tr_TR/LC_MESSAGES/django.mo index 8395f0a588e4be971b11e51ad73468724fc655e5..0885fd1d30e56d27db719dd34d99fb15b828b2b3 100644 GIT binary patch delta 15039 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 I_H2m!9~9cGs{jB1 delta 13830 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 diff --git a/engine/core/locale/tr_TR/LC_MESSAGES/django.po b/engine/core/locale/tr_TR/LC_MESSAGES/django.po index 19b64047..20c78567 100644 --- a/engine/core/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/core/locale/tr_TR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Aktif mi" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "false olarak ayarlanırsa, bu nesne gerekli izne sahip olmayan kullanıcılar " "tarafından görülemez" @@ -156,7 +157,8 @@ msgstr "Teslim edildi" msgid "canceled" msgstr "İptal edildi" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Başarısız" @@ -184,45 +186,61 @@ msgstr "Momental" msgid "successful" msgstr "Başarılı" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Seçilen dilde seçilen formatta OpenAPI şeması" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Bu API için OpenApi3 şeması. Format, içerik anlaşması yoluyla seçilebilir. " +"Dil, hem Accept-Language hem de sorgu parametresi ile seçilebilir." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Önbellek I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." msgstr "" -"Önbellekten izin verilen verileri okumak için yalnızca bir anahtar " -"uygulayın.\n" -"Önbelleğe veri yazmak için kimlik doğrulama ile anahtar, veri ve zaman aşımı " -"uygulayın." +"Önbellekten izin verilen verileri okumak için yalnızca bir anahtar uygulayın.\n" +"Önbelleğe veri yazmak için kimlik doğrulama ile anahtar, veri ve zaman aşımı uygulayın." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Desteklenen dillerin bir listesini alın" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Uygulamanın açığa çıkarılabilir parametrelerini alın" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Destek ekibine bir mesaj gönderin" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "CORS'lu bir URL isteyin. Yalnızca https'ye izin verilir." -#: engine/core/docs/drf/views.py:85 -msgid "global search endpoint to query across project's tables" -msgstr "Proje tabloları arasında sorgulama yapmak için global arama uç noktası" +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Ürünler, kategoriler ve markalar arasında arama" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:130 +msgid "global search endpoint to query across project's tables" +msgstr "" +"Proje tabloları arasında sorgulama yapmak için global arama uç noktası" + +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "İşletme olarak bir sipariş satın alın" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -230,244 +248,260 @@ msgstr "" "Sağlanan `products` ile `product_uuid` ve `attributes` öğelerini kullanarak " "bir siparişi işletme olarak satın alın." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "satın alınan dijital siparişten bir dijital varlık indirme" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Tüm öznitelik gruplarını listeleme (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Tek bir öznitelik grubunu alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Öznitelik grubu oluşturma" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Öznitelik grubunu silme" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Düzenlenemeyenleri kaydederek mevcut bir öznitelik grubunu yeniden yazma" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" -"Mevcut bir öznitelik grubunun bazı alanlarını düzenlenemez olarak kaydederek " -"yeniden yazın" +"Mevcut bir öznitelik grubunun bazı alanlarını düzenlenemez olarak kaydederek" +" yeniden yazın" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Tüm öznitelikleri listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Tek bir özniteliği alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Öznitelik oluşturma" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Bir özniteliği silme" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir niteliği yeniden yazma" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Mevcut bir özniteliğin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Tüm öznitelik değerlerini listeleme (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Tek bir öznitelik değerini alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Öznitelik değeri oluşturma" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Öznitelik değerini silme" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Düzenlenemeyenleri kaydederek mevcut bir öznitelik değerini yeniden yazma" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Mevcut bir öznitelik değerinin bazı alanlarını düzenlenemeyenleri kaydederek " -"yeniden yazın" +"Mevcut bir öznitelik değerinin bazı alanlarını düzenlenemeyenleri kaydederek" +" yeniden yazın" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Tüm kategorileri listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Tek bir kategoriyi alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Kategori UUID'si veya slug" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Bir kategori oluşturun" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Kategori silme" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir kategoriyi yeniden yazın" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta anlık görüntüsü" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Kategorinin SEO meta verilerinin anlık görüntüsünü döndürür" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Tüm kategorileri listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "Personel olmayan kullanıcılar için sadece kendi siparişleri iade edilir." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"human_readable_id, order_products.product.name ve order_products.product." -"partnumber arasında büyük/küçük harfe duyarlı olmayan alt dize araması" +"human_readable_id, order_products.product.name ve " +"order_products.product.partnumber arasında büyük/küçük harfe duyarlı olmayan" +" alt dize araması" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Buy_time >= this ISO 8601 datetime içeren siparişleri filtreleyin" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Buy_time <= this ISO 8601 datetime ile siparişleri filtreleyin" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Tam sipariş UUID'sine göre filtreleme" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "" "Tam olarak insan tarafından okunabilir sipariş kimliğine göre filtreleme" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Kullanıcının e-postasına göre filtreleme (büyük/küçük harfe duyarlı olmayan " "tam eşleşme)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Kullanıcının UUID'sine göre filtreleme" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" -"Sipariş durumuna göre filtreleme (büyük/küçük harfe duyarlı olmayan alt dize " -"eşleşmesi)" +"Sipariş durumuna göre filtreleme (büyük/küçük harfe duyarlı olmayan alt dize" +" eşleşmesi)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Şunlardan birine göre sıralayın: uuid, human_readable_id, user_email, user, " "status, created, modified, buy_time, random. Azalan için '-' ile önekleyin " "(örn. '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Tek bir kategoriyi alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Sipariş UUID'si veya insan tarafından okunabilir kimlik" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Öznitelik oluşturma" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Personel olmayan kullanıcılar için çalışmaz." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Bir özniteliği silme" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir kategoriyi yeniden yazın" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Sipariş anındaki satın alma fiyatı" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 "" -"Sipariş alımını sonuçlandırır. Eğer `force_balance` kullanılırsa, satın alma " -"işlemi kullanıcının bakiyesi kullanılarak tamamlanır; Eğer `force_payment` " +"Sipariş alımını sonuçlandırır. Eğer `force_balance` kullanılırsa, satın alma" +" işlemi kullanıcının bakiyesi kullanılarak tamamlanır; Eğer `force_payment` " "kullanılırsa, bir işlem başlatılır." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "Bir kullanıcının mevcut bekleyen siparişini al" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "kimliği doğrulanmış bir kullanıcının mevcut bekleyen siparişini alır" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "hesap oluşturmadan sipariş satın alma" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "Kayıtlı olmayan bir kullanıcı için sipariş alımını sonuçlandırır." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Siparişe ürün ekleme" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -475,12 +509,12 @@ msgstr "" "Verilen `product_uuid` ve `attributes` öğelerini kullanarak siparişe bir " "ürün ekler." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "" "Sipariş edilecek ürünlerin bir listesini ekleyin, miktarlar sayılmayacaktır" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -488,11 +522,11 @@ msgstr "" "Sağlanan `product_uuid` ve `attributes` öğelerini kullanarak bir siparişe " "ürün listesi ekler." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Siparişten bir ürünü kaldırma" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -500,11 +534,11 @@ msgstr "" "Sağlanan `product_uuid` ve `attributes` öğelerini kullanarak bir ürünü " "siparişten kaldırır." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Siparişten bir ürünü kaldırın, miktarlar sayılmayacaktır" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -512,444 +546,437 @@ msgstr "" "Sağlanan `product_uuid` ve `attributes` öğelerini kullanarak bir siparişten " "ürün listesini kaldırır." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Tüm öznitelikleri listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"Personel olmayan kullanıcılar için yalnızca kendi istek listeleri döndürülür." +"Personel olmayan kullanıcılar için yalnızca kendi istek listeleri " +"döndürülür." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Tek bir özniteliği alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Öznitelik oluşturma" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Personel olmayan kullanıcılar için çalışmaz." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Bir özniteliği silme" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir niteliği yeniden yazma" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Mevcut bir özniteliğin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "bir kullanıcının mevcut bekleyen istek listesini al" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"kimliği doğrulanmış bir kullanıcının geçerli bekleyen istek listesini alır" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Siparişe ürün ekleme" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Sağlanan `product_uuid` öğesini kullanarak bir ürünü istek listesine ekler" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "İstek listesinden bir ürünü kaldırma" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Sağlanan `product_uuid` öğesini kullanarak bir ürünü istek listesinden " "kaldırır" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "İstek listesine birçok ürün ekleyin" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Sağlanan `product_uuids` öğesini kullanarak bir istek listesine birçok ürün " "ekler" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Siparişten bir ürünü kaldırma" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Sağlanan `product_uuids` öğesini kullanarak bir istek listesinden birçok " "ürünü kaldırır" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Bir veya daha fazla öznitelik adı/değer çiftine göre filtreleyin. \n" "- Sözdizimi**: `attr_name=method-value[;attr2=method2-value2]...`\n" -"- **Metotlar** (atlanırsa varsayılan olarak `icontains` olur): `iexact`, " -"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, " -"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"- Değer tipleme**: JSON ilk olarak denenir (böylece listeleri/dicts'leri " -"geçirebilirsiniz), booleanlar, tamsayılar, floatlar için `true`/`false`; " -"aksi takdirde string olarak ele alınır. \n" -"- **Base64**: ham değeri URL güvenli base64 kodlamak için `b64-` ile " -"önekleyin. \n" +"- **Metotlar** (atlanırsa varsayılan olarak `icontains` olur): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"- Değer tipleme**: JSON ilk olarak denenir (böylece listeleri/dicts'leri geçirebilirsiniz), booleanlar, tamsayılar, floatlar için `true`/`false`; aksi takdirde string olarak ele alınır. \n" +"- **Base64**: ham değeri URL güvenli base64 kodlamak için `b64-` ile önekleyin. \n" "Örnekler: \n" "color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Tüm ürünleri listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(tam) Ürün UUID'si" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Sıralanacak alanların virgülle ayrılmış listesi. Azalan için `-` ile ön " -"ek. \n" -"**İzin verilenler:** uuid, derecelendirme, ad, slug, oluşturuldu, " -"değiştirildi, fiyat, rastgele" +"Sıralanacak alanların virgülle ayrılmış listesi. Azalan için `-` ile ön ek. \n" +"**İzin verilenler:** uuid, derecelendirme, ad, slug, oluşturuldu, değiştirildi, fiyat, rastgele" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Tek bir ürünü alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Ürün UUID'si veya Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Bir ürün oluşturun" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Düzenlenemeyen alanları koruyarak mevcut bir ürünü yeniden yazın" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Düzenlenemeyen alanları koruyarak mevcut bir ürünün bazı alanlarını " "güncelleme" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Ürün silme" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "bir ürün için izin verilen tüm geri bildirimleri listeler" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Ürünün SEO meta verilerinin anlık görüntüsünü döndürür" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Tüm adresleri listeleyin" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Tek bir adres alma" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Yeni bir adres oluşturun" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Adres silme" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Adresin tamamını güncelleme" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Bir adresi kısmen güncelleme" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Otomatik tamamlanan adres girişi" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Ham veri sorgu dizesi, lütfen geo-IP uç noktasından gelen verilerle ekleyin" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "sonuç miktarını sınırlar, 1 < limit < 10, varsayılan: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "tüm geri bildirimleri listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "tek bir geri bildirim alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "bir geri bildirim oluşturun" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "bir geri bildirimi silme" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "düzenlenemeyenleri kaydederek mevcut bir geri bildirimi yeniden yazın" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" "mevcut bir geri bildirimin bazı alanlarını yeniden yazarak düzenlenemezleri " "kaydetme" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "tüm sipariş-ürün ilişkilerini listeler (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "tek bir sipariş-ürün ilişkisi alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "yeni bir sipariş-ürün ilişkisi oluşturun" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "mevcut bir sipariş-ürün ilişkisini değiştirir" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "mevcut bir sipariş-ürün ilişkisini kısmen güncelleme" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "sipariş-ürün ilişkisini silme" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "sipariş-ürün ilişkisine geri bildirim ekleme veya kaldırma" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Tüm markaları listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "Tek bir markayı alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Marka UUID'si veya sümüklü böcek" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Bir marka yaratın" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Bir markayı silme" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "Mevcut bir markayı yeniden yazarak düzenlenemeyenleri kaydedin" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "Marka için SEO Meta anlık görüntüsü" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Tüm satıcıları listeleyin (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Tek bir satıcıyı alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Bir satıcı oluşturun" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Satıcı silme" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir satıcıyı yeniden yazın" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Tüm ürün görsellerini listeleme (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Tek bir ürün resmini alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Bir ürün görseli oluşturun" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Ürün görselini silme" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir ürün resmini yeniden yazın" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Tüm promosyon kodlarını listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Tek bir promosyon kodunu alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Promosyon kodu oluşturun" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Promosyon kodunu silme" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Düzenlenemeyenleri kaydederek mevcut bir promosyon kodunu yeniden yazın" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Tüm promosyonları listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Tek bir promosyonu alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Bir promosyon oluşturun" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Bir promosyonu silme" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir promosyonu yeniden yazma" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Tüm hisse senetlerini listele (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Tek bir stoku alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Stok kaydı oluşturma" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Stok kaydını silme" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir stok kaydını yeniden yazma" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " "yeniden yazın" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Tüm ürün etiketlerini listeleme (basit görünüm)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Tek bir ürün etiketini alma (ayrıntılı görünüm)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Ürün etiketi oluşturma" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Ürün etiketini silme" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "Düzenlenemeyenleri kaydederek mevcut bir ürün etiketini yeniden yazma" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" "Mevcut bir kategorinin bazı alanlarını düzenlenemez olarak kaydederek " @@ -1104,7 +1131,7 @@ msgstr "Önbelleğe alınmış veriler" msgid "camelized JSON data from the requested URL" msgstr "İstenen URL'den kameleştirilmiş JSON verileri" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Yalnızca http(s):// ile başlayan URL'lere izin verilir" @@ -1133,8 +1160,8 @@ msgstr "Bir sipariş satın alın" #: engine/core/graphene/mutations.py:212 engine/core/graphene/mutations.py:266 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -"Lütfen order_uuid veya order_hr_id bilgilerinden birini sağlayın - birbirini " -"dışlayan bilgiler!" +"Lütfen order_uuid veya order_hr_id bilgilerinden birini sağlayın - birbirini" +" dışlayan bilgiler!" #: engine/core/graphene/mutations.py:237 engine/core/graphene/mutations.py:502 #: engine/core/graphene/mutations.py:544 engine/core/viewsets.py:704 @@ -1190,8 +1217,8 @@ msgstr "Bir sipariş satın alın" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Lütfen öznitelikleri attr1=value1,attr2=value2 şeklinde biçimlendirilmiş " "dize olarak gönderin" @@ -1269,7 +1296,8 @@ msgstr "" "Bu kategoriyi filtrelemek için hangi nitelikler ve değerler kullanılabilir." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "Varsa, bu kategorideki ürünler için minimum ve maksimum fiyatlar." #: engine/core/graphene/object_types.py:206 @@ -1540,9 +1568,9 @@ msgid "" msgstr "" "Hiyerarşik olabilen bir öznitelik grubunu temsil eder. Bu sınıf, öznitelik " "gruplarını yönetmek ve düzenlemek için kullanılır. Bir öznitelik grubu, " -"hiyerarşik bir yapı oluşturan bir üst gruba sahip olabilir. Bu, karmaşık bir " -"sistemde öznitelikleri daha etkili bir şekilde kategorize etmek ve yönetmek " -"için yararlı olabilir." +"hiyerarşik bir yapı oluşturan bir üst gruba sahip olabilir. Bu, karmaşık bir" +" sistemde öznitelikleri daha etkili bir şekilde kategorize etmek ve yönetmek" +" için yararlı olabilir." #: engine/core/models.py:91 msgid "parent of this group" @@ -1572,8 +1600,8 @@ msgid "" msgstr "" "Harici satıcılar ve bunların etkileşim gereksinimleri hakkında bilgi " "depolayabilen bir satıcı varlığını temsil eder. Satıcı sınıfı, harici bir " -"satıcıyla ilgili bilgileri tanımlamak ve yönetmek için kullanılır. Satıcının " -"adını, iletişim için gereken kimlik doğrulama ayrıntılarını ve satıcıdan " +"satıcıyla ilgili bilgileri tanımlamak ve yönetmek için kullanılır. Satıcının" +" adını, iletişim için gereken kimlik doğrulama ayrıntılarını ve satıcıdan " "alınan ürünlere uygulanan yüzde işaretlemesini saklar. Bu model ayrıca ek " "meta verileri ve kısıtlamaları da muhafaza ederek üçüncü taraf satıcılarla " "etkileşime giren sistemlerde kullanıma uygun hale getirir." @@ -1629,11 +1657,11 @@ msgid "" "metadata customization for administrative purposes." msgstr "" "Ürünleri sınıflandırmak veya tanımlamak için kullanılan bir ürün etiketini " -"temsil eder. ProductTag sınıfı, dahili bir etiket tanımlayıcısı ve kullanıcı " -"dostu bir ekran adı kombinasyonu aracılığıyla ürünleri benzersiz bir şekilde " -"tanımlamak ve sınıflandırmak için tasarlanmıştır. Mixin'ler aracılığıyla " -"dışa aktarılan işlemleri destekler ve yönetimsel amaçlar için meta veri " -"özelleştirmesi sağlar." +"temsil eder. ProductTag sınıfı, dahili bir etiket tanımlayıcısı ve kullanıcı" +" dostu bir ekran adı kombinasyonu aracılığıyla ürünleri benzersiz bir " +"şekilde tanımlamak ve sınıflandırmak için tasarlanmıştır. Mixin'ler " +"aracılığıyla dışa aktarılan işlemleri destekler ve yönetimsel amaçlar için " +"meta veri özelleştirmesi sağlar." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1688,8 +1716,8 @@ msgid "" msgstr "" "İlgili öğeleri hiyerarşik bir yapıda düzenlemek ve gruplamak için bir " "kategori varlığını temsil eder. Kategoriler, ebeveyn-çocuk ilişkilerini " -"destekleyen diğer kategorilerle hiyerarşik ilişkilere sahip olabilir. Sınıf, " -"kategoriyle ilgili özellikler için bir temel görevi gören meta veri ve " +"destekleyen diğer kategorilerle hiyerarşik ilişkilere sahip olabilir. Sınıf," +" kategoriyle ilgili özellikler için bir temel görevi gören meta veri ve " "görsel temsil alanları içerir. Bu sınıf genellikle bir uygulama içinde ürün " "kategorilerini veya diğer benzer gruplamaları tanımlamak ve yönetmek için " "kullanılır ve kullanıcıların veya yöneticilerin kategorilerin adını, " @@ -1745,7 +1773,8 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" "Sistemdeki bir Marka nesnesini temsil eder. Bu sınıf, adı, logoları, " "açıklaması, ilişkili kategorileri, benzersiz bir slug ve öncelik sırası " @@ -1795,8 +1824,8 @@ msgstr "Kategoriler" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1805,8 +1834,8 @@ msgstr "" "Sistemde yönetilen bir ürünün stokunu temsil eder. Bu sınıf, satıcılar, " "ürünler ve bunların stok bilgileri arasındaki ilişkinin yanı sıra fiyat, " "satın alma fiyatı, miktar, SKU ve dijital varlıklar gibi envanterle ilgili " -"özellikler hakkında ayrıntılar sağlar. Çeşitli satıcılardan temin edilebilen " -"ürünlerin izlenmesine ve değerlendirilmesine olanak sağlamak için envanter " +"özellikler hakkında ayrıntılar sağlar. Çeşitli satıcılardan temin edilebilen" +" ürünlerin izlenmesine ve değerlendirilmesine olanak sağlamak için envanter " "yönetim sisteminin bir parçasıdır." #: engine/core/models.py:520 @@ -1948,8 +1977,8 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Sistemdeki bir özniteliği temsil eder. Bu sınıf, diğer varlıklarla " @@ -2019,9 +2048,9 @@ msgstr "Öznitelik" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" "Bir ürünle bağlantılı bir nitelik için belirli bir değeri temsil eder. " "'Niteliği' benzersiz bir 'değere' bağlayarak ürün özelliklerinin daha iyi " @@ -2042,14 +2071,14 @@ msgstr "Bu öznitelik için özel değer" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" "Sistemdeki bir ürünle ilişkilendirilmiş bir ürün resmini temsil eder. Bu " -"sınıf, görüntü dosyalarını yükleme, bunları belirli ürünlerle ilişkilendirme " -"ve görüntüleme sıralarını belirleme işlevleri dahil olmak üzere ürün " +"sınıf, görüntü dosyalarını yükleme, bunları belirli ürünlerle ilişkilendirme" +" ve görüntüleme sıralarını belirleme işlevleri dahil olmak üzere ürün " "görüntülerini yönetmek için tasarlanmıştır. Ayrıca görüntüler için " "alternatif metin içeren bir erişilebilirlik özelliği de içerir." @@ -2091,8 +2120,8 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" "İndirimli ürünler için bir promosyon kampanyasını temsil eder. Bu sınıf, " "ürünler için yüzdeye dayalı bir indirim sunan promosyon kampanyalarını " @@ -2140,10 +2169,10 @@ msgid "" "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." msgstr "" -"İstenen ürünleri depolamak ve yönetmek için bir kullanıcının istek listesini " -"temsil eder. Sınıf, bir ürün koleksiyonunu yönetmek için işlevsellik sağlar, " -"ürün ekleme ve kaldırma gibi işlemlerin yanı sıra aynı anda birden fazla " -"ürün ekleme ve kaldırma işlemlerini destekler." +"İstenen ürünleri depolamak ve yönetmek için bir kullanıcının istek listesini" +" temsil eder. Sınıf, bir ürün koleksiyonunu yönetmek için işlevsellik " +"sağlar, ürün ekleme ve kaldırma gibi işlemlerin yanı sıra aynı anda birden " +"fazla ürün ekleme ve kaldırma işlemlerini destekler." #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2167,14 +2196,14 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Bir ürüne bağlı bir belgesel kaydını temsil eder. Bu sınıf, dosya " "yüklemeleri ve meta verileri dahil olmak üzere belirli ürünlerle ilgili " "belgeseller hakkında bilgi depolamak için kullanılır. Belgesel dosyalarının " -"dosya türünü ve depolama yolunu işlemek için yöntemler ve özellikler içerir. " -"Belirli mixin'lerin işlevselliğini genişletir ve ek özel özellikler sağlar." +"dosya türünü ve depolama yolunu işlemek için yöntemler ve özellikler içerir." +" Belirli mixin'lerin işlevselliğini genişletir ve ek özel özellikler sağlar." #: engine/core/models.py:998 msgid "documentary" @@ -2190,19 +2219,19 @@ msgstr "Çözümlenmemiş" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Konum ayrıntılarını ve bir kullanıcıyla ilişkileri içeren bir adres " -"varlığını temsil eder. Coğrafi ve adres verilerinin depolanmasının yanı sıra " -"coğrafi kodlama hizmetleriyle entegrasyon için işlevsellik sağlar. Bu sınıf, " -"sokak, şehir, bölge, ülke ve coğrafi konum (enlem ve boylam) gibi " +"varlığını temsil eder. Coğrafi ve adres verilerinin depolanmasının yanı sıra" +" coğrafi kodlama hizmetleriyle entegrasyon için işlevsellik sağlar. Bu " +"sınıf, sokak, şehir, bölge, ülke ve coğrafi konum (enlem ve boylam) gibi " "bileşenleri içeren ayrıntılı adres bilgilerini depolamak için " "tasarlanmıştır. Coğrafi kodlama API'leri ile entegrasyonu destekler ve daha " "fazla işleme veya inceleme için ham API yanıtlarının depolanmasını sağlar. " @@ -2281,7 +2310,8 @@ msgstr "" #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" msgstr "" -"Bir kullanıcı tarafından indirimden yararlanmak için kullanılan benzersiz kod" +"Bir kullanıcı tarafından indirimden yararlanmak için kullanılan benzersiz " +"kod" #: engine/core/models.py:1088 msgid "promo code identifier" @@ -2365,16 +2395,16 @@ msgstr "Promosyon kodu {self.uuid} için geçersiz indirim türü!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Bir kullanıcı tarafından verilen bir siparişi temsil eder. Bu sınıf, fatura " "ve kargo bilgileri, durum, ilişkili kullanıcı, bildirimler ve ilgili " "işlemler gibi çeşitli öznitelikleri dahil olmak üzere uygulama içinde bir " -"siparişi modeller. Siparişler ilişkili ürünlere sahip olabilir, promosyonlar " -"uygulanabilir, adresler ayarlanabilir ve kargo veya fatura ayrıntıları " +"siparişi modeller. Siparişler ilişkili ürünlere sahip olabilir, promosyonlar" +" uygulanabilir, adresler ayarlanabilir ve kargo veya fatura ayrıntıları " "güncellenebilir. Aynı şekilde işlevsellik, sipariş yaşam döngüsündeki " "ürünlerin yönetilmesini de destekler." @@ -2485,7 +2515,8 @@ msgstr "Adres mevcut değil" #: engine/core/models.py:1494 engine/core/models.py:1563 msgid "you can not buy at this moment, please try again in a few minutes" -msgstr "Şu anda satın alamazsınız, lütfen birkaç dakika içinde tekrar deneyin." +msgstr "" +"Şu anda satın alamazsınız, lütfen birkaç dakika içinde tekrar deneyin." #: engine/core/models.py:1497 engine/core/models.py:1559 msgid "invalid force value" @@ -2534,8 +2565,8 @@ msgstr "" "aldıkları belirli ürünler için kullanıcı geri bildirimlerini yakalamak ve " "saklamak üzere tasarlanmıştır. Kullanıcı yorumlarını saklamak için " "öznitelikler, siparişteki ilgili ürüne bir referans ve kullanıcı tarafından " -"atanan bir derecelendirme içerir. Sınıf, geri bildirim verilerini etkili bir " -"şekilde modellemek ve yönetmek için veritabanı alanlarını kullanır." +"atanan bir derecelendirme içerir. Sınıf, geri bildirim verilerini etkili bir" +" şekilde modellemek ve yönetmek için veritabanı alanlarını kullanır." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2547,9 +2578,11 @@ msgid "feedback comments" msgstr "Geri bildirim yorumları" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Bu geri bildirimin ilgili olduğu siparişteki belirli bir ürüne atıfta bulunur" +"Bu geri bildirimin ilgili olduğu siparişteki belirli bir ürüne atıfta " +"bulunur" #: engine/core/models.py:1720 msgid "related order product" @@ -2691,15 +2724,15 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Siparişlerle ilişkili dijital varlıklar için indirme işlevselliğini temsil " "eder. DigitalAssetDownload sınıfı, sipariş ürünleriyle ilgili indirmeleri " "yönetme ve bunlara erişme olanağı sağlar. İlişkili sipariş ürünü, indirme " -"sayısı ve varlığın herkese açık olup olmadığı hakkında bilgi tutar. İlişkili " -"sipariş tamamlandı durumundayken varlığın indirilmesi için bir URL " +"sayısı ve varlığın herkese açık olup olmadığı hakkında bilgi tutar. İlişkili" +" sipariş tamamlandı durumundayken varlığın indirilmesi için bir URL " "oluşturmaya yönelik bir yöntem içerir." #: engine/core/models.py:1961 @@ -2714,8 +2747,8 @@ msgstr "İndirmeler" msgid "" "you must provide a comment, rating, and order product uuid to add feedback." msgstr "" -"geri̇ bi̇ldi̇ri̇m eklemek i̇çi̇n bi̇r yorum, puan ve si̇pari̇ş ürün uuid'si̇ " -"sağlamalisiniz." +"geri̇ bi̇ldi̇ri̇m eklemek i̇çi̇n bi̇r yorum, puan ve si̇pari̇ş ürün uuid'si̇" +" sağlamalisiniz." #: engine/core/sitemaps.py:25 msgid "Home" @@ -2758,8 +2791,7 @@ msgstr "Merhaba %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Siparişiniz için teşekkür ederiz #%(order.pk)s! Siparişinizi işleme " @@ -2818,8 +2850,8 @@ msgid "" "we have successfully processed your order №%(order_uuid)s! below are the\n" " details of your order:" msgstr "" -"Siparişinizi başarıyla işleme aldık №%(order_uuid)s! Siparişinizin detayları " -"aşağıdadır:" +"Siparişinizi başarıyla işleme aldık №%(order_uuid)s! Siparişinizin detayları" +" aşağıdadır:" #: engine/core/templates/digital_order_delivered_email.html:128 msgid "" @@ -2874,8 +2906,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Siparişiniz için teşekkür ederiz! Satın alma işleminizi onaylamaktan " @@ -2947,7 +2978,7 @@ msgstr "NOMINATIM_URL parametresi yapılandırılmalıdır!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "Resim boyutları w{max_width} x h{max_height} pikseli geçmemelidir!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2955,40 +2986,40 @@ msgstr "" "Site haritası dizini için isteği işler ve bir XML yanıtı döndürür. Yanıtın " "XML için uygun içerik türü başlığını içermesini sağlar." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." msgstr "" -"Bir site haritası için ayrıntılı görünüm yanıtını işler. Bu fonksiyon isteği " -"işler, uygun site haritası ayrıntı yanıtını getirir ve XML için Content-Type " -"başlığını ayarlar." +"Bir site haritası için ayrıntılı görünüm yanıtını işler. Bu fonksiyon isteği" +" işler, uygun site haritası ayrıntı yanıtını getirir ve XML için Content-" +"Type başlığını ayarlar." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Desteklenen dillerin bir listesini ve bunlara karşılık gelen bilgileri " "döndürür." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Web sitesinin parametrelerini bir JSON nesnesi olarak döndürür." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "" -"Belirli bir anahtar ve zaman aşımı ile önbellek verilerini okuma ve ayarlama " -"gibi önbellek işlemlerini gerçekleştirir." +"Belirli bir anahtar ve zaman aşımı ile önbellek verilerini okuma ve ayarlama" +" gibi önbellek işlemlerini gerçekleştirir." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Bize ulaşın` form gönderimlerini işler." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." @@ -2996,62 +3027,58 @@ msgstr "" "Gelen POST isteklerinden gelen URL'leri işleme ve doğrulama isteklerini " "işler." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Küresel arama sorgularını işler." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "Kayıt olmadan bir işletme olarak satın alma mantığını ele alır." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Bir siparişle ilişkili bir dijital varlığın indirilmesini yönetir.\n" -"Bu fonksiyon, projenin depolama dizininde bulunan dijital varlık dosyasını " -"sunmaya çalışır. Dosya bulunamazsa, kaynağın kullanılamadığını belirtmek " -"için bir HTTP 404 hatası verilir." +"Bu fonksiyon, projenin depolama dizininde bulunan dijital varlık dosyasını sunmaya çalışır. Dosya bulunamazsa, kaynağın kullanılamadığını belirtmek için bir HTTP 404 hatası verilir." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid gereklidir" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "sipariş ürünü mevcut değil" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Dijital varlığı yalnızca bir kez indirebilirsiniz" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "dijital varlık indirilmeden önce siparişin ödenmesi gerekir" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Sipariş ürününün bir ürünü yok" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "favicon bulunamadı" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Bir web sitesinin favicon'u için istekleri işler.\n" -"Bu fonksiyon, projenin statik dizininde bulunan favicon dosyasını sunmaya " -"çalışır. Favicon dosyası bulunamazsa, kaynağın kullanılamadığını belirtmek " -"için bir HTTP 404 hatası verilir." +"Bu fonksiyon, projenin statik dizininde bulunan favicon dosyasını sunmaya çalışır. Favicon dosyası bulunamazsa, kaynağın kullanılamadığını belirtmek için bir HTTP 404 hatası verilir." -#: engine/core/views.py:385 +#: engine/core/views.py:398 msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " "It uses Django's `redirect` function for handling the HTTP redirection." msgstr "" "İsteği yönetici dizin sayfasına yönlendirir. Bu fonksiyon gelen HTTP " @@ -3059,7 +3086,7 @@ msgstr "" "yönlendirir. HTTP yönlendirmesini işlemek için Django'nun `redirect` " "fonksiyonunu kullanır." -#: engine/core/views.py:398 +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "eVibes'in geçerli sürümünü döndürür." @@ -3074,15 +3101,16 @@ msgstr "" "Evibes ile ilgili işlemleri yönetmek için bir görünüm kümesi tanımlar. " "EvibesViewSet sınıfı ModelViewSet'ten miras alınır ve Evibes varlıkları " "üzerindeki eylemleri ve işlemleri yönetmek için işlevsellik sağlar. Geçerli " -"eyleme dayalı dinamik serileştirici sınıfları, özelleştirilebilir izinler ve " -"işleme biçimleri için destek içerir." +"eyleme dayalı dinamik serileştirici sınıfları, özelleştirilebilir izinler ve" +" işleme biçimleri için destek içerir." #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "AttributeGroup nesnelerini yönetmek için bir görünüm kümesini temsil eder. " "Filtreleme, serileştirme ve veri alma dahil olmak üzere AttributeGroup ile " @@ -3111,8 +3139,8 @@ msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "AttributeValue nesnelerini yönetmek için bir görünüm kümesi. Bu görünüm " "kümesi, AttributeValue nesnelerini listelemek, almak, oluşturmak, " @@ -3159,10 +3187,10 @@ msgid "" "product." msgstr "" "Sistemdeki `Product` modeliyle ilgili işlemleri yönetir. Bu sınıf, " -"filtreleme, serileştirme ve belirli örnekler üzerindeki işlemler dahil olmak " -"üzere ürünleri yönetmek için bir görünüm kümesi sağlar. Ortak işlevselliği " -"kullanmak için `EvibesViewSet`ten genişletilir ve RESTful API işlemleri için " -"Django REST çerçevesi ile entegre olur. Ürün ayrıntılarını almak, izinleri " +"filtreleme, serileştirme ve belirli örnekler üzerindeki işlemler dahil olmak" +" üzere ürünleri yönetmek için bir görünüm kümesi sağlar. Ortak işlevselliği " +"kullanmak için `EvibesViewSet`ten genişletilir ve RESTful API işlemleri için" +" Django REST çerçevesi ile entegre olur. Ürün ayrıntılarını almak, izinleri " "uygulamak ve bir ürünün ilgili geri bildirimlerine erişmek için yöntemler " "içerir." @@ -3186,15 +3214,15 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Geri Bildirim nesnelerini işleyen bir görünüm kümesinin temsili. Bu sınıf, " "listeleme, filtreleme ve ayrıntıları alma dahil olmak üzere Geri Bildirim " "nesneleriyle ilgili işlemleri yönetir. Bu görünüm kümesinin amacı, farklı " -"eylemler için farklı serileştiriciler sağlamak ve erişilebilir Geri Bildirim " -"nesnelerinin izin tabanlı kullanımını uygulamaktır. Temel `EvibesViewSet`i " +"eylemler için farklı serileştiriciler sağlamak ve erişilebilir Geri Bildirim" +" nesnelerinin izin tabanlı kullanımını uygulamaktır. Temel `EvibesViewSet`i " "genişletir ve verileri sorgulamak için Django'nun filtreleme sistemini " "kullanır." @@ -3203,17 +3231,17 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" "Siparişleri ve ilgili işlemleri yönetmek için ViewSet. Bu sınıf, sipariş " "nesnelerini almak, değiştirmek ve yönetmek için işlevsellik sağlar. Ürün " "ekleme veya kaldırma, kayıtlı ve kayıtsız kullanıcılar için satın alma " -"işlemleri gerçekleştirme ve mevcut kimliği doğrulanmış kullanıcının bekleyen " -"siparişlerini alma gibi sipariş işlemlerini gerçekleştirmek için çeşitli uç " -"noktalar içerir. ViewSet, gerçekleştirilen belirli eyleme bağlı olarak " +"işlemleri gerçekleştirme ve mevcut kimliği doğrulanmış kullanıcının bekleyen" +" siparişlerini alma gibi sipariş işlemlerini gerçekleştirmek için çeşitli uç" +" noktalar içerir. ViewSet, gerçekleştirilen belirli eyleme bağlı olarak " "birden fazla serileştirici kullanır ve sipariş verileriyle etkileşime " "girerken izinleri buna göre zorlar." @@ -3221,14 +3249,14 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "OrderProduct varlıklarını yönetmek için bir görünüm kümesi sağlar. Bu " "görünüm kümesi, CRUD işlemlerini ve OrderProduct modeline özgü özel " -"eylemleri etkinleştirir. Filtreleme, izin kontrolleri ve istenen eyleme göre " -"serileştirici değiştirme içerir. Ayrıca, OrderProduct örnekleriyle ilgili " +"eylemleri etkinleştirir. Filtreleme, izin kontrolleri ve istenen eyleme göre" +" serileştirici değiştirme içerir. Ayrıca, OrderProduct örnekleriyle ilgili " "geri bildirimleri işlemek için ayrıntılı bir eylem sağlar" #: engine/core/viewsets.py:867 @@ -3255,8 +3283,8 @@ msgstr "Sistemdeki Stok verileri ile ilgili işlemleri yürütür." msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3297,8 +3325,7 @@ msgid "" "serializers based on the action being performed." msgstr "" "Uygulama içinde Ürün Etiketleri ile ilgili işlemleri gerçekleştirir. Bu " -"sınıf, Ürün Etiketi nesnelerinin alınması, filtrelenmesi ve serileştirilmesi " -"için işlevsellik sağlar. Belirtilen filtre arka ucunu kullanarak belirli " +"sınıf, Ürün Etiketi nesnelerinin alınması, filtrelenmesi ve serileştirilmesi" +" için işlevsellik sağlar. Belirtilen filtre arka ucunu kullanarak belirli " "nitelikler üzerinde esnek filtrelemeyi destekler ve gerçekleştirilen eyleme " "göre dinamik olarak farklı serileştiriciler kullanır." - diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.mo b/engine/core/locale/vi_VN/LC_MESSAGES/django.mo index 8e6032f9074b480e754b08d816eee3db77ea1cbe..880c4a5e7c8510ff691175fc50d23b0a5f285855 100644 GIT binary patch delta 14958 zcmZ|W37k*W|HtwB#SGbE7{)T=8Ziblmh9UM2913b*`lwRubIKjFpDjGjU@?1ma&zs z5?PZa6D8#rQYxvmnN*Teq_q3L-rsYkU%%h~|G$sNndkYObMC$8p5=bOGwSV?!Sgl+ z`#%jSwZh?;UBYo{W0R_mGqj}RbZn?n$Jx-zaVT;&;wX>f?8h?1)!H~tX{>`~F$%-5 z1=hgc7=%6y!EwlCotan)XX8xA@jLU$=mNoQ9j6jj#!!sJ<=7U3@ieO4S&XM6pJ82M zw>>wVt;yxZ`9=0Ry(8*jc59zzJ(0VkW-*Ik|(G$jWcAN&-6}^~_5qJt`aKmq~ zFQ&yi4t;j^cX6Bncol!fxUP<~2U~Y@oN~1L8sms>B$x+j+1)((39L-{n;6FZoeN~D z;jefbR_bA%v?f+3u8%?33B#}(a!+RjzQm25z`?{L?{b`biT7bQtkBC`FR8b2IM$_| z4>bkz(a$J4i^#0N*RT!_@8dXY@c|6R>U|xjJVu~Ksxc1W2Jxu1u(Ti3fopIp<Dc1~b z9I8IS#=VigIRj9OcOPoXfA;5@6DmwHa}FJfpEKth7pXxZ#7(UG` z)}Gj$I1`)U2Go?ijoKCGu^yIqz?|0rn-C8`)%$1Iil?wW1#e+ZEIXZ>V0~*h)Q!Cu z*hW~D_$X?To;?!V)r}C$lOc8Xdc6)eNlRm9q;`o>7#oz7Sv521F=1+0KyVJO}}wJ$qMQ%Vp{M%%6_26~R_ zaU$x4bU*3|C!*>XpvqTUx1px25H)hgQ5`Ho7k|P=SS_EoBX&VeSuQr>{?5~6bm6zL zG!|hbUPe7Z`PrsE1hohwQ8#R9<2ck}OF}*A5RAkzs3Bi~S`#Z#54s-9;a2pkXZvh} z3#bcUMs?_hEiX04%yk9SkVm41usQ0638)(lwDBl(i8D|)egsQl0qOzQp|1br9L8UB z@;n8)z)94idLMPdx2O}Yp>F&uY6Qy6HP%G6Z-SchE~u$VMNQ!pTmL9(N}fb@{2=PS zr{*&L>PeApa1Cn^2hB6qLDjcIotTK~&*L0#uC zY7Lx0O|}0#nXY8M#1`1_Au|=ju@!L|>IP4sp5QrDhmT?zddAs1Hmf=e71u#su(^%f<88!!Fd7GA8=Qqt z;XzdUkqgbprD99s85o4mVO#D0gJe2Ta1GVNm_=reM`1(aRMZnK!3Ovo>P8=;-V2o% zo1u+HO*T} znYanM#Qjj^S=bC0V|_e=_3#UUS6H7wP2CpMb@rpSb0O+U-@z*QC5GXzsF4csuQU}d22;=y zW3dBj-;TwhxENdGCDdws1D3P-Ea}!j_Xl3+J&|8FuHgio1p)9GCHy0 zDzop~pc*EihRTb2@>!@3uEk2Y33Y+JSPd_rZg>;hV(HapH^gIk;z3vrN29KviL4R7 zvyeJPcJIjk-ZwRDFW2PeR>bG}gdzwtOB| zCtitKb33uT_WyY@W$_Y*;&s%8%RFv|wkn1ZH%2Ya1XTOMsO{=Soi`5Ev3y&<1hq@n zqKj{!w&{1MDXR7a(r>6UCz1x4~FUL@mlG*bR4~F8m{E zmo(X6)=Vy{gAbrOycFx;+6|1q=B$tc`6+5Ydp4Rl3N?hiP;;Jw>dFUPir`YCUO2q?n_c*-o+!Ke<*MO}Xn>by@-QxW8U+FUpmRWKCQa5n0~JFyd9#uga0#dL5O zYN!{X%3rhbFQ}<${)}mNzx6Rx`KzcY`w=yw{zhBPr{5^NlY+IV3%-TgmL;~CCu)lt znKbN)Yp@G`ZsR+iH60y~@sw|~Ua{p(wmVLD%Ew|i+>Kqe|8J1dh1%>eb2k+`6Cc5N z{1esF&O6OJJ_qX)7hnZEjFET>^|$YEDXnI zQTI84{x~w%$Y`#c?=u%p#XE?XV@G@e_2fUJhS0O$yr4>>wr3TrhcQ?SldwEypl&z~ zHL|PlHhdkmc;DI2`0K*u4wyGwHB2OKihA;?sJY&ZdV&+EC%%Ci+FA$A$8BTO$TY(c z9Es}4MAU;UMxFN@YHfXpdXTUe7=Lvj;srCu(HKVD49j66hTx@ID-8xJlK7v{!B@4~sEbk|y)msazU}w}24MaWB2<(6lqjt%0)Z#4j zqM54RsF9h18nMmT5>KPv8zl~#Cyz(1u~cklN}GB@gg zx=|Wx@hn5#u+Wx&iQ&YRUgkCJ;pwp(@v@`lPdM*m9pXjD%*bxX3flh%$<(IeIBFy= zqUJXERr7a%YN(+cjDZd!JI6VQYM1_+nX;+ahxjr420ueh;mPCX`seUPI`$*RQNH_i zMp^s+2QsxN=yrltS(3kU;#lHUZ582z~v-1#w2O2ISu9UVITsac(c z7tD4#iCR>jU?~hKGJmS6jy#kz2HRrW&-u=P6H%*t$VKyB@nRR^0<6S+KEw*d-+amV z>koy$e95oLRMfx3TZ(wpWmaxUo{Wj?O?>e?o`m|Q-}6UA;tto?%Xs-Zzun-v8w@k; zr~FKN+P&~APl`c*FhbNP|78|s{w;p9ru-|%;|!t$`${tYD``-!l*h@$O+lW(A0R82 zCg6g1-{x`Zal$?2JLa@B&uGrZqf) z&xkIlDH(`eaipJ20-24dq5TRqG*>VPf5n-23$=P@*7OA4h#mMdsM>o`?~O62Z8;6! zphKH5l#XWA@dUQvyhu-A&78nHY4;0ijrp6@GaXot)hPH7o8k{v_YP0sOXL95qRY4L z#>T{-;ZQ7BpOHbIbph)Au>(8e7kDq$ZD86>HTs>$$!PT+wVp$Lcw9lfFn+-h4C61x ziW{Tqd*gH*f)nvQ9EUv{dYq}a7sD_n+7tK+*29{E)hXYAb+!KwlF{}%k166 z(>fBh-SSXVu?;np=dl%5jxkfw6LrH$SQ;P2I4nSQ_hL_&$gV|A!A=au*RYa4|KBhf=M&UaTt&@kY+Lif=!gS}m!rxrpaO7v5WS9B$;kBOu^6b8QWlC2eTVip{C?8 z>XjVc(G&RlT|LwbXbtLPwR$IW;XKqXnT>kY9zu=KRUCwkJ9`3Oc=9od`#VpN(Kb1b z+J5Izi|7{C!H77IvlKg9&)`GEqvOpkxPp4}n>ZZ9yO`ZF6}3wipsu?DlkpI$gArZX z{~FT4WHfgvs5zR2Bd`G5;tlMHG2J|YZ#;SEC0>Q&@i)}sN=-0pWjeMZUV(k^6lw&* zx_g{wa1g3ve|2a7>tnEN57Xnms3*S$hvKfaE7bA|Qv1pbs7k6Ig#pgLHD zi5PvC*zikBd6LD{?=-Glfh=3YK7J zT#vf(r>Ir?3#wz`cbf~h!Un`CI0P4>Ztw+a5&nQ0!JvCQPCC}ZI9!Ya@HA?>Mhx;e zIokiz$uy(j2h78|gUyf@pgOPxH8pRb-hgjodHe`N@oUr@@-J)kdp(Xz+zhn_lCUNw zquR|xy%7r}_jk70io>W2pTkJJh%N>XF&&9Q&0QbVqFaW#!A9#|>uac?e;@S#rG}d8 zM5EgGLY+SX{Tj-#WOT!&w&HozDt`rCEIZ6>tH!8Zk%x`&H0nmb;DcCyxEaaqsQOP( zH!3s2Oi4A=8fuAIIB^8~Uvp7JK|IFYXZGhT)KGtoy3lnShmW))VeNyOx`{U4Wc`=* zThx1_@+k97%8UB&T8cAp-6;0|6f!mM_c+K%RxWAGMg?qWup{T`29 zh*MA__B85+bQQ;7mt?c3pTT(IOEzwpV(L@XT_ehpRcZ;@_(!B~T1DX1~lI2VTz ze{bVn<4pNJt2^F&TV9Ad?+5Gf3=HqSIST8Fb}S1QXm59ewB2Tw3_vB+9>BCC>y z525C$Ot$esYpEO)&$c?bCZ1{i19hWmdFJExchm?ZP4WbOEnkdUTQ6Z_-RT4wyXsS8CENU%PN4*bv zV|6|07&5x>Ow@i|fOT;v>P>hC+u}Fa9_vl>I6vY@+=&ApFmvmf?s4uXPQVuU6b``; zQ0FzDVb;`mY)bqz`n8D8k?D(JGtDX;gWA_yP)~Xm^`5B2Zc+O-s8{J!)b>4zU9sUT zbK!BQwX+uW!uc5k?}2=?d#a(noJQxf|1~57DRA*Y)MvpK)W_(4)C=ch)CF43Hs6H0 zVmR?x)QDZjsaSoE`4n7=ZHV8)IIJ+&41HhJdHJaOte;EIOu+-FsjB^;d9ol2^%@&#| z^UoxsH`Y-cj8zwz{W}hO6Q9GEF>tL|!{A5Fn=>2rATMH5 zEWgBjf$4}EfgEI{{mynWkraH69-TnCM7pJbqf80@+0b24RY#Yp0=wkbBys867U+hQf zY~zpd5=pPiQMB8kI`aL=vkd+|dJ*eriOos8j{?Uj>vp1l+5Ayc75I5ZZ~8@K-==b= ztN=40$I4u+g=cJ=-B^#Z(UfJAmf7-Z<4HGF$C0!<;OT&q3Wsj4T1s4bSB{3g@fj?HM zIGOf(OO8PuwXuiE27Xn)jd-A~D^GcKt$+PSI+DWDq%_-DyvBvE;%Y2S8e&h}MP6?_ zy_|H^Bz2+8L;dsQpCeyLI!@B@1W6yuftQQq&|km1;~~xelQg_vr5rzzvZ!pRGSXM1 zTBJD2zs1i;I=r;Gg`ekaZ+UV?3ib?h+k z@Bb9cwSkDC;rpbeBpn&{1mzd#hdp}YOk1ZfDbvVb=bYW7vE(13OrQOYN!@KbK1!S_ zq#mTYgjzS!Khn?+v7pTxIgs%`%n`8P>b zDZhfnM?dP{As9lrKBmq1Lj)BQDg1~ug7_e5Ht8GU4%8hduj5|g4@mEmpH6uN@~@J= z19kMFY!2=r-a^_yej`aAz1K-PX3*wN+g{(KoE!@3QZZhY#I;FfDSMFkW709=o+KSf zl!ua^NB(Dg7AI16)7FQP-%ME=79YK+D?>1jvMlmHks6cgQRXj4;pO6%)^I9Il6<7c zNjly&IE(Q-WqjNRenEN5mWyhn3S4h5{z7_~blRRDVx`F0uOA$LY5dz!@ib`_1qrs- zHv-k>#|w~7c>{X^{R5H?ed*Xt*&NbJTlXsNBL&eW53iC=(e6W?z@aa*&ycE8e*pvY zU&3B+D~)ZDGmd-}f^w$F=|-D1%e_!6m;&cm6wpH!Z@ zOsqv&0;%{|O2+>n6*`g(PEQ&alK+FWj#NPUh@|5#>i%W2fq&yw_6ySelHm~AuM)lp4Y@p;GY$i#MQQn0(9_!#)EKRCT zem(U%j*+6tzii`C#LGzoNVn5&F6DRGx_40fZ#c=N{so*7SP}#a2%@nqClw$1m%cbs zYtjko&r{KnbfCBaenSeTevd8tz#2vSVWiKAk6;U1F5VC&#Op{`NX184@=XX%kUEjZ*@~KUM*noV!nR#)%SC@uL+a|0bm-qq10P9C zXncbdNy?9s#Z&hL#*#iH>1c|dkdjD^i1qKJJIOZ<)S4d`VLW9Q zNS$?4j!NWp_y_7Ih3B9RDV>T=#N$a5$WJBpqx?l|WKSk^S`$yl?)WL`SMoLRCeEVW z5Y!Q2a7JTmQhic++UaOkg6AJiFvY}ypI)0ki3@FhGX6rlZ*5#mM|IK$K77kw_;u_} z`h>DP(i`MoAw|>vN8+`lUx@?XzA_<%6i%8&;p;ewhDCt}1ooIfS@H1{buZgsHu-M0 zZCBf7GX6kW7Hx)+7VfRk>W5JO1Yc&C0f}x-a+)v0>!xSAIll3}eT!<*|) zPR~vIcj0(%W@?@{)#vori4)TAEIyOgZf;t7j?2|z-5%!LWN)TB+V}6XC#8GcMO2bu(RWUTzxqOy~K!)7k&H&;NDqf86RnPPb?8UH0U) zcK*AMZ**T>T2#2q4NN#IrKoUypk!fYnwwH|Xd}<}>e6GI-Q={Q!o`{Hq@u#L>27A~ zvF9`SSyZ^|pS8~2W|{rHc#_kyv|!xKV;iQ%y00!ND*VS~laKB7v!;p)=WvbVyNe1p zCl}u(H;wD3vIe}m{062e?bt?cSX8(=-A&2MOpSH>{i6$9>HoRV=%Pb=xKMJ@q0Me? z`mt?!T(77w-?b|)^6w=#>DUG?;mvS!iVByyx!HMBdDKHsWybEE^J&>O1$#q1_b1$Q zY^xf9u?@5tS5)`{-N-9Cv?JH_Brx_FdEVFqX)Qh7 z!U|f{^HeFgHpx@-z`;JA^Pxd~=;YLbTMv5b7E}uLR9&|9e8phL6z-|%slIZ7C-m=% z&{$LBj;AMdlA$6zM2n0Tl%ml%jaJ-`~#UJU;i{Jx)F||DA2q_RSm4ob}mGFU=OX8kA*;VVj)E zm=gF)L1VgPHfCQ1MUBZ{+n7RF0Q-5ygkuiM&qf=Q9bd*=xC}#ZJr>2im=(`q5MDt} zYwlncyo=L}377|Dbb<*nTnuMmFfPJZ@D0p{4PtG*CK%6+w8t{U7t}FE_qq#<;bnZ6 zhxrrv&upu2&vyg4ck{QiMgx@t#tb2&CtQu;xC;~U5|+Yx4UI|Tf<3VLM>TOeaxHTl_j94V&5Y?v`HSYpbfX;B!k7e1YiZB-aVzUFEJM9>s2h2Jfzo6i zlUa!+THB_651*pEAJsC)u>&Xk2G#dbZH>8x^>7RE;_Zxy#LwCr(~G9ROS4>Nf4fe` zj3-{HGhKvhyBO074|BKOF{nH3--rW-_b_G!f$hDFc?X;KG3FR2c-)tpqWpP3WA5RN z{>D@zerW(w&N+~aQLd9j_fU=;WK2uWH+L|tM)`EIy}=>Fj2T0`zzAdZ5T7~9m^oN? z4DHXun*(F*Aj&?(#20q5>SoIm(CH+vdAQ{Wy z0@QKuU?g63`*TmW@tRndc%ToNVq}(MNlbU1MxEeS)U+u&#g2vcs6m;8YPqSH4-cc( zgA1s^d<`{*?xW6|d8&QlGT4oBWn|a{%q%i-1kPX+3`(;LMmMZXc^I-LnWdN)x4QlB zBj+~9F$`Nwv$JFr=AoR5T1RGL5H3e`={8i;e~9@s{|}SV9bZ5#KzC42_{6V3o;r$G zaK@s#tR)u1&Zrw4jiERTBX9#o;Yn1NWtwi|wNNeA53{q+j3!eSCt_B76;)v!>W<$+ zUGNiEK7ks9*HBM-6LtI_s3tEm!;Xpas3)z0xiJQHV+n5mC=BSt6Upd;Gu@6wScvjU zRFl7jYQp`f3!Xt;=(;Q4#!$+Cqt=HKGwmo3Lyd_D)cK=OUD6nJeD|5Ozb-V0fTq!8 z)Byq1h3BGLV5##BRQ(T7eSQ+vHGiVIFxxD zAh){;hfxP!K;6(SjKsUBL0NjXyu=ZOIQaFqaMJUV;>;Dvn=X{YoTtqX@HEL zs5k14$D%Gg2X)8GQFpup)e;|}>YYN}@b}LDpz4J@YsW%G)OlK?#z0?GS0`g*Ou;A& z>?WhW_z7#{ebfaa=h`QTN8NFIRNwYTje()4K{XM};4HU)BWkqoKwbDcmc?5bk9nT6 zH`)$)pn&O1CL24(*npXcIVeBx%8O7Z+JKdC2gcw<+=%&~xAk|UT5Lbo!gH7vbIr3| zlOO9*Zi%|VIhbAZe-D|81ooqz4D96aT=>SaE^9kx0~W zU9dO~bmah+qWmJN3*JPX_ZzH$e>h7lv@P9aA?;t19fMt9HilB(go+==>Uaagu<#=L zcB_x2DfdSWuIZ?*dmVM$XQ&(b4nr~1V%sw1Fbn1OSO7aOrv24-g9+ro8L09+Y>pdU z{I>Hx<|Y0Fb)vkl*m+zKgD6K}L2Q5_*b&uI!(4n4s*7L1s<=2nMo;hw_P`scE{I!V zNBaa+#dWB`a}sp}=TH~?9`oS?)P=GywND(3TCk!~^#`J+`8X_r0aObGR*}&Y??v6& zdCZSrqfT%K3uEzR_Cispm98-s!YQZ|FTmWm8g+p!sIhSfYvZ@5!5gyN8j7@3z*Hm? z!;bo>L6?fPaJ`FPz$TRQt*|ZC89P#*h`Qhr)Qy}&wa_h8SN?{&;3HI*c(2+P3P!a^ zIV`C8A4Nt_&x+mi{w!KhIgz+AWxwJxke9k>Z~=lk6LW2o729z!wvDmy(ZVl3s3sPoN3 z&6ZV|g!?c8%dF;FCCIcPqbC}QI$#`D#n~8*>6n1GP$#as#?Fo*s4=q>b%VQ6H+&p* z!SkrWecxGht)0g8QSkw5X@52090Ka|wWu39i)w-2u@^qZPS|~&9Sd)wRRj|C^{TIfOOvuCx65fL)oouD4Ax&AA1&Vx7gh_!ui;%)~;%i8(gg3)M$WyU|z;H=@pW4x3~4H|+0_f%aq+Scnbq62@bZE!OU+_zG-_ z7cc=!ZnYmI60s5G4cG*4VneLF%^p7tb)(y`9A3vT%<`t+MFA5*rYwP2)b#6xy>SF; zv>!pu-;0Cc^CLZG{4?`Wd4I}XqhI4(B z?QJ_)s-O<+ifXb&sHQrM5qKL*V#qFgp=gYw+!xi?YfvXXi{;TvXH~^;)RPZHwcses zjj0&W^q5XYP5CMo$B*zSyo|cw52&Wi`i`C7wNaxt4t3&57=p8~C9c9scoX#i`QNn< z5RKuK6HzVu+`F`Y7Bb5TsA*PX5FSI_$W_#n{DnHO^lm%2nxUR#4(bNxV>Vohx{=kW zC)|y}_z9}sMJ$EiVHwP{hxXT#mEU7u7M(GTa&J^$Uq)5T`JNr!l~H444CcjWP=oh5 zEQs4MC+PbP%GO>Bct z@D{fD)Ltm&puIo>?(_J}hdOb|L)!Q%K9#%5+E#9@@P9<^g<434L~1hvrRK4$HN zWi|g-k_l(WN4NxUU=5sdoC=v}dfdTO2p@^-Wtcg>X3L!s%EP=VNZ%h{f=2?1RT~JU13` zfjLZh-6fusa`0u=2yUS6S9Wk#ylQ7t4A!DvE6jocjK$d)xJl+iG8)wzuGxiTJ2s;H z9p>l6Vb^V6M}N!Ha)BmThxpjOuOL0vI`?scI*84mec6>;aP+{j^b`YNUn{PFVNBzSu8{Ck`|CX}98;-&| zp67pm*e5duPPjI!XUb83T@KH5z=OFc6A#YgnJCJ2@_Qy6M+A9h5a(N5D8LRfj|zGE zHp)Z>d;TY&DX5j}Ma+-ssIEAOjqwz!DGL_%{FhM(YC#IeX&8wbtlLoMNe;2~UqY=D zi&4{XbAZfo?&u^2bEm6{d;YZBRm$@R$$hLz#jw(zKd5?O6UrZBVayil`3qP{XIrdJ zJPkF-b~wMr%9Nif0za#`;*Gtml7E*A7*2lk+HQu-tQ6-uEJFMQmcbjS z>6Sg*^FPgA#B7us@C~z?x(R9l8iqP)+XqE4t23`RA5s&hVSdaXyjOD>>VGJ7S@e=Rpebww)b0bj@LxDVsFzBx!ncbp}{ zK4BqL#b{Jhw?_?@Bvic@@F`q{<#CHEf8q9D!C>M)V+?wg?P#xqT3^TytEQReb4oAB9b{9W@YO!mmK7WY1K>n&WUJG?2ZBZ-h zKxbN2=D$w7%msEkPhkP#x3CjFMoqg8{MA9zaS1lWBiIjfRQF6WCZoFSH0pvkQRjK= z%v;0r-?E{o8*LaMqo(eP6>%i$NtU8cv=eoLgD!sF`77%4LXId~KMG?hw|3>(s1G8m zQ7yX}d*UwC^v+Y$wsfEsnbrgbqwaVYs>we`-Pje>^ty}c`$x`PwQN@uNA+nhd>V(k z@;=mpa};~veJqU~YTIc#1{o^>vy@CEJ6^W|bISR(^Aiu?V#k-^B^|5Vi1(j`jSv=P#(^TGi3)2=Fo?qdt8Z)ij@C7c_M}|C3Eu)bvY1 z&5o6*X}1$KcFv-n>>e(}g7vH$@j1#d_3h|CfLfrAV=ugm`MADm*T7cji#qWz9EdNY z=I=dJ6IX6%`>YPCYr0@>9D(ZlBiI}>#d-cmu~wK!c_fa&lc+IOKi-a+ju@y-U>KP; zxDM35fOVnHM8fspbZET-B3N{#zI=*gmTR(uhfy1a4 z3~pi9g>tB_Xx<`Vr`JdV8m$5Bi`!7sE>}ytvXwwBOktP>8(~RohU)ty=WL9oyaBc1 zUBP1b1FGdRwX%aa2-RX;17zMNvk>(}39W5c%tMtgphjz{Hul|68MSbR7iequS4MS7Q`F07Bt~Lj6&c;>5!CDT9O?uQP#3Dw&hvlMX^L9$I-@SQ z7|Y{!RJ}8(6W_vcEZW{P-7y|@{uQXfw-MEHAK*~U|BGbe2sG}%XEvOP`jq=6reKYZ z_7lxU98dW?swvw%ZEv7As!L{|R=j6XEw%uIaW!g1O?Mv0P|7#Z|NTE(C)-CMsERdF zD_|REKNlZ|I`Mogi_0+-_o7PbL(vx(ZKF zqqRU6+mxkI7i@-#4@J#}i5QCeQPb%horwkwumJmo)7)3SCC_j17q%9~yJ4EinM^m^J0hNI%$oKu~z^<@5Q z!8k;q8W!$l-&V~qjdDkvgeP$vw&?Ad$+#Ew#L<21(mfrkP<{v1b>E`i|9@g5EZWz$ zSTEE|>UA89_xm#cHLCmcvro7RRsI@Pp+tYr|JG|3>O@DdHRewA{J-;cL)BmC%BQd? zm<`UQ@_0t0PJP79EkM&Kq6!$C>bQ`nPoy+O9T)aebj~{tK>L ze~685b_ONeavG}3e#Gh6VW{;q&Y>K5dYEnMi_WgY85Ha|i|T^TBdlkf9Y)&n7tS`L zZ273O#b|qhL)eAmn~$+Auo`PnzJ!{lxySk|ZomYS(E`#4=VA}kYxWzggny!@UFmUl zY(%1(GzJw`KM=JfFT)~w)Lmrs5$Pyul%B&f_!nxW zE0JnnuhFPAdoEY8RA>sD)=bF2t8m>qTgqZLx;<4CR5Sk7!?G43?Q@ zm-Zg0>#RT>cLH^tpQkbZ)bu)t8ts{<+pbDRJy{Co!#P+L zm!MuU2T|v{gu38E)D0D$VY{*&##5d(g!;(UdzSkw zh#CtkQ8#)XwLjNv`vIg3s_zG*7M%S!6oclt4>Z`A^3ebpRmk(K=l>h7{-||e4{D() zJJ&M@a1^$|YR}oen~Gy8Z$#Zlk>~wir_Ix-mGL9ggXEZJ$3%D32b1S87WboCI`EK8 zSu$1U>&q3pX*xE`WdC|ygZw$SV-&F$DQ~yc{GYqszT(a#oaOd6bg{OSOOSsRS;zb_ zq$(fj{jW{`_;3PAUmEHAn~W{Ooj~Q!$!of4ju&?E80uCd{|zaxJ1(5OxGs&T+o)U^5En?|~}t{jt{ zdi_Z=C@&|SC2b?#7oQ@oZ5+c^7TS8%WSd+qmywTb5?Wo%)3)!ZlWvJ1YC6*y=hcEmUEF6kDjK8e|B z?r?N9cZRjjWzL@1ggUETxi06Z?DB^E5%Pyg%}K+l*H-<%m<%sBf9pymZO>qHV&}-O z!g#FY_QjId)`;>DQV^*PNz+O1k$-PRh-XZzV6vs$b@pXcQva_c1ygZ2W+!E%QnU_a z>r9@dz~2sIEa@ht@uVlD0hBAdx~g=Ar0<45#6b$Mb*Ih^oJ!JKqqV=UJ0|c8JGH$| z>Os0k>P*s>N~OlG;v|f5b+fSVL-JpfDv&;K@v8n&{D}@&DH-8rc>6x3H=L4QvMZp zkX|5_)cO-e<_@V0JDZVilK%mt@oUmXlC~F##j{`ATcmIG{7VTwpuoqu|875$ zFYij(IA9U^{KWVeV2Y5=lC%vW?IC~JFEJI#w<8sG`$uqW4)*1s{1&OKyLcYA|7kvd z_}icSeAZ_5y_3I{r1JaZ;_wZO#Pj$U=}VHfTcm~5k0vFO-f_o8J4I<^yfo!EM{?8WdU$6ClHpQwGLjSdMG5JQsM&LS93r;eU)Sp-{%KLCD)+E+| zbf5f0(znFB;&-^0G>|F=Cw#YgO@=XOq{T#58CsW379 z&F>T3L^(6*KcpWirx1UgytZ7rh}-63ZkNwO{04Ob-?_j}e1SBSU>kfDCy+*xHc;M= zlSq5XYfB*Ci}XFIALXl9os;Gx?e=RhtB4IDX)8gz6=^U@TO|wa@3xGY(3A?vq(dCo z8%JkUz@J_I59~-vV!!?m2XWL*p*)>*QhCxnQc?Cj#8t#Ek?N8E8-qxbNi8$lzZ^TX zy+f)`x=c9?3%NL1|M&XWD7WRLIY|8HZ(kAngtUURoK%r?N>ZT~X@INP%GDRQNpYla z^!#sA`3Wgw8%8EGsU@*09Q+D?M!6sP-l$_r5<7sSiOnY8pS-p-^212uNbM*G;oJTm zUU1~oU0xL8*#EZw5(41_w3Tr_ji1|)|10xmPN3~BX)XC~Sb_8h`Qh#uivF+L^(luE zZ%oQc>^V{a@&$;u$DAZK{{1hRhJK!<6cb4+NI%;O{`We6y1c55`riMA}5Y2WD)C z$Q-16fE40_+5fdaquv@9YmpJa$BI=PG$}ECW9=V<(|fm>QK4AV_MvSDr6z`^j7l7n zk~}&!bnxhLp##Pxj!Ig5B_%pNKJ}+U>HVG`kvILvWvO`=_t{(|z0v0Lb<$(M%^4Hc z>Hi!&FnM%nYVx7C4!t&NNNDoVZ}!d|zbw9}m$>IF6P;jxubVE Rc-hQkFL+O{WN&N5{{cI^L7M;o diff --git a/engine/core/locale/vi_VN/LC_MESSAGES/django.po b/engine/core/locale/vi_VN/LC_MESSAGES/django.po index f74f64bf..bc1ce39a 100644 --- a/engine/core/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/core/locale/vi_VN/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,7 +29,8 @@ msgstr "Đang hoạt động" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" "Nếu được đặt thành false, đối tượng này sẽ không hiển thị cho người dùng " "không có quyền truy cập cần thiết." @@ -156,7 +157,8 @@ msgstr "Đã giao" msgid "canceled" msgstr "Đã hủy" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "Thất bại" @@ -184,11 +186,25 @@ msgstr "Momental" msgid "successful" msgstr "Thành công" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "Sơ đồ OpenAPI ở định dạng đã chọn với ngôn ngữ đã chọn" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "" +"Schema OpenApi3 cho API này. Định dạng có thể được chọn thông qua đàm phán " +"nội dung. Ngôn ngữ có thể được chọn bằng cả tiêu đề Accept-Language và tham " +"số truy vấn." + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "Bộ nhớ đệm I/O" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -196,262 +212,273 @@ msgstr "" "Chỉ sử dụng khóa để đọc dữ liệu được phép từ bộ nhớ đệm. Sử dụng khóa, dữ " "liệu và thời gian chờ kèm theo xác thực để ghi dữ liệu vào bộ nhớ đệm." -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "Xem danh sách các ngôn ngữ được hỗ trợ" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "Lấy các tham số có thể truy cập của ứng dụng" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "Gửi tin nhắn cho đội ngũ hỗ trợ" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "Yêu cầu URL CORSed. Chỉ cho phép https." -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "Tìm kiếm giữa các sản phẩm, danh mục và thương hiệu" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "Điểm cuối tìm kiếm toàn cầu để tra cứu qua các bảng của dự án" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "Mua hàng với tư cách là doanh nghiệp" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Mua hàng với tư cách là doanh nghiệp, sử dụng các sản phẩm được cung cấp với " -"`product_uuid` và `attributes`." +"Mua hàng với tư cách là doanh nghiệp, sử dụng các sản phẩm được cung cấp với" +" `product_uuid` và `attributes`." -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "Tải xuống tài sản kỹ thuật số từ đơn hàng kỹ thuật số đã mua." + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "Danh sách tất cả các nhóm thuộc tính (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "Lấy một nhóm thuộc tính duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "Tạo nhóm thuộc tính" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "Xóa nhóm thuộc tính" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "" "Viết lại nhóm thuộc tính hiện có và giữ nguyên các thuộc tính không thể " "chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "" "Cập nhật một số trường trong nhóm thuộc tính hiện có, giữ nguyên các trường " "không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "Danh sách tất cả các thuộc tính (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "Lấy một thuộc tính duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "Tạo một thuộc tính" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "Xóa một thuộc tính" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "" "Viết lại một thuộc tính hiện có để lưu trữ các trường không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" "Cập nhật một số trường của một thuộc tính hiện có, giữ nguyên các trường " "không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "Danh sách tất cả các giá trị thuộc tính (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "Lấy giá trị của một thuộc tính duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "Tạo giá trị thuộc tính" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "Xóa giá trị của một thuộc tính" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "" "Cập nhật giá trị của một thuộc tính hiện có mà không thay đổi các trường " "không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "" -"Cập nhật một số trường của giá trị thuộc tính hiện có, giữ nguyên các trường " -"không thể chỉnh sửa." +"Cập nhật một số trường của giá trị thuộc tính hiện có, giữ nguyên các trường" +" không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "Danh sách tất cả các danh mục (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "Lấy một danh mục duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "Mã định danh duy nhất (UUID) hoặc tên gọi (slug) của danh mục" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "Tạo một danh mục" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "Xóa một danh mục" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "SEO Meta snapshot" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "Trả về bản sao dữ liệu meta SEO của danh mục." -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "Danh sách tất cả các danh mục (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "" "Đối với người dùng không phải nhân viên, chỉ các đơn hàng của chính họ được " "hiển thị." -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" "Tìm kiếm chuỗi con không phân biệt chữ hoa chữ thường trên các trường " -"human_readable_id, order_products.product.name và order_products.product." -"partnumber." +"human_readable_id, order_products.product.name và " +"order_products.product.partnumber." -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "Lọc các đơn hàng có thời gian mua >= thời gian ISO 8601 này" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "Lọc các đơn hàng có thời gian mua <= thời gian ISO 8601 này" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "Lọc theo UUID chính xác" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "Lọc theo ID đơn hàng chính xác có thể đọc được bởi con người" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "" "Lọc theo địa chỉ email của người dùng (khớp chính xác không phân biệt chữ " "hoa chữ thường)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "Lọc theo UUID của người dùng" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "" "Lọc theo trạng thái đơn hàng (so khớp chuỗi con không phân biệt chữ hoa chữ " "thường)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" "Sắp xếp theo một trong các trường sau: uuid, human_readable_id, user_email, " "user, status, created, modified, buy_time, random. Thêm tiền tố '-' để sắp " "xếp theo thứ tự giảm dần (ví dụ: '-buy_time')." -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "Lấy một danh mục duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "Đặt hàng UUID hoặc ID dễ đọc cho con người" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "Tạo một thuộc tính" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "Không áp dụng cho người dùng không phải nhân viên." -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "Xóa một thuộc tính" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "Giá mua tại thời điểm đặt hàng" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 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 " @@ -461,19 +488,27 @@ msgstr "" "hoàn tất bằng số dư của người dùng; nếu sử dụng `force_payment`, một giao " "dịch sẽ được khởi tạo." -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "Lấy đơn hàng đang chờ xử lý hiện tại của người dùng" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "Lấy lệnh đặt hàng đang chờ xử lý hiện tại của người dùng đã xác thực." + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "Đặt hàng mà không cần tạo tài khoản" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "Hoàn tất đơn đặt hàng cho người dùng chưa đăng ký." -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "Thêm sản phẩm vào đơn hàng" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -481,11 +516,11 @@ msgstr "" "Thêm sản phẩm vào đơn hàng bằng cách sử dụng `product_uuid` và `attributes` " "được cung cấp." -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "Thêm danh sách sản phẩm vào đơn hàng, số lượng sẽ không được tính." -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." @@ -493,11 +528,11 @@ msgstr "" "Thêm danh sách sản phẩm vào đơn hàng bằng cách sử dụng `product_uuid` và " "`attributes` được cung cấp." -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "Xóa sản phẩm khỏi đơn hàng" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -505,11 +540,11 @@ msgstr "" "Xóa một sản phẩm khỏi đơn hàng bằng cách sử dụng `product_uuid` và " "`attributes` được cung cấp." -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "Xóa sản phẩm khỏi đơn hàng, số lượng sẽ không được tính." -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" @@ -517,467 +552,457 @@ msgstr "" "Xóa danh sách sản phẩm khỏi đơn hàng bằng cách sử dụng `product_uuid` và " "`attributes` được cung cấp." -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "Danh sách tất cả các thuộc tính (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Đối với người dùng không phải nhân viên, chỉ danh sách mong muốn của chính " "họ được hiển thị." -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "Lấy một thuộc tính duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "Tạo một thuộc tính" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "Không áp dụng cho người dùng không phải nhân viên." -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "Xóa một thuộc tính" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Viết lại một thuộc tính hiện có để lưu trữ các trường không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Cập nhật một số trường của một thuộc tính hiện có, giữ nguyên các trường " "không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "Lấy danh sách mong muốn đang chờ xử lý hiện tại của người dùng." + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "" +"Lấy danh sách mong muốn đang chờ xử lý hiện tại của người dùng đã đăng nhập." + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "Thêm sản phẩm vào đơn hàng" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Thêm sản phẩm vào danh sách mong muốn bằng cách sử dụng `product_uuid` được " "cung cấp." -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "Xóa sản phẩm khỏi danh sách mong muốn" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Xóa một sản phẩm khỏi danh sách mong muốn bằng cách sử dụng `product_uuid` " "được cung cấp." -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "Thêm nhiều sản phẩm vào danh sách mong muốn" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Thêm nhiều sản phẩm vào danh sách mong muốn bằng cách sử dụng các " "`product_uuids` được cung cấp." -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "Xóa sản phẩm khỏi đơn hàng" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Xóa nhiều sản phẩm khỏi danh sách mong muốn bằng cách sử dụng các " "`product_uuids` được cung cấp." -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -"Lọc theo một hoặc nhiều cặp tên/giá trị thuộc tính. • **Cú pháp**: " -"`attr_name=method-value[;attr2=method2-value2]…` • **Phương thức** (mặc định " -"là `icontains` nếu không được chỉ định): `iexact`, `exact`, `icontains`, " -"`contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, " -"`regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **Kiểu giá trị**: JSON " -"được ưu tiên (nên bạn có thể truyền danh sách/đối tượng), `true`/`false` cho " -"boolean, số nguyên, số thực; nếu không sẽ được xử lý như chuỗi. • " -"**Base64**: thêm tiền tố `b64-` để mã hóa Base64 an toàn cho URL giá trị " -"thô. \n" -"Ví dụ: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" +"Lọc theo một hoặc nhiều cặp tên/giá trị thuộc tính. • **Cú pháp**: `attr_name=method-value[;attr2=method2-value2]…` • **Phương thức** (mặc định là `icontains` nếu không được chỉ định): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **Kiểu giá trị**: JSON được ưu tiên (nên bạn có thể truyền danh sách/đối tượng), `true`/`false` cho boolean, số nguyên, số thực; nếu không sẽ được xử lý như chuỗi. • **Base64**: thêm tiền tố `b64-` để mã hóa Base64 an toàn cho URL giá trị thô. \n" +"Ví dụ: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`" -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "Danh sách tất cả sản phẩm (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(chính xác) Mã định danh duy nhất của sản phẩm (UUID)" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"Danh sách các trường được phân tách bằng dấu phẩy để sắp xếp. Thêm tiền tố `-" -"` để sắp xếp theo thứ tự giảm dần. **Được phép:** uuid, rating, name, slug, " -"created, modified, price, random" +"Danh sách các trường được phân tách bằng dấu phẩy để sắp xếp. Thêm tiền tố " +"`-` để sắp xếp theo thứ tự giảm dần. **Được phép:** uuid, rating, name, " +"slug, created, modified, price, random" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "Lấy thông tin chi tiết của một sản phẩm (xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "Mã định danh duy nhất (UUID) hoặc Slug của sản phẩm" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "Tạo sản phẩm" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Viết lại một sản phẩm hiện có, giữ nguyên các trường không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -"Cập nhật một số trường của sản phẩm hiện có, giữ nguyên các trường không thể " -"chỉnh sửa." +"Cập nhật một số trường của sản phẩm hiện có, giữ nguyên các trường không thể" +" chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "Xóa sản phẩm" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "Danh sách tất cả các phản hồi được phép cho một sản phẩm" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "Trả về bản sao lưu dữ liệu meta SEO của sản phẩm." -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "Danh sách tất cả các địa chỉ" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "Lấy một địa chỉ duy nhất" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "Tạo một địa chỉ mới" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "Xóa địa chỉ" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "Cập nhật toàn bộ địa chỉ" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "Cập nhật một phần địa chỉ" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "Tự động hoàn thành địa chỉ nhập liệu" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" "Dãy truy vấn dữ liệu thô, vui lòng bổ sung dữ liệu từ điểm cuối geo-IP." -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "Giới hạn số lượng kết quả, 1 < giới hạn < 10, mặc định: 5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "Danh sách tất cả phản hồi (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "Lấy một phản hồi duy nhất (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "Tạo phản hồi" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "Xóa phản hồi" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "Viết lại phản hồi hiện có để lưu các trường không thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "" -"Cập nhật một số trường của một phản hồi hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một phản hồi hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "" "Danh sách tất cả các mối quan hệ giữa đơn hàng và sản phẩm (cách xem đơn " "giản)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "" "Lấy thông tin về mối quan hệ giữa đơn hàng và sản phẩm (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "Tạo mối quan hệ mới giữa đơn hàng và sản phẩm" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "Thay thế mối quan hệ giữa đơn hàng và sản phẩm hiện có" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "Cập nhật một phần mối quan hệ giữa đơn hàng và sản phẩm hiện có" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "Xóa mối quan hệ giữa đơn hàng và sản phẩm" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "Thêm hoặc xóa phản hồi về mối quan hệ giữa đơn hàng và sản phẩm" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "Danh sách tất cả các thương hiệu (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "" "Trích xuất thông tin chi tiết về một thương hiệu duy nhất (chế độ xem chi " "tiết)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "Mã định danh thương hiệu (UUID) hoặc tên gọi tắt" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "Xây dựng thương hiệu" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "Xóa thương hiệu" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "SEO Meta snapshot cho thương hiệu" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "Danh sách tất cả nhà cung cấp (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "Tra cứu thông tin chi tiết về một nhà cung cấp duy nhất" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "Tạo nhà cung cấp" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "Xóa nhà cung cấp" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "Danh sách tất cả hình ảnh sản phẩm (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "Lấy một hình ảnh sản phẩm (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "Tạo hình ảnh sản phẩm" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "Xóa hình ảnh sản phẩm" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "Danh sách tất cả mã khuyến mãi (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "Lấy một mã khuyến mãi duy nhất (xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "Tạo mã khuyến mãi" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "Xóa mã khuyến mãi" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "Danh sách tất cả các chương trình khuyến mãi (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "Tra cứu một chương trình khuyến mãi (xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "Tạo chương trình khuyến mãi" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "Xóa một chương trình khuyến mãi" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "Danh sách tất cả các cổ phiếu (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "Tra cứu một cổ phiếu (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "Tạo hồ sơ kho hàng" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "Xóa một bản ghi kho" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "Danh sách tất cả thẻ sản phẩm (chế độ xem đơn giản)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "Lấy thông tin thẻ sản phẩm đơn lẻ (chế độ xem chi tiết)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "Tạo thẻ sản phẩm" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "Xóa thẻ sản phẩm" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "" "Viết lại một danh mục hiện có mà không thay đổi các trường không thể chỉnh " "sửa." -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "" -"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không " -"thể chỉnh sửa." +"Cập nhật một số trường của một danh mục hiện có, giữ nguyên các trường không" +" thể chỉnh sửa." #: engine/core/elasticsearch/__init__.py:122 #: engine/core/elasticsearch/__init__.py:570 @@ -1128,7 +1153,7 @@ msgid "camelized JSON data from the requested URL" msgstr "" "Dữ liệu JSON đã được chuyển đổi sang định dạng JSON từ URL được yêu cầu." -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "Chỉ các URL bắt đầu bằng http(s):// mới được phép." @@ -1163,7 +1188,8 @@ msgstr "" #: engine/core/graphene/mutations.py:237 engine/core/graphene/mutations.py:502 #: engine/core/graphene/mutations.py:544 engine/core/viewsets.py:704 msgid "wrong type came from order.buy() method: {type(instance)!s}" -msgstr "Loại sai đã được trả về từ phương thức order.buy(): {type(instance)!s}" +msgstr "" +"Loại sai đã được trả về từ phương thức order.buy(): {type(instance)!s}" #: engine/core/graphene/mutations.py:246 msgid "perform an action on a list of products in the order" @@ -1215,8 +1241,8 @@ msgstr "Đặt hàng" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "" "Vui lòng gửi các thuộc tính dưới dạng chuỗi được định dạng như sau: " "attr1=value1,attr2=value2" @@ -1290,10 +1316,12 @@ msgstr "Tỷ lệ phần trăm đánh dấu" #: engine/core/graphene/object_types.py:200 msgid "which attributes and values can be used for filtering this category." -msgstr "Các thuộc tính và giá trị nào có thể được sử dụng để lọc danh mục này." +msgstr "" +"Các thuộc tính và giá trị nào có thể được sử dụng để lọc danh mục này." #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" "Giá tối thiểu và tối đa cho các sản phẩm trong danh mục này, nếu có sẵn." @@ -1569,9 +1597,9 @@ msgid "" msgstr "" "Đại diện cho một nhóm các thuộc tính, có thể có cấu trúc phân cấp. Lớp này " "được sử dụng để quản lý và tổ chức các nhóm thuộc tính. Một nhóm thuộc tính " -"có thể có nhóm cha, tạo thành cấu trúc phân cấp. Điều này có thể hữu ích cho " -"việc phân loại và quản lý các thuộc tính một cách hiệu quả hơn trong một hệ " -"thống phức tạp." +"có thể có nhóm cha, tạo thành cấu trúc phân cấp. Điều này có thể hữu ích cho" +" việc phân loại và quản lý các thuộc tính một cách hiệu quả hơn trong một hệ" +" thống phức tạp." #: engine/core/models.py:91 msgid "parent of this group" @@ -1604,8 +1632,8 @@ msgstr "" "dụng để định nghĩa và quản lý thông tin liên quan đến một nhà cung cấp bên " "ngoài. Nó lưu trữ tên của nhà cung cấp, thông tin xác thực cần thiết cho " "việc giao tiếp và tỷ lệ phần trăm chênh lệch giá áp dụng cho các sản phẩm " -"được lấy từ nhà cung cấp. Mô hình này cũng duy trì các metadata và ràng buộc " -"bổ sung, khiến nó phù hợp để sử dụng trong các hệ thống tương tác với các " +"được lấy từ nhà cung cấp. Mô hình này cũng duy trì các metadata và ràng buộc" +" bổ sung, khiến nó phù hợp để sử dụng trong các hệ thống tương tác với các " "nhà cung cấp bên thứ ba." #: engine/core/models.py:124 @@ -1659,11 +1687,11 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"Đại diện cho thẻ sản phẩm được sử dụng để phân loại hoặc nhận dạng sản phẩm. " -"Lớp ProductTag được thiết kế để nhận dạng và phân loại sản phẩm một cách duy " -"nhất thông qua sự kết hợp giữa mã định danh thẻ nội bộ và tên hiển thị thân " -"thiện với người dùng. Nó hỗ trợ các thao tác được xuất qua mixins và cung " -"cấp tùy chỉnh metadata cho mục đích quản trị." +"Đại diện cho thẻ sản phẩm được sử dụng để phân loại hoặc nhận dạng sản phẩm." +" Lớp ProductTag được thiết kế để nhận dạng và phân loại sản phẩm một cách " +"duy nhất thông qua sự kết hợp giữa mã định danh thẻ nội bộ và tên hiển thị " +"thân thiện với người dùng. Nó hỗ trợ các thao tác được xuất qua mixins và " +"cung cấp tùy chỉnh metadata cho mục đích quản trị." #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1691,8 +1719,8 @@ msgid "" "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." msgstr "" -"Đại diện cho thẻ danh mục được sử dụng cho sản phẩm. Lớp này mô hình hóa một " -"thẻ danh mục có thể được sử dụng để liên kết và phân loại sản phẩm. Nó bao " +"Đại diện cho thẻ danh mục được sử dụng cho sản phẩm. Lớp này mô hình hóa một" +" thẻ danh mục có thể được sử dụng để liên kết và phân loại sản phẩm. Nó bao " "gồm các thuộc tính cho mã định danh thẻ nội bộ và tên hiển thị thân thiện " "với người dùng." @@ -1716,13 +1744,13 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"Đại diện cho một thực thể danh mục để tổ chức và nhóm các mục liên quan theo " -"cấu trúc phân cấp. Các danh mục có thể có mối quan hệ phân cấp với các danh " -"mục khác, hỗ trợ mối quan hệ cha-con. Lớp này bao gồm các trường cho " +"Đại diện cho một thực thể danh mục để tổ chức và nhóm các mục liên quan theo" +" cấu trúc phân cấp. Các danh mục có thể có mối quan hệ phân cấp với các danh" +" mục khác, hỗ trợ mối quan hệ cha-con. Lớp này bao gồm các trường cho " "metadata và biểu diễn trực quan, làm nền tảng cho các tính năng liên quan " "đến danh mục. Lớp này thường được sử dụng để định nghĩa và quản lý các danh " -"mục sản phẩm hoặc các nhóm tương tự khác trong ứng dụng, cho phép người dùng " -"hoặc quản trị viên xác định tên, mô tả và cấu trúc phân cấp của các danh " +"mục sản phẩm hoặc các nhóm tương tự khác trong ứng dụng, cho phép người dùng" +" hoặc quản trị viên xác định tên, mô tả và cấu trúc phân cấp của các danh " "mục, cũng như gán các thuộc tính như hình ảnh, thẻ hoặc ưu tiên." #: engine/core/models.py:274 @@ -1775,10 +1803,11 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"Đại diện cho một đối tượng Thương hiệu trong hệ thống. Lớp này quản lý thông " -"tin và thuộc tính liên quan đến một thương hiệu, bao gồm tên, logo, mô tả, " +"Đại diện cho một đối tượng Thương hiệu trong hệ thống. Lớp này quản lý thông" +" tin và thuộc tính liên quan đến một thương hiệu, bao gồm tên, logo, mô tả, " "các danh mục liên quan, một slug duy nhất và thứ tự ưu tiên. Nó cho phép tổ " "chức và hiển thị dữ liệu liên quan đến thương hiệu trong ứng dụng." @@ -1824,8 +1853,8 @@ msgstr "Các danh mục" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " @@ -1915,14 +1944,14 @@ msgid "" "product data and its associated information within an application." msgstr "" "Đại diện cho một sản phẩm có các thuộc tính như danh mục, thương hiệu, thẻ, " -"trạng thái kỹ thuật số, tên, mô tả, số phần và slug. Cung cấp các thuộc tính " -"tiện ích liên quan để truy xuất đánh giá, số lượng phản hồi, giá, số lượng " +"trạng thái kỹ thuật số, tên, mô tả, số phần và slug. Cung cấp các thuộc tính" +" tiện ích liên quan để truy xuất đánh giá, số lượng phản hồi, giá, số lượng " "và tổng số đơn hàng. Được thiết kế để sử dụng trong hệ thống quản lý thương " "mại điện tử hoặc quản lý kho hàng. Lớp này tương tác với các mô hình liên " "quan (như Danh mục, Thương hiệu và Thẻ Sản phẩm) và quản lý bộ nhớ đệm cho " -"các thuộc tính được truy cập thường xuyên để cải thiện hiệu suất. Nó được sử " -"dụng để định nghĩa và thao tác dữ liệu sản phẩm và thông tin liên quan trong " -"ứng dụng." +"các thuộc tính được truy cập thường xuyên để cải thiện hiệu suất. Nó được sử" +" dụng để định nghĩa và thao tác dữ liệu sản phẩm và thông tin liên quan " +"trong ứng dụng." #: engine/core/models.py:585 msgid "category this product belongs to" @@ -1978,16 +2007,16 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" "Đại diện cho một thuộc tính trong hệ thống. Lớp này được sử dụng để định " -"nghĩa và quản lý các thuộc tính, là các phần dữ liệu có thể tùy chỉnh có thể " -"được liên kết với các thực thể khác. Các thuộc tính có các danh mục, nhóm, " +"nghĩa và quản lý các thuộc tính, là các phần dữ liệu có thể tùy chỉnh có thể" +" được liên kết với các thực thể khác. Các thuộc tính có các danh mục, nhóm, " "loại giá trị và tên liên quan. Mô hình hỗ trợ nhiều loại giá trị, bao gồm " -"chuỗi, số nguyên, số thực, boolean, mảng và đối tượng. Điều này cho phép cấu " -"trúc dữ liệu động và linh hoạt." +"chuỗi, số nguyên, số thực, boolean, mảng và đối tượng. Điều này cho phép cấu" +" trúc dữ liệu động và linh hoạt." #: engine/core/models.py:733 msgid "group of this attribute" @@ -2048,13 +2077,13 @@ msgstr "Thuộc tính" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." msgstr "" -"Đại diện cho một giá trị cụ thể của một thuộc tính được liên kết với một sản " -"phẩm. Nó liên kết 'thuộc tính' với một 'giá trị' duy nhất, cho phép tổ chức " -"tốt hơn và thể hiện động các đặc điểm của sản phẩm." +"Đại diện cho một giá trị cụ thể của một thuộc tính được liên kết với một sản" +" phẩm. Nó liên kết 'thuộc tính' với một 'giá trị' duy nhất, cho phép tổ chức" +" tốt hơn và thể hiện động các đặc điểm của sản phẩm." #: engine/core/models.py:788 msgid "attribute of this value" @@ -2071,8 +2100,8 @@ msgstr "Giá trị cụ thể cho thuộc tính này" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" @@ -2120,11 +2149,11 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"Đại diện cho một chiến dịch khuyến mãi cho các sản phẩm có giảm giá. Lớp này " -"được sử dụng để định nghĩa và quản lý các chiến dịch khuyến mãi cung cấp " +"Đại diện cho một chiến dịch khuyến mãi cho các sản phẩm có giảm giá. Lớp này" +" được sử dụng để định nghĩa và quản lý các chiến dịch khuyến mãi cung cấp " "giảm giá theo tỷ lệ phần trăm cho các sản phẩm. Lớp này bao gồm các thuộc " "tính để thiết lập tỷ lệ giảm giá, cung cấp chi tiết về chương trình khuyến " "mãi và liên kết nó với các sản phẩm áp dụng. Nó tích hợp với danh mục sản " @@ -2170,9 +2199,9 @@ msgid "" "operations for adding and removing multiple products at once." msgstr "" "Đại diện cho danh sách mong muốn của người dùng để lưu trữ và quản lý các " -"sản phẩm mong muốn. Lớp này cung cấp các chức năng để quản lý bộ sưu tập sản " -"phẩm, hỗ trợ các thao tác như thêm và xóa sản phẩm, cũng như hỗ trợ các thao " -"tác thêm và xóa nhiều sản phẩm cùng lúc." +"sản phẩm mong muốn. Lớp này cung cấp các chức năng để quản lý bộ sưu tập sản" +" phẩm, hỗ trợ các thao tác như thêm và xóa sản phẩm, cũng như hỗ trợ các " +"thao tác thêm và xóa nhiều sản phẩm cùng lúc." #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2196,15 +2225,15 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" "Đại diện cho một bản ghi tài liệu liên quan đến một sản phẩm. Lớp này được " "sử dụng để lưu trữ thông tin về các tài liệu liên quan đến các sản phẩm cụ " -"thể, bao gồm việc tải lên tệp và metadata của chúng. Nó chứa các phương thức " -"và thuộc tính để xử lý loại tệp và đường dẫn lưu trữ cho các tệp tài liệu. " -"Nó mở rộng chức năng từ các mixin cụ thể và cung cấp các tính năng tùy chỉnh " -"bổ sung." +"thể, bao gồm việc tải lên tệp và metadata của chúng. Nó chứa các phương thức" +" và thuộc tính để xử lý loại tệp và đường dẫn lưu trữ cho các tệp tài liệu. " +"Nó mở rộng chức năng từ các mixin cụ thể và cung cấp các tính năng tùy chỉnh" +" bổ sung." #: engine/core/models.py:998 msgid "documentary" @@ -2220,14 +2249,14 @@ msgstr "Chưa được giải quyết" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" "Đại diện cho một thực thể địa chỉ bao gồm thông tin vị trí và mối quan hệ " "với người dùng. Cung cấp chức năng lưu trữ dữ liệu địa lý và địa chỉ, cũng " @@ -2299,12 +2328,12 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"Đại diện cho một mã khuyến mãi có thể được sử dụng để giảm giá, quản lý thời " -"hạn hiệu lực, loại giảm giá và cách áp dụng. Lớp PromoCode lưu trữ thông tin " -"chi tiết về mã khuyến mãi, bao gồm mã định danh duy nhất, thuộc tính giảm " -"giá (số tiền hoặc phần trăm), thời hạn hiệu lực, người dùng liên kết (nếu " -"có) và trạng thái sử dụng. Nó bao gồm chức năng để xác thực và áp dụng mã " -"khuyến mãi vào đơn hàng đồng thời đảm bảo các điều kiện được đáp ứng." +"Đại diện cho một mã khuyến mãi có thể được sử dụng để giảm giá, quản lý thời" +" hạn hiệu lực, loại giảm giá và cách áp dụng. Lớp PromoCode lưu trữ thông " +"tin chi tiết về mã khuyến mãi, bao gồm mã định danh duy nhất, thuộc tính " +"giảm giá (số tiền hoặc phần trăm), thời hạn hiệu lực, người dùng liên kết " +"(nếu có) và trạng thái sử dụng. Nó bao gồm chức năng để xác thực và áp dụng " +"mã khuyến mãi vào đơn hàng đồng thời đảm bảo các điều kiện được đáp ứng." #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2392,15 +2421,15 @@ msgstr "Loại giảm giá không hợp lệ cho mã khuyến mãi {self.uuid}!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" "Đại diện cho một đơn hàng được đặt bởi người dùng. Lớp này mô hình hóa một " "đơn hàng trong ứng dụng, bao gồm các thuộc tính khác nhau như thông tin " -"thanh toán và vận chuyển, trạng thái, người dùng liên quan, thông báo và các " -"thao tác liên quan. Đơn hàng có thể có các sản phẩm liên quan, áp dụng " +"thanh toán và vận chuyển, trạng thái, người dùng liên quan, thông báo và các" +" thao tác liên quan. Đơn hàng có thể có các sản phẩm liên quan, áp dụng " "khuyến mãi, thiết lập địa chỉ và cập nhật chi tiết vận chuyển hoặc thanh " "toán. Đồng thời, chức năng hỗ trợ quản lý các sản phẩm trong chu kỳ đời của " "đơn hàng." @@ -2494,8 +2523,8 @@ msgstr "Bạn không thể thêm nhiều sản phẩm hơn số lượng hiện #: engine/core/models.py:1428 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"Bạn không thể xóa sản phẩm khỏi một đơn hàng không phải là đơn hàng đang chờ " -"xử lý." +"Bạn không thể xóa sản phẩm khỏi một đơn hàng không phải là đơn hàng đang chờ" +" xử lý." #: engine/core/models.py:1416 #, python-brace-format @@ -2565,11 +2594,11 @@ msgid "" "fields to effectively model and manage feedback data." msgstr "" "Quản lý phản hồi của người dùng về sản phẩm. Lớp này được thiết kế để thu " -"thập và lưu trữ phản hồi của người dùng về các sản phẩm cụ thể mà họ đã mua. " -"Nó bao gồm các thuộc tính để lưu trữ bình luận của người dùng, tham chiếu " -"đến sản phẩm liên quan trong đơn hàng và đánh giá do người dùng gán. Lớp này " -"sử dụng các trường cơ sở dữ liệu để mô hình hóa và quản lý dữ liệu phản hồi " -"một cách hiệu quả." +"thập và lưu trữ phản hồi của người dùng về các sản phẩm cụ thể mà họ đã mua." +" Nó bao gồm các thuộc tính để lưu trữ bình luận của người dùng, tham chiếu " +"đến sản phẩm liên quan trong đơn hàng và đánh giá do người dùng gán. Lớp này" +" sử dụng các trường cơ sở dữ liệu để mô hình hóa và quản lý dữ liệu phản hồi" +" một cách hiệu quả." #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2581,7 +2610,8 @@ msgid "feedback comments" msgstr "Phản hồi" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" "Tham chiếu đến sản phẩm cụ thể trong đơn hàng mà phản hồi này đề cập đến." @@ -2725,16 +2755,16 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" "Đại diện cho chức năng tải xuống các tài sản kỹ thuật số liên quan đến đơn " -"hàng. Lớp DigitalAssetDownload cung cấp khả năng quản lý và truy cập các tệp " -"tải xuống liên quan đến sản phẩm trong đơn hàng. Nó lưu trữ thông tin về sản " -"phẩm trong đơn hàng liên quan, số lần tải xuống và liệu tài sản có hiển thị " -"công khai hay không. Nó bao gồm một phương thức để tạo URL tải xuống tài sản " -"khi đơn hàng liên quan ở trạng thái đã hoàn thành." +"hàng. Lớp DigitalAssetDownload cung cấp khả năng quản lý và truy cập các tệp" +" tải xuống liên quan đến sản phẩm trong đơn hàng. Nó lưu trữ thông tin về " +"sản phẩm trong đơn hàng liên quan, số lần tải xuống và liệu tài sản có hiển " +"thị công khai hay không. Nó bao gồm một phương thức để tạo URL tải xuống tài" +" sản khi đơn hàng liên quan ở trạng thái đã hoàn thành." #: engine/core/models.py:1961 msgid "download" @@ -2792,8 +2822,7 @@ msgstr "Xin chào %(order.user.first_name)s," #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" msgstr "" "Cảm ơn quý khách đã đặt hàng #%(order.pk)s! Chúng tôi vui mừng thông báo " @@ -2822,8 +2851,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." msgstr "" -"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng " -"tôi tại %(config.EMAIL_HOST_USER)s." +"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng" +" tôi tại %(config.EMAIL_HOST_USER)s." #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2873,8 +2902,8 @@ msgid "" "if you have any questions, feel free to contact our support at\n" " %(contact_email)s." msgstr "" -"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng " -"tôi tại %(contact_email)s." +"Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với bộ phận hỗ trợ của chúng" +" tôi tại %(contact_email)s." #: engine/core/templates/digital_order_delivered_email.html:165 #: engine/core/templates/promocode_granted_email.html:108 @@ -2900,14 +2929,13 @@ msgid "" "Thank you for staying with us! We have granted you with a promocode\n" " for " msgstr "" -"Cảm ơn quý khách đã đồng hành cùng chúng tôi! Chúng tôi đã cấp cho quý khách " -"một mã khuyến mãi cho" +"Cảm ơn quý khách đã đồng hành cùng chúng tôi! Chúng tôi đã cấp cho quý khách" +" một mã khuyến mãi cho" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "" "Cảm ơn quý khách đã đặt hàng! Chúng tôi rất vui được xác nhận đơn hàng của " @@ -2980,7 +3008,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" "Kích thước hình ảnh không được vượt quá w{max_width} x h{max_height} pixel!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." @@ -2988,7 +3016,7 @@ msgstr "" "Xử lý yêu cầu về sơ đồ trang web (sitemap index) và trả về phản hồi XML. Nó " "đảm bảo rằng phản hồi bao gồm tiêu đề loại nội dung XML phù hợp." -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " @@ -2998,17 +3026,17 @@ msgstr "" "lấy phản hồi chi tiết phù hợp của sơ đồ trang web và đặt tiêu đề Content-" "Type cho XML." -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "" "Trả về danh sách các ngôn ngữ được hỗ trợ và thông tin tương ứng của chúng." -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "Trả về các tham số của trang web dưới dạng đối tượng JSON." -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." @@ -3016,81 +3044,83 @@ msgstr "" "Xử lý các thao tác bộ nhớ đệm như đọc và ghi dữ liệu bộ nhớ đệm với khóa và " "thời gian chờ được chỉ định." -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "Xử lý các biểu mẫu liên hệ." -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "Xử lý các yêu cầu xử lý và xác thực URL từ các yêu cầu POST đến." -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "Xử lý các truy vấn tìm kiếm toàn cầu." -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "" -"Xử lý logic của việc mua hàng như một hoạt động kinh doanh mà không cần đăng " -"ký." +"Xử lý logic của việc mua hàng như một hoạt động kinh doanh mà không cần đăng" +" ký." -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "Xử lý việc tải xuống tài sản kỹ thuật số liên quan đến một đơn hàng. Chức " -"năng này cố gắng cung cấp tệp tài sản kỹ thuật số được lưu trữ trong thư mục " -"lưu trữ của dự án. Nếu tệp không được tìm thấy, một lỗi HTTP 404 sẽ được trả " -"về để thông báo rằng tài nguyên không khả dụng." +"năng này cố gắng cung cấp tệp tài sản kỹ thuật số được lưu trữ trong thư mục" +" lưu trữ của dự án. Nếu tệp không được tìm thấy, một lỗi HTTP 404 sẽ được " +"trả về để thông báo rằng tài nguyên không khả dụng." -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid là trường bắt buộc." -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "Sản phẩm không tồn tại" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "Bạn chỉ có thể tải xuống tài sản kỹ thuật số một lần." -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" -msgstr "Đơn hàng phải được thanh toán trước khi tải xuống tài sản kỹ thuật số." +msgstr "" +"Đơn hàng phải được thanh toán trước khi tải xuống tài sản kỹ thuật số." -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "Sản phẩm đặt hàng không có sản phẩm." -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "Biểu tượng trang web không tìm thấy" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" -"Xử lý yêu cầu về biểu tượng favicon của một trang web. Chức năng này cố gắng " -"cung cấp tệp favicon nằm trong thư mục tĩnh của dự án. Nếu tệp favicon không " -"được tìm thấy, một lỗi HTTP 404 sẽ được trả về để thông báo rằng tài nguyên " -"không khả dụng." - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"Chuyển hướng yêu cầu đến trang chỉ mục quản trị. Chức năng này xử lý các yêu " -"cầu HTTP đến và chuyển hướng chúng đến trang chỉ mục giao diện quản trị " -"Django. Nó sử dụng hàm `redirect` của Django để xử lý việc chuyển hướng HTTP." +"Xử lý yêu cầu về biểu tượng favicon của một trang web. Chức năng này cố gắng" +" cung cấp tệp favicon nằm trong thư mục tĩnh của dự án. Nếu tệp favicon " +"không được tìm thấy, một lỗi HTTP 404 sẽ được trả về để thông báo rằng tài " +"nguyên không khả dụng." #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"Chuyển hướng yêu cầu đến trang chỉ mục quản trị. Chức năng này xử lý các yêu" +" cầu HTTP đến và chuyển hướng chúng đến trang chỉ mục giao diện quản trị " +"Django. Nó sử dụng hàm `redirect` của Django để xử lý việc chuyển hướng " +"HTTP." + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "Trả về phiên bản hiện tại của eVibes." @@ -3110,16 +3140,17 @@ msgstr "" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" "Đại diện cho một tập hợp các đối tượng để quản lý các đối tượng " "AttributeGroup. Xử lý các thao tác liên quan đến AttributeGroup, bao gồm " -"lọc, serialization và truy xuất dữ liệu. Lớp này là một phần của lớp API của " -"ứng dụng và cung cấp một cách chuẩn hóa để xử lý yêu cầu và phản hồi cho dữ " -"liệu AttributeGroup." +"lọc, serialization và truy xuất dữ liệu. Lớp này là một phần của lớp API của" +" ứng dụng và cung cấp một cách chuẩn hóa để xử lý yêu cầu và phản hồi cho dữ" +" liệu AttributeGroup." #: engine/core/viewsets.py:176 msgid "" @@ -3133,17 +3164,17 @@ msgstr "" "Quản lý các thao tác liên quan đến các đối tượng thuộc tính (Attribute) " "trong ứng dụng. Cung cấp một bộ các điểm cuối API để tương tác với dữ liệu " "thuộc tính. Lớp này quản lý việc truy vấn, lọc và serialization của các đối " -"tượng thuộc tính, cho phép kiểm soát động đối với dữ liệu được trả về, chẳng " -"hạn như lọc theo các trường cụ thể hoặc lấy thông tin chi tiết so với thông " -"tin đơn giản tùy thuộc vào yêu cầu." +"tượng thuộc tính, cho phép kiểm soát động đối với dữ liệu được trả về, chẳng" +" hạn như lọc theo các trường cụ thể hoặc lấy thông tin chi tiết so với thông" +" tin đơn giản tùy thuộc vào yêu cầu." #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" "Bộ xem (viewset) để quản lý các đối tượng AttributeValue. Bộ xem này cung " "cấp các chức năng để liệt kê, truy xuất, tạo, cập nhật và xóa các đối tượng " @@ -3215,8 +3246,8 @@ msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" "Đại diện cho tập hợp các đối tượng Feedback. Lớp này quản lý các thao tác " @@ -3231,13 +3262,13 @@ msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"ViewSet để quản lý đơn hàng và các hoạt động liên quan. Lớp này cung cấp các " -"chức năng để truy xuất, sửa đổi và quản lý các đối tượng đơn hàng. Nó bao " +"ViewSet để quản lý đơn hàng và các hoạt động liên quan. Lớp này cung cấp các" +" chức năng để truy xuất, sửa đổi và quản lý các đối tượng đơn hàng. Nó bao " "gồm các điểm cuối (endpoint) khác nhau để xử lý các hoạt động liên quan đến " "đơn hàng như thêm hoặc xóa sản phẩm, thực hiện giao dịch mua hàng cho cả " "người dùng đã đăng ký và chưa đăng ký, cũng như truy xuất các đơn hàng đang " @@ -3249,8 +3280,8 @@ msgstr "" msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" "Cung cấp một bộ xem (viewset) để quản lý các thực thể OrderProduct. Bộ xem " @@ -3284,8 +3315,8 @@ msgstr "Quản lý các hoạt động liên quan đến dữ liệu kho trong h msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." @@ -3293,10 +3324,10 @@ msgstr "" "Bộ công cụ ViewSet để quản lý các thao tác liên quan đến Danh sách mong " "muốn. Bộ công cụ WishlistViewSet cung cấp các điểm cuối để tương tác với " "danh sách mong muốn của người dùng, cho phép truy xuất, chỉnh sửa và tùy " -"chỉnh các sản phẩm trong danh sách mong muốn. Bộ công cụ này hỗ trợ các chức " -"năng như thêm, xóa và thực hiện các thao tác hàng loạt đối với các sản phẩm " -"trong danh sách mong muốn. Các kiểm tra quyền truy cập được tích hợp để đảm " -"bảo rằng người dùng chỉ có thể quản lý danh sách mong muốn của chính mình " +"chỉnh các sản phẩm trong danh sách mong muốn. Bộ công cụ này hỗ trợ các chức" +" năng như thêm, xóa và thực hiện các thao tác hàng loạt đối với các sản phẩm" +" trong danh sách mong muốn. Các kiểm tra quyền truy cập được tích hợp để đảm" +" bảo rằng người dùng chỉ có thể quản lý danh sách mong muốn của chính mình " "trừ khi được cấp quyền rõ ràng." #: engine/core/viewsets.py:1044 @@ -3308,8 +3339,8 @@ msgid "" "on the request context." msgstr "" "Lớp này cung cấp chức năng viewset để quản lý các đối tượng `Address`. Lớp " -"AddressViewSet cho phép thực hiện các thao tác CRUD, lọc dữ liệu và các hành " -"động tùy chỉnh liên quan đến các thực thể địa chỉ. Nó bao gồm các hành vi " +"AddressViewSet cho phép thực hiện các thao tác CRUD, lọc dữ liệu và các hành" +" động tùy chỉnh liên quan đến các thực thể địa chỉ. Nó bao gồm các hành vi " "chuyên biệt cho các phương thức HTTP khác nhau, các tùy chỉnh serializer và " "xử lý quyền truy cập dựa trên bối cảnh yêu cầu." @@ -3326,9 +3357,8 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"Xử lý các tác vụ liên quan đến Thẻ Sản phẩm trong ứng dụng. Lớp này cung cấp " -"chức năng để truy xuất, lọc và serialize các đối tượng Thẻ Sản phẩm. Nó hỗ " +"Xử lý các tác vụ liên quan đến Thẻ Sản phẩm trong ứng dụng. Lớp này cung cấp" +" chức năng để truy xuất, lọc và serialize các đối tượng Thẻ Sản phẩm. Nó hỗ " "trợ lọc linh hoạt trên các thuộc tính cụ thể bằng cách sử dụng backend lọc " "được chỉ định và động sử dụng các serializer khác nhau tùy thuộc vào hành " "động đang thực hiện." - diff --git a/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo b/engine/core/locale/zh_Hans/LC_MESSAGES/django.mo index 8001c73cba617cdf655fd7928029901b8e18c42c..f0251c441d9d446071585f073f2b9e105604b29c 100644 GIT binary patch delta 14849 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 delta 13808 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 diff --git a/engine/core/locale/zh_Hans/LC_MESSAGES/django.po b/engine/core/locale/zh_Hans/LC_MESSAGES/django.po index 59caa2d6..05168bf9 100644 --- a/engine/core/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/core/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,7 +27,8 @@ msgstr "处于活动状态" #: engine/core/abstract.py:21 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "如果设置为 false,则没有必要权限的用户无法查看此对象" #: engine/core/abstract.py:23 engine/core/choices.py:18 @@ -152,7 +153,8 @@ msgstr "已交付" msgid "canceled" msgstr "已取消" -#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24 +#: engine/core/choices.py:8 engine/core/choices.py:16 +#: engine/core/choices.py:24 msgid "failed" msgstr "失败" @@ -180,11 +182,22 @@ msgstr "时刻" msgid "successful" msgstr "成功" -#: engine/core/docs/drf/views.py:17 engine/core/graphene/mutations.py:38 +#: engine/core/docs/drf/views.py:31 +msgid "OpenAPI schema in selected format with selected language" +msgstr "选定格式和语言的 OpenAPI 模式" + +#: engine/core/docs/drf/views.py:33 +msgid "" +"OpenApi3 schema for this API. Format can be selected via content " +"negotiation. Language can be selected with Accept-Language and query " +"parameter both." +msgstr "该 API 的 OpenApi3 模式。可通过内容协商选择格式。可通过 Accept-Language 和查询参数选择语言。" + +#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:38 msgid "cache I/O" msgstr "缓存输入/输出" -#: engine/core/docs/drf/views.py:19 +#: engine/core/docs/drf/views.py:46 msgid "" "apply only a key to read permitted data from cache.\n" "apply key, data and timeout with authentication to write data to cache." @@ -192,697 +205,706 @@ msgstr "" "仅使用密钥从缓存中读取允许的数据。\n" "应用密钥、数据和带验证的超时,将数据写入缓存。" -#: engine/core/docs/drf/views.py:32 +#: engine/core/docs/drf/views.py:62 msgid "get a list of supported languages" msgstr "获取支持的语言列表" -#: engine/core/docs/drf/views.py:41 +#: engine/core/docs/drf/views.py:74 msgid "get application's exposable parameters" msgstr "获取应用程序的可公开参数" -#: engine/core/docs/drf/views.py:48 +#: engine/core/docs/drf/views.py:84 msgid "send a message to the support team" msgstr "向支持团队发送信息" -#: engine/core/docs/drf/views.py:59 engine/core/graphene/mutations.py:58 +#: engine/core/docs/drf/views.py:98 engine/core/graphene/mutations.py:58 msgid "request a CORSed URL" msgstr "请求 CORSed URL。只允许使用 https。" -#: engine/core/docs/drf/views.py:85 +#: engine/core/docs/drf/views.py:112 +msgid "Search between products, categories and brands" +msgstr "在产品、类别和品牌之间进行搜索" + +#: engine/core/docs/drf/views.py:130 msgid "global search endpoint to query across project's tables" msgstr "全局搜索端点可跨项目表格进行查询" -#: engine/core/docs/drf/views.py:91 +#: engine/core/docs/drf/views.py:139 msgid "purchase an order as a business" msgstr "以企业身份购买订单" -#: engine/core/docs/drf/views.py:98 +#: engine/core/docs/drf/views.py:146 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订" -"单。" +msgstr "使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订单。" -#: engine/core/docs/drf/viewsets.py:58 +#: engine/core/docs/drf/views.py:164 +msgid "download a digital asset from purchased digital order" +msgstr "从购买的数字订单中下载数字资产" + +#: engine/core/docs/drf/viewsets.py:61 msgid "list all attribute groups (simple view)" msgstr "列出所有属性组(简单视图)" -#: engine/core/docs/drf/viewsets.py:62 +#: engine/core/docs/drf/viewsets.py:68 msgid "retrieve a single attribute group (detailed view)" msgstr "检索单个属性组(详细视图)" -#: engine/core/docs/drf/viewsets.py:66 +#: engine/core/docs/drf/viewsets.py:75 msgid "create an attribute group" msgstr "创建属性组" -#: engine/core/docs/drf/viewsets.py:70 +#: engine/core/docs/drf/viewsets.py:82 msgid "delete an attribute group" msgstr "删除属性组" -#: engine/core/docs/drf/viewsets.py:74 +#: engine/core/docs/drf/viewsets.py:89 msgid "rewrite an existing attribute group saving non-editables" msgstr "重写保存不可编辑的现有属性组" -#: engine/core/docs/drf/viewsets.py:78 -msgid "rewrite some fields of an existing attribute group saving non-editables" +#: engine/core/docs/drf/viewsets.py:96 +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" msgstr "重写现有属性组的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:85 +#: engine/core/docs/drf/viewsets.py:106 msgid "list all attributes (simple view)" msgstr "列出所有属性(简单视图)" -#: engine/core/docs/drf/viewsets.py:89 +#: engine/core/docs/drf/viewsets.py:113 msgid "retrieve a single attribute (detailed view)" msgstr "检索单个属性(详细视图)" -#: engine/core/docs/drf/viewsets.py:93 +#: engine/core/docs/drf/viewsets.py:120 msgid "create an attribute" msgstr "创建属性" -#: engine/core/docs/drf/viewsets.py:97 +#: engine/core/docs/drf/viewsets.py:127 msgid "delete an attribute" msgstr "删除属性" -#: engine/core/docs/drf/viewsets.py:101 +#: engine/core/docs/drf/viewsets.py:134 msgid "rewrite an existing attribute saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: engine/core/docs/drf/viewsets.py:105 +#: engine/core/docs/drf/viewsets.py:141 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:112 +#: engine/core/docs/drf/viewsets.py:151 msgid "list all attribute values (simple view)" msgstr "列出所有属性值(简单视图)" -#: engine/core/docs/drf/viewsets.py:116 +#: engine/core/docs/drf/viewsets.py:158 msgid "retrieve a single attribute value (detailed view)" msgstr "读取单个属性值(详细视图)" -#: engine/core/docs/drf/viewsets.py:120 +#: engine/core/docs/drf/viewsets.py:165 msgid "create an attribute value" msgstr "创建属性值" -#: engine/core/docs/drf/viewsets.py:124 +#: engine/core/docs/drf/viewsets.py:172 msgid "delete an attribute value" msgstr "删除属性值" -#: engine/core/docs/drf/viewsets.py:128 +#: engine/core/docs/drf/viewsets.py:179 msgid "rewrite an existing attribute value saving non-editables" msgstr "重写现有属性值,保存不可编辑属性" -#: engine/core/docs/drf/viewsets.py:132 -msgid "rewrite some fields of an existing attribute value saving non-editables" +#: engine/core/docs/drf/viewsets.py:186 +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" msgstr "重写现有属性值的某些字段,保存不可编辑的属性值" -#: engine/core/docs/drf/viewsets.py:139 engine/core/docs/drf/viewsets.py:140 +#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197 msgid "list all categories (simple view)" msgstr "列出所有类别(简单视图)" -#: engine/core/docs/drf/viewsets.py:144 engine/core/docs/drf/viewsets.py:145 +#: engine/core/docs/drf/viewsets.py:204 engine/core/docs/drf/viewsets.py:205 msgid "retrieve a single category (detailed view)" msgstr "检索单个类别(详细视图)" -#: engine/core/docs/drf/viewsets.py:150 engine/core/docs/drf/viewsets.py:183 +#: engine/core/docs/drf/viewsets.py:210 engine/core/docs/drf/viewsets.py:258 msgid "Category UUID or slug" msgstr "类别 UUID 或标签" -#: engine/core/docs/drf/viewsets.py:157 engine/core/docs/drf/viewsets.py:158 +#: engine/core/docs/drf/viewsets.py:220 engine/core/docs/drf/viewsets.py:221 msgid "create a category" msgstr "创建类别" -#: engine/core/docs/drf/viewsets.py:162 engine/core/docs/drf/viewsets.py:163 +#: engine/core/docs/drf/viewsets.py:228 engine/core/docs/drf/viewsets.py:229 msgid "delete a category" msgstr "删除类别" -#: engine/core/docs/drf/viewsets.py:167 engine/core/docs/drf/viewsets.py:168 +#: engine/core/docs/drf/viewsets.py:236 engine/core/docs/drf/viewsets.py:237 msgid "rewrite an existing category saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:172 engine/core/docs/drf/viewsets.py:173 +#: engine/core/docs/drf/viewsets.py:244 engine/core/docs/drf/viewsets.py:245 msgid "rewrite some fields of an existing category saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:177 engine/core/docs/drf/viewsets.py:517 +#: engine/core/docs/drf/viewsets.py:252 engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:988 #: engine/core/graphene/object_types.py:118 #: engine/core/graphene/object_types.py:208 #: engine/core/graphene/object_types.py:483 msgid "SEO Meta snapshot" msgstr "搜索引擎优化元快照" -#: engine/core/docs/drf/viewsets.py:178 +#: engine/core/docs/drf/viewsets.py:253 msgid "returns a snapshot of the category's SEO meta data" msgstr "返回类别的搜索引擎优化元数据快照" -#: engine/core/docs/drf/viewsets.py:196 +#: engine/core/docs/drf/viewsets.py:274 msgid "list all orders (simple view)" msgstr "列出所有类别(简单视图)" -#: engine/core/docs/drf/viewsets.py:197 +#: engine/core/docs/drf/viewsets.py:275 msgid "for non-staff users, only their own orders are returned." msgstr "对于非工作人员用户,只有他们自己的订单才会被退回。" -#: engine/core/docs/drf/viewsets.py:203 +#: engine/core/docs/drf/viewsets.py:281 msgid "" -"Case-insensitive substring search across human_readable_id, order_products." -"product.name, and order_products.product.partnumber" +"Case-insensitive substring search across human_readable_id, " +"order_products.product.name, and order_products.product.partnumber" msgstr "" -"在 human_readable_id、order_products.product.name 和 order_products.product." -"partnumber 中进行不区分大小写的子串搜索" +"在 human_readable_id、order_products.product.name 和 " +"order_products.product.partnumber 中进行不区分大小写的子串搜索" -#: engine/core/docs/drf/viewsets.py:210 +#: engine/core/docs/drf/viewsets.py:288 msgid "Filter orders with buy_time >= this ISO 8601 datetime" msgstr "过滤买入时间 >= 此 ISO 8601 日期的订单" -#: engine/core/docs/drf/viewsets.py:215 +#: engine/core/docs/drf/viewsets.py:293 msgid "Filter orders with buy_time <= this ISO 8601 datetime" msgstr "过滤买入时间 <= 此 ISO 8601 日期的订单" -#: engine/core/docs/drf/viewsets.py:220 +#: engine/core/docs/drf/viewsets.py:298 msgid "Filter by exact order UUID" msgstr "按准确订单 UUID 筛选" -#: engine/core/docs/drf/viewsets.py:225 +#: engine/core/docs/drf/viewsets.py:303 msgid "Filter by exact human-readable order ID" msgstr "根据准确的人工可读订单 ID 进行筛选" -#: engine/core/docs/drf/viewsets.py:230 +#: engine/core/docs/drf/viewsets.py:308 msgid "Filter by user's email (case-insensitive exact match)" msgstr "按用户电子邮件过滤(不区分大小写精确匹配)" -#: engine/core/docs/drf/viewsets.py:235 +#: engine/core/docs/drf/viewsets.py:313 msgid "Filter by user's UUID" msgstr "按用户的 UUID 筛选" -#: engine/core/docs/drf/viewsets.py:240 +#: engine/core/docs/drf/viewsets.py:318 msgid "Filter by order status (case-insensitive substring match)" msgstr "按订单状态筛选(不区分大小写的子串匹配)" -#: engine/core/docs/drf/viewsets.py:246 +#: engine/core/docs/drf/viewsets.py:324 msgid "" -"Order by one of: uuid, human_readable_id, user_email, user, status, created, " -"modified, buy_time, random. Prefix with '-' for descending (e.g. '-" -"buy_time')." +"Order by one of: uuid, human_readable_id, user_email, user, status, created," +" modified, buy_time, random. Prefix with '-' for descending (e.g. " +"'-buy_time')." msgstr "" -"按以下一项排序:uuid、human_readable_id、user_email、user、status、created、" -"modified、buy_time、random。前缀\"-\"表示降序(例如\"-buy_time\")。" +"按以下一项排序:uuid、human_readable_id、user_email、user、status、created、modified、buy_time、random。前缀\"-\"表示降序(例如\"-buy_time\")。" -#: engine/core/docs/drf/viewsets.py:255 +#: engine/core/docs/drf/viewsets.py:336 msgid "retrieve a single order (detailed view)" msgstr "检索单个类别(详细视图)" -#: engine/core/docs/drf/viewsets.py:260 +#: engine/core/docs/drf/viewsets.py:341 msgid "Order UUID or human-readable id" msgstr "订单 UUID 或人类可读 ID" -#: engine/core/docs/drf/viewsets.py:267 +#: engine/core/docs/drf/viewsets.py:351 msgid "create an order" msgstr "创建属性" -#: engine/core/docs/drf/viewsets.py:268 +#: engine/core/docs/drf/viewsets.py:352 msgid "doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: engine/core/docs/drf/viewsets.py:272 +#: engine/core/docs/drf/viewsets.py:359 msgid "delete an order" msgstr "删除属性" -#: engine/core/docs/drf/viewsets.py:276 +#: engine/core/docs/drf/viewsets.py:366 msgid "rewrite an existing order saving non-editables" msgstr "重写现有类别,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:280 +#: engine/core/docs/drf/viewsets.py:373 msgid "rewrite some fields of an existing order saving non-editables" msgstr "重写现有类别的某些字段,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:284 +#: engine/core/docs/drf/viewsets.py:380 msgid "purchase an order" msgstr "订购时的购买价格" -#: engine/core/docs/drf/viewsets.py:286 +#: engine/core/docs/drf/viewsets.py:382 msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." -msgstr "" -"完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 " -"\"force_payment\",则启动交易。" +msgstr "完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 \"force_payment\",则启动交易。" -#: engine/core/docs/drf/viewsets.py:298 engine/core/graphene/mutations.py:335 +#: engine/core/docs/drf/viewsets.py:397 +msgid "retrieve current pending order of a user" +msgstr "检索用户当前的挂单" + +#: engine/core/docs/drf/viewsets.py:398 +msgid "retrieves a current pending order of an authenticated user" +msgstr "检索已验证用户的当前待处理订单" + +#: engine/core/docs/drf/viewsets.py:408 engine/core/graphene/mutations.py:335 msgid "purchase an order without account creation" msgstr "无需创建账户即可购买订单" -#: engine/core/docs/drf/viewsets.py:299 +#: engine/core/docs/drf/viewsets.py:409 msgid "finalizes the order purchase for a non-registered user." msgstr "完成非注册用户的订单购买。" -#: engine/core/docs/drf/viewsets.py:307 +#: engine/core/docs/drf/viewsets.py:420 msgid "add product to order" msgstr "在订单中添加产品" -#: engine/core/docs/drf/viewsets.py:308 +#: engine/core/docs/drf/viewsets.py:421 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品添加到订单中。" -#: engine/core/docs/drf/viewsets.py:313 +#: engine/core/docs/drf/viewsets.py:429 msgid "add a list of products to order, quantities will not count" msgstr "添加要订购的产品列表,不计算数量" -#: engine/core/docs/drf/viewsets.py:314 +#: engine/core/docs/drf/viewsets.py:430 msgid "" "adds a list of products to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品列表添加到订单中。" -#: engine/core/docs/drf/viewsets.py:319 +#: engine/core/docs/drf/viewsets.py:438 msgid "remove product from order" msgstr "从订单中删除产品" -#: engine/core/docs/drf/viewsets.py:320 +#: engine/core/docs/drf/viewsets.py:439 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品。" -#: engine/core/docs/drf/viewsets.py:325 +#: engine/core/docs/drf/viewsets.py:447 msgid "remove product from order, quantities will not count" msgstr "从订单中删除产品,不计算数量" -#: engine/core/docs/drf/viewsets.py:326 +#: engine/core/docs/drf/viewsets.py:448 msgid "" "removes a list of products from an order using the provided `product_uuid` " "and `attributes`" msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品列表。" -#: engine/core/docs/drf/viewsets.py:334 +#: engine/core/docs/drf/viewsets.py:459 msgid "list all wishlists (simple view)" msgstr "列出所有属性(简单视图)" -#: engine/core/docs/drf/viewsets.py:335 +#: engine/core/docs/drf/viewsets.py:460 msgid "for non-staff users, only their own wishlists are returned." msgstr "对于非工作人员用户,只返回他们自己的愿望清单。" -#: engine/core/docs/drf/viewsets.py:339 +#: engine/core/docs/drf/viewsets.py:467 msgid "retrieve a single wishlist (detailed view)" msgstr "检索单个属性(详细视图)" -#: engine/core/docs/drf/viewsets.py:343 +#: engine/core/docs/drf/viewsets.py:474 msgid "create an wishlist" msgstr "创建属性" -#: engine/core/docs/drf/viewsets.py:344 +#: engine/core/docs/drf/viewsets.py:475 msgid "Doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: engine/core/docs/drf/viewsets.py:348 +#: engine/core/docs/drf/viewsets.py:482 msgid "delete an wishlist" msgstr "删除属性" -#: engine/core/docs/drf/viewsets.py:352 +#: engine/core/docs/drf/viewsets.py:489 msgid "rewrite an existing wishlist saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: engine/core/docs/drf/viewsets.py:356 +#: engine/core/docs/drf/viewsets.py:496 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:360 +#: engine/core/docs/drf/viewsets.py:503 +msgid "retrieve current pending wishlist of a user" +msgstr "检索用户当前待处理的心愿单" + +#: engine/core/docs/drf/viewsets.py:504 +msgid "retrieves a current pending wishlist of an authenticated user" +msgstr "检索已通过身份验证用户的当前待处理愿望清单" + +#: engine/core/docs/drf/viewsets.py:514 msgid "add product to wishlist" msgstr "在订单中添加产品" -#: engine/core/docs/drf/viewsets.py:361 +#: engine/core/docs/drf/viewsets.py:515 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 将产品添加到愿望清单中" -#: engine/core/docs/drf/viewsets.py:366 +#: engine/core/docs/drf/viewsets.py:523 msgid "remove product from wishlist" msgstr "从愿望清单中删除产品" -#: engine/core/docs/drf/viewsets.py:367 +#: engine/core/docs/drf/viewsets.py:524 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 从愿望清单中删除产品" -#: engine/core/docs/drf/viewsets.py:372 +#: engine/core/docs/drf/viewsets.py:532 msgid "add many products to wishlist" msgstr "将许多产品添加到愿望清单" -#: engine/core/docs/drf/viewsets.py:373 +#: engine/core/docs/drf/viewsets.py:533 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 将许多产品添加到愿望清单中" -#: engine/core/docs/drf/viewsets.py:378 +#: engine/core/docs/drf/viewsets.py:541 msgid "remove many products from wishlist" msgstr "从订单中删除产品" -#: engine/core/docs/drf/viewsets.py:379 +#: engine/core/docs/drf/viewsets.py:542 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: engine/core/docs/drf/viewsets.py:386 +#: engine/core/docs/drf/viewsets.py:549 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "根据一个或多个属性名/值对进行筛选。 \n" "- 语法**:`attr_name=method-value[;attr2=method2-value2]...`\n" -"- 方法**(如果省略,默认为 `icontains`):iexact`、`exact`、`icontains`、" -"`contains`、`isnull`、`startswith`、`istartswith`、`endswith`、`iendswith`、" -"`regex`、`iregex`、`lt`、`lte`、`gt`、`gte`、`in`。\n" -"- 值键入**:首先尝试使用 JSON(因此可以传递列表/字段),布尔、整数、浮点数使" -"用 `true`/`false`,否则视为字符串。 \n" +"- 方法**(如果省略,默认为 `icontains`):iexact`、`exact`、`icontains`、`contains`、`isnull`、`startswith`、`istartswith`、`endswith`、`iendswith`、`regex`、`iregex`、`lt`、`lte`、`gt`、`gte`、`in`。\n" +"- 值键入**:首先尝试使用 JSON(因此可以传递列表/字段),布尔、整数、浮点数使用 `true`/`false`,否则视为字符串。 \n" "- **Base64**:以 `b64-` 作为前缀,对原始值进行 URL 安全的 base64 编码。 \n" "示例 \n" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\"、\"bluetooth\"]`、\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: engine/core/docs/drf/viewsets.py:402 engine/core/docs/drf/viewsets.py:403 +#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: engine/core/docs/drf/viewsets.py:408 +#: engine/core/docs/drf/viewsets.py:574 msgid "(exact) Product UUID" msgstr "(产品 UUID" -#: engine/core/docs/drf/viewsets.py:415 +#: engine/core/docs/drf/viewsets.py:581 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" "用逗号分隔的要排序的字段列表。前缀为 `-` 表示降序。 \n" "**允许:** uuid、评分、名称、标签、创建、修改、价格、随机" -#: engine/core/docs/drf/viewsets.py:429 engine/core/docs/drf/viewsets.py:430 +#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: engine/core/docs/drf/viewsets.py:435 engine/core/docs/drf/viewsets.py:459 -#: engine/core/docs/drf/viewsets.py:475 engine/core/docs/drf/viewsets.py:491 -#: engine/core/docs/drf/viewsets.py:507 engine/core/docs/drf/viewsets.py:523 +#: engine/core/docs/drf/viewsets.py:604 engine/core/docs/drf/viewsets.py:634 +#: engine/core/docs/drf/viewsets.py:653 engine/core/docs/drf/viewsets.py:672 +#: engine/core/docs/drf/viewsets.py:691 engine/core/docs/drf/viewsets.py:710 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: engine/core/docs/drf/viewsets.py:445 engine/core/docs/drf/viewsets.py:446 +#: engine/core/docs/drf/viewsets.py:617 engine/core/docs/drf/viewsets.py:618 msgid "create a product" msgstr "创建产品" -#: engine/core/docs/drf/viewsets.py:453 engine/core/docs/drf/viewsets.py:454 +#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: engine/core/docs/drf/viewsets.py:469 engine/core/docs/drf/viewsets.py:470 +#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" -#: engine/core/docs/drf/viewsets.py:485 engine/core/docs/drf/viewsets.py:486 +#: engine/core/docs/drf/viewsets.py:666 engine/core/docs/drf/viewsets.py:667 msgid "delete a product" msgstr "删除产品" -#: engine/core/docs/drf/viewsets.py:501 engine/core/docs/drf/viewsets.py:502 +#: engine/core/docs/drf/viewsets.py:685 engine/core/docs/drf/viewsets.py:686 msgid "lists all permitted feedbacks for a product" msgstr "列出产品的所有允许反馈" -#: engine/core/docs/drf/viewsets.py:518 +#: engine/core/docs/drf/viewsets.py:705 msgid "returns a snapshot of the product's SEO meta data" msgstr "返回产品的搜索引擎优化元数据快照" -#: engine/core/docs/drf/viewsets.py:536 +#: engine/core/docs/drf/viewsets.py:726 msgid "list all addresses" msgstr "列出所有地址" -#: engine/core/docs/drf/viewsets.py:543 +#: engine/core/docs/drf/viewsets.py:736 msgid "retrieve a single address" msgstr "检索单个地址" -#: engine/core/docs/drf/viewsets.py:550 +#: engine/core/docs/drf/viewsets.py:746 msgid "create a new address" msgstr "创建新地址" -#: engine/core/docs/drf/viewsets.py:558 +#: engine/core/docs/drf/viewsets.py:757 msgid "delete an address" msgstr "删除地址" -#: engine/core/docs/drf/viewsets.py:565 +#: engine/core/docs/drf/viewsets.py:767 msgid "update an entire address" msgstr "更新整个地址" -#: engine/core/docs/drf/viewsets.py:573 +#: engine/core/docs/drf/viewsets.py:778 msgid "partially update an address" msgstr "部分更新地址" -#: engine/core/docs/drf/viewsets.py:581 +#: engine/core/docs/drf/viewsets.py:789 msgid "autocomplete address suggestions" msgstr "自动完成地址输入" -#: engine/core/docs/drf/viewsets.py:586 +#: engine/core/docs/drf/viewsets.py:794 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "原始数据查询字符串,请附加来自地理 IP 端点的数据" -#: engine/core/docs/drf/viewsets.py:592 +#: engine/core/docs/drf/viewsets.py:800 msgid "limit the results amount, 1 < limit < 10, default: 5" msgstr "限制结果数量,1 < limit < 10,默认:5" -#: engine/core/docs/drf/viewsets.py:605 +#: engine/core/docs/drf/viewsets.py:816 msgid "list all feedbacks (simple view)" msgstr "列出所有反馈(简单视图)" -#: engine/core/docs/drf/viewsets.py:609 +#: engine/core/docs/drf/viewsets.py:823 msgid "retrieve a single feedback (detailed view)" msgstr "检索单个反馈(详细视图)" -#: engine/core/docs/drf/viewsets.py:613 +#: engine/core/docs/drf/viewsets.py:830 msgid "create a feedback" msgstr "创建反馈" -#: engine/core/docs/drf/viewsets.py:617 +#: engine/core/docs/drf/viewsets.py:837 msgid "delete a feedback" msgstr "删除反馈" -#: engine/core/docs/drf/viewsets.py:621 +#: engine/core/docs/drf/viewsets.py:844 msgid "rewrite an existing feedback saving non-editables" msgstr "重写现有的反馈,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:625 +#: engine/core/docs/drf/viewsets.py:851 msgid "rewrite some fields of an existing feedback saving non-editables" msgstr "重写现有反馈的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:632 +#: engine/core/docs/drf/viewsets.py:861 msgid "list all order–product relations (simple view)" msgstr "列出所有订单-产品关系(简单视图)" -#: engine/core/docs/drf/viewsets.py:639 +#: engine/core/docs/drf/viewsets.py:871 msgid "retrieve a single order–product relation (detailed view)" msgstr "检索单一订单-产品关系(详细视图)" -#: engine/core/docs/drf/viewsets.py:646 +#: engine/core/docs/drf/viewsets.py:881 msgid "create a new order–product relation" msgstr "创建新的订单-产品关系" -#: engine/core/docs/drf/viewsets.py:653 +#: engine/core/docs/drf/viewsets.py:891 msgid "replace an existing order–product relation" msgstr "替换现有的订单-产品关系" -#: engine/core/docs/drf/viewsets.py:660 +#: engine/core/docs/drf/viewsets.py:901 msgid "partially update an existing order–product relation" msgstr "部分更新现有的订单-产品关系" -#: engine/core/docs/drf/viewsets.py:667 +#: engine/core/docs/drf/viewsets.py:911 msgid "delete an order–product relation" msgstr "删除订单-产品关系" -#: engine/core/docs/drf/viewsets.py:674 +#: engine/core/docs/drf/viewsets.py:921 msgid "add or remove feedback on an order–product relation" msgstr "添加或删除订单与产品关系中的反馈信息" -#: engine/core/docs/drf/viewsets.py:688 +#: engine/core/docs/drf/viewsets.py:938 msgid "list all brands (simple view)" msgstr "列出所有品牌(简单视图)" -#: engine/core/docs/drf/viewsets.py:692 +#: engine/core/docs/drf/viewsets.py:945 msgid "retrieve a single brand (detailed view)" msgstr "检索单一品牌(详细视图)" -#: engine/core/docs/drf/viewsets.py:697 engine/core/docs/drf/viewsets.py:725 +#: engine/core/docs/drf/viewsets.py:950 engine/core/docs/drf/viewsets.py:993 msgid "Brand UUID or slug" msgstr "品牌 UUID 或标签" -#: engine/core/docs/drf/viewsets.py:704 +#: engine/core/docs/drf/viewsets.py:960 msgid "create a brand" msgstr "创建品牌" -#: engine/core/docs/drf/viewsets.py:708 +#: engine/core/docs/drf/viewsets.py:967 msgid "delete a brand" msgstr "删除品牌" -#: engine/core/docs/drf/viewsets.py:712 +#: engine/core/docs/drf/viewsets.py:974 msgid "rewrite an existing brand saving non-editables" msgstr "重写现有品牌,节省非编辑材料" -#: engine/core/docs/drf/viewsets.py:716 +#: engine/core/docs/drf/viewsets.py:981 msgid "rewrite some fields of an existing brand saving non-editables" msgstr "重写现有品牌的某些字段,保存不可编辑字段" -#: engine/core/docs/drf/viewsets.py:720 -msgid "SEO Meta snapshot for brand" -msgstr "品牌的搜索引擎优化元快照" - -#: engine/core/docs/drf/viewsets.py:735 +#: engine/core/docs/drf/viewsets.py:1006 msgid "list all vendors (simple view)" msgstr "列出所有供应商(简单视图)" -#: engine/core/docs/drf/viewsets.py:739 +#: engine/core/docs/drf/viewsets.py:1013 msgid "retrieve a single vendor (detailed view)" msgstr "检索单个供应商(详细视图)" -#: engine/core/docs/drf/viewsets.py:743 +#: engine/core/docs/drf/viewsets.py:1020 msgid "create a vendor" msgstr "创建供应商" -#: engine/core/docs/drf/viewsets.py:747 +#: engine/core/docs/drf/viewsets.py:1027 msgid "delete a vendor" msgstr "删除供应商" -#: engine/core/docs/drf/viewsets.py:751 +#: engine/core/docs/drf/viewsets.py:1034 msgid "rewrite an existing vendor saving non-editables" msgstr "重写现有供应商,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:755 +#: engine/core/docs/drf/viewsets.py:1041 msgid "rewrite some fields of an existing vendor saving non-editables" msgstr "重写现有供应商的某些字段,保存不可编辑字段" -#: engine/core/docs/drf/viewsets.py:762 +#: engine/core/docs/drf/viewsets.py:1051 msgid "list all product images (simple view)" msgstr "列出所有产品图片(简单视图)" -#: engine/core/docs/drf/viewsets.py:766 +#: engine/core/docs/drf/viewsets.py:1058 msgid "retrieve a single product image (detailed view)" msgstr "检索单个产品图片(详细视图)" -#: engine/core/docs/drf/viewsets.py:770 +#: engine/core/docs/drf/viewsets.py:1065 msgid "create a product image" msgstr "创建产品形象" -#: engine/core/docs/drf/viewsets.py:774 +#: engine/core/docs/drf/viewsets.py:1072 msgid "delete a product image" msgstr "删除产品图像" -#: engine/core/docs/drf/viewsets.py:778 +#: engine/core/docs/drf/viewsets.py:1079 msgid "rewrite an existing product image saving non-editables" msgstr "重写现有产品图像,保存不可编辑图像" -#: engine/core/docs/drf/viewsets.py:782 +#: engine/core/docs/drf/viewsets.py:1086 msgid "rewrite some fields of an existing product image saving non-editables" msgstr "重写现有产品图像的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:789 +#: engine/core/docs/drf/viewsets.py:1096 msgid "list all promo codes (simple view)" msgstr "列出所有促销代码(简单视图)" -#: engine/core/docs/drf/viewsets.py:793 +#: engine/core/docs/drf/viewsets.py:1103 msgid "retrieve a single promo code (detailed view)" msgstr "检索单个促销代码(详细视图)" -#: engine/core/docs/drf/viewsets.py:797 +#: engine/core/docs/drf/viewsets.py:1110 msgid "create a promo code" msgstr "创建促销代码" -#: engine/core/docs/drf/viewsets.py:801 +#: engine/core/docs/drf/viewsets.py:1117 msgid "delete a promo code" msgstr "删除促销代码" -#: engine/core/docs/drf/viewsets.py:805 +#: engine/core/docs/drf/viewsets.py:1124 msgid "rewrite an existing promo code saving non-editables" msgstr "重写现有促销代码,保存不可编辑的代码" -#: engine/core/docs/drf/viewsets.py:809 +#: engine/core/docs/drf/viewsets.py:1131 msgid "rewrite some fields of an existing promo code saving non-editables" msgstr "重写现有促销代码的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:816 +#: engine/core/docs/drf/viewsets.py:1141 msgid "list all promotions (simple view)" msgstr "列出所有促销活动(简单视图)" -#: engine/core/docs/drf/viewsets.py:820 +#: engine/core/docs/drf/viewsets.py:1148 msgid "retrieve a single promotion (detailed view)" msgstr "检索单个促销活动(详细视图)" -#: engine/core/docs/drf/viewsets.py:824 +#: engine/core/docs/drf/viewsets.py:1155 msgid "create a promotion" msgstr "创建促销活动" -#: engine/core/docs/drf/viewsets.py:828 +#: engine/core/docs/drf/viewsets.py:1162 msgid "delete a promotion" msgstr "删除促销" -#: engine/core/docs/drf/viewsets.py:832 +#: engine/core/docs/drf/viewsets.py:1169 msgid "rewrite an existing promotion saving non-editables" msgstr "重写现有促销活动,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:836 +#: engine/core/docs/drf/viewsets.py:1176 msgid "rewrite some fields of an existing promotion saving non-editables" msgstr "重写现有促销活动的某些字段,保存不可编辑字段" -#: engine/core/docs/drf/viewsets.py:843 +#: engine/core/docs/drf/viewsets.py:1186 msgid "list all stocks (simple view)" msgstr "列出所有股票(简单视图)" -#: engine/core/docs/drf/viewsets.py:847 +#: engine/core/docs/drf/viewsets.py:1193 msgid "retrieve a single stock (detailed view)" msgstr "检索单个股票(详细视图)" -#: engine/core/docs/drf/viewsets.py:851 +#: engine/core/docs/drf/viewsets.py:1200 msgid "create a stock record" msgstr "创建库存记录" -#: engine/core/docs/drf/viewsets.py:855 +#: engine/core/docs/drf/viewsets.py:1207 msgid "delete a stock record" msgstr "删除库存记录" -#: engine/core/docs/drf/viewsets.py:859 +#: engine/core/docs/drf/viewsets.py:1214 msgid "rewrite an existing stock record saving non-editables" msgstr "重写现有库存记录,保存不可编辑数据" -#: engine/core/docs/drf/viewsets.py:863 +#: engine/core/docs/drf/viewsets.py:1221 msgid "rewrite some fields of an existing stock record saving non-editables" msgstr "重写现有库存记录的某些字段,保存不可编辑的内容" -#: engine/core/docs/drf/viewsets.py:870 +#: engine/core/docs/drf/viewsets.py:1231 msgid "list all product tags (simple view)" msgstr "列出所有产品标签(简单视图)" -#: engine/core/docs/drf/viewsets.py:874 +#: engine/core/docs/drf/viewsets.py:1238 msgid "retrieve a single product tag (detailed view)" msgstr "检索单个产品标签(详细视图)" -#: engine/core/docs/drf/viewsets.py:878 +#: engine/core/docs/drf/viewsets.py:1245 msgid "create a product tag" msgstr "创建产品标签" -#: engine/core/docs/drf/viewsets.py:882 +#: engine/core/docs/drf/viewsets.py:1252 msgid "delete a product tag" msgstr "删除产品标签" -#: engine/core/docs/drf/viewsets.py:886 +#: engine/core/docs/drf/viewsets.py:1259 msgid "rewrite an existing product tag saving non-editables" msgstr "重写现有产品标签,保存不可编辑内容" -#: engine/core/docs/drf/viewsets.py:890 +#: engine/core/docs/drf/viewsets.py:1266 msgid "rewrite some fields of an existing product tag saving non-editables" msgstr "重写现有产品标签的某些字段,保存不可编辑字段" @@ -1034,7 +1056,7 @@ msgstr "缓存数据" msgid "camelized JSON data from the requested URL" msgstr "从请求的 URL 中获取驼峰化 JSON 数据" -#: engine/core/graphene/mutations.py:68 engine/core/views.py:231 +#: engine/core/graphene/mutations.py:68 engine/core/views.py:239 msgid "only URLs starting with http(s):// are allowed" msgstr "只允许使用以 http(s):// 开头的 URL" @@ -1118,8 +1140,8 @@ msgstr "购买订单" #: engine/core/graphene/mutations.py:517 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" msgstr "请以字符串形式发送属性,格式如 attr1=value1,attr2=value2" #: engine/core/graphene/mutations.py:550 @@ -1194,7 +1216,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "哪些属性和值可用于筛选该类别。" #: engine/core/graphene/object_types.py:204 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "该类别产品的最低和最高价格(如有)。" #: engine/core/graphene/object_types.py:206 @@ -1461,8 +1484,7 @@ msgid "" "parent group, forming a hierarchical structure. This can be useful for " "categorizing and managing attributes more effectively in acomplex system." msgstr "" -"代表一组属性,可以是分层的。该类用于管理和组织属性组。一个属性组可以有一个父" -"组,从而形成一个层次结构。这有助于在复杂的系统中更有效地分类和管理属性。" +"代表一组属性,可以是分层的。该类用于管理和组织属性组。一个属性组可以有一个父组,从而形成一个层次结构。这有助于在复杂的系统中更有效地分类和管理属性。" #: engine/core/models.py:91 msgid "parent of this group" @@ -1490,10 +1512,7 @@ msgid "" "also maintains additional metadata and constraints, making it suitable for " "use in systems that interact with third-party vendors." msgstr "" -"代表一个供应商实体,能够存储有关外部供应商及其交互要求的信息。供应商类用于定" -"义和管理与外部供应商相关的信息。它存储供应商的名称、通信所需的身份验证详细信" -"息,以及从供应商处检索产品时所应用的百分比标记。该模型还维护附加的元数据和约" -"束,使其适用于与第三方供应商交互的系统。" +"代表一个供应商实体,能够存储有关外部供应商及其交互要求的信息。供应商类用于定义和管理与外部供应商相关的信息。它存储供应商的名称、通信所需的身份验证详细信息,以及从供应商处检索产品时所应用的百分比标记。该模型还维护附加的元数据和约束,使其适用于与第三方供应商交互的系统。" #: engine/core/models.py:124 msgid "stores credentials and endpoints required for vendor communication" @@ -1543,9 +1562,8 @@ msgid "" "display name. It supports operations exported through mixins and provides " "metadata customization for administrative purposes." msgstr "" -"代表用于分类或识别产品的产品标签。ProductTag 类旨在通过内部标签标识符和用户友" -"好显示名称的组合,对产品进行唯一标识和分类。它支持通过混合功能导出的操作,并" -"为管理目的提供元数据定制功能。" +"代表用于分类或识别产品的产品标签。ProductTag " +"类旨在通过内部标签标识符和用户友好显示名称的组合,对产品进行唯一标识和分类。它支持通过混合功能导出的操作,并为管理目的提供元数据定制功能。" #: engine/core/models.py:209 engine/core/models.py:240 msgid "internal tag identifier for the product tag" @@ -1572,9 +1590,7 @@ msgid "" "Represents a category tag used for products. This class models a category " "tag that can be used to associate and classify products. It includes " "attributes for an internal tag identifier and a user-friendly display name." -msgstr "" -"代表用于产品的类别标签。该类是类别标签的模型,可用于关联和分类产品。它包括内" -"部标签标识符和用户友好显示名称的属性。" +msgstr "代表用于产品的类别标签。该类是类别标签的模型,可用于关联和分类产品。它包括内部标签标识符和用户友好显示名称的属性。" #: engine/core/models.py:254 msgid "category tag" @@ -1596,10 +1612,7 @@ msgid "" "hierarchy of categories, as well as assign attributes like images, tags, or " "priority." msgstr "" -"代表类别实体,用于在分层结构中组织和分组相关项目。类别可与其他类别建立层次关" -"系,支持父子关系。该类包括元数据和可视化表示字段,是类别相关功能的基础。该类" -"通常用于定义和管理应用程序中的产品类别或其他类似分组,允许用户或管理员指定类" -"别的名称、描述和层次结构,以及分配图像、标记或优先级等属性。" +"代表类别实体,用于在分层结构中组织和分组相关项目。类别可与其他类别建立层次关系,支持父子关系。该类包括元数据和可视化表示字段,是类别相关功能的基础。该类通常用于定义和管理应用程序中的产品类别或其他类似分组,允许用户或管理员指定类别的名称、描述和层次结构,以及分配图像、标记或优先级等属性。" #: engine/core/models.py:274 msgid "upload an image representing this category" @@ -1650,11 +1663,10 @@ msgid "" "Represents a Brand object in the system. This class handles information and " "attributes related to a brand, including its name, logos, description, " "associated categories, a unique slug, and priority order. It allows for the " -"organization and representation of brand-related data within the application." +"organization and representation of brand-related data within the " +"application." msgstr "" -"代表系统中的品牌对象。该类用于处理与品牌相关的信息和属性,包括名称、徽标、描" -"述、相关类别、唯一标签和优先顺序。它允许在应用程序中组织和表示与品牌相关的数" -"据。" +"代表系统中的品牌对象。该类用于处理与品牌相关的信息和属性,包括名称、徽标、描述、相关类别、唯一标签和优先顺序。它允许在应用程序中组织和表示与品牌相关的数据。" #: engine/core/models.py:448 msgid "name of this brand" @@ -1698,16 +1710,15 @@ msgstr "类别" #: engine/core/models.py:508 msgid "" -"Represents the stock of a product managed in the system. This class provides " -"details about the relationship between vendors, products, and their stock " +"Represents the stock of a product managed in the system. This class provides" +" details about the relationship between vendors, products, and their stock " "information, as well as inventory-related properties like price, purchase " "price, quantity, SKU, and digital assets. It is part of the inventory " "management system to allow tracking and evaluation of products available " "from various vendors." msgstr "" -"代表系统中管理的产品库存。该类提供有关供应商、产品及其库存信息之间关系的详细" -"信息,以及与库存相关的属性,如价格、购买价格、数量、SKU 和数字资产。它是库存" -"管理系统的一部分,用于跟踪和评估不同供应商提供的产品。" +"代表系统中管理的产品库存。该类提供有关供应商、产品及其库存信息之间关系的详细信息,以及与库存相关的属性,如价格、购买价格、数量、SKU " +"和数字资产。它是库存管理系统的一部分,用于跟踪和评估不同供应商提供的产品。" #: engine/core/models.py:520 msgid "the vendor supplying this product stock" @@ -1785,11 +1796,8 @@ msgid "" "properties to improve performance. It is used to define and manipulate " "product data and its associated information within an application." msgstr "" -"代表产品的属性,如类别、品牌、标签、数字状态、名称、描述、零件编号和标签。提" -"供相关的实用属性,以检索评级、反馈计数、价格、数量和订单总数。设计用于处理电" -"子商务或库存管理的系统。该类可与相关模型(如类别、品牌和 ProductTag)交互,并" -"对频繁访问的属性进行缓存管理,以提高性能。它用于在应用程序中定义和操作产品数" -"据及其相关信息。" +"代表产品的属性,如类别、品牌、标签、数字状态、名称、描述、零件编号和标签。提供相关的实用属性,以检索评级、反馈计数、价格、数量和订单总数。设计用于处理电子商务或库存管理的系统。该类可与相关模型(如类别、品牌和" +" ProductTag)交互,并对频繁访问的属性进行缓存管理,以提高性能。它用于在应用程序中定义和操作产品数据及其相关信息。" #: engine/core/models.py:585 msgid "category this product belongs to" @@ -1844,13 +1852,11 @@ msgid "" "Represents an attribute in the system. This class is used to define and " "manage attributes, which are customizable pieces of data that can be " "associated with other entities. Attributes have associated categories, " -"groups, value types, and names. The model supports multiple types of values, " -"including string, integer, float, boolean, array, and object. This allows " +"groups, value types, and names. The model supports multiple types of values," +" including string, integer, float, boolean, array, and object. This allows " "for dynamic and flexible data structuring." msgstr "" -"代表系统中的一个属性。该类用于定义和管理属性,属性是可与其他实体关联的自定义" -"数据块。属性有相关的类别、组、值类型和名称。该模型支持多种类型的值,包括字符" -"串、整数、浮点数、布尔值、数组和对象。这样就可以实现动态、灵活的数据结构。" +"代表系统中的一个属性。该类用于定义和管理属性,属性是可与其他实体关联的自定义数据块。属性有相关的类别、组、值类型和名称。该模型支持多种类型的值,包括字符串、整数、浮点数、布尔值、数组和对象。这样就可以实现动态、灵活的数据结构。" #: engine/core/models.py:733 msgid "group of this attribute" @@ -1911,12 +1917,10 @@ msgstr "属性" #: engine/core/models.py:777 msgid "" -"Represents a specific value for an attribute that is linked to a product. It " -"links the 'attribute' to a unique 'value', allowing better organization and " -"dynamic representation of product characteristics." -msgstr "" -"代表与产品相关联的属性的特定值。它将 \"属性 \"与唯一的 \"值 \"联系起来,从而" -"更好地组织和动态呈现产品特征。" +"Represents a specific value for an attribute that is linked to a product. It" +" links the 'attribute' to a unique 'value', allowing better organization and" +" dynamic representation of product characteristics." +msgstr "代表与产品相关联的属性的特定值。它将 \"属性 \"与唯一的 \"值 \"联系起来,从而更好地组织和动态呈现产品特征。" #: engine/core/models.py:788 msgid "attribute of this value" @@ -1933,14 +1937,12 @@ msgstr "该属性的具体值" #: engine/core/models.py:815 msgid "" "Represents a product image associated with a product in the system. This " -"class is designed to manage images for products, including functionality for " -"uploading image files, associating them with specific products, and " +"class is designed to manage images for products, including functionality for" +" uploading image files, associating them with specific products, and " "determining their display order. It also includes an accessibility feature " "with alternative text for the images." msgstr "" -"代表与系统中产品相关联的产品图片。该类用于管理产品图片,包括上传图片文件、将" -"图片与特定产品关联以及确定图片显示顺序等功能。它还包括一个为图像提供替代文本" -"的可访问性功能。" +"代表与系统中产品相关联的产品图片。该类用于管理产品图片,包括上传图片文件、将图片与特定产品关联以及确定图片显示顺序等功能。它还包括一个为图像提供替代文本的可访问性功能。" #: engine/core/models.py:826 msgid "provide alternative text for the image for accessibility" @@ -1980,12 +1982,10 @@ msgid "" "is used to define and manage promotional campaigns that offer a percentage-" "based discount for products. The class includes attributes for setting the " "discount rate, providing details about the promotion, and linking it to the " -"applicable products. It integrates with the product catalog to determine the " -"affected items in the campaign." +"applicable products. It integrates with the product catalog to determine the" +" affected items in the campaign." msgstr "" -"代表有折扣的产品促销活动。该类用于定义和管理为产品提供百分比折扣的促销活动。" -"该类包括用于设置折扣率、提供促销详情以及将其链接到适用产品的属性。它与产品目" -"录集成,以确定促销活动中受影响的产品。" +"代表有折扣的产品促销活动。该类用于定义和管理为产品提供百分比折扣的促销活动。该类包括用于设置折扣率、提供促销详情以及将其链接到适用产品的属性。它与产品目录集成,以确定促销活动中受影响的产品。" #: engine/core/models.py:880 msgid "percentage discount for the selected products" @@ -2025,9 +2025,7 @@ msgid "" "class provides functionality to manage a collection of products, supporting " "operations such as adding and removing products, as well as supporting " "operations for adding and removing multiple products at once." -msgstr "" -"代表用户用于存储和管理所需产品的愿望清单。该类提供管理产品集合的功能,支持添" -"加和删除产品等操作,还支持同时添加和删除多个产品的操作。" +msgstr "代表用户用于存储和管理所需产品的愿望清单。该类提供管理产品集合的功能,支持添加和删除产品等操作,还支持同时添加和删除多个产品的操作。" #: engine/core/models.py:926 msgid "products that the user has marked as wanted" @@ -2051,12 +2049,10 @@ msgid "" "store information about documentaries related to specific products, " "including file uploads and their metadata. It contains methods and " "properties to handle the file type and storage path for the documentary " -"files. It extends functionality from specific mixins and provides additional " -"custom features." +"files. It extends functionality from specific mixins and provides additional" +" custom features." msgstr "" -"代表与产品相关的文档记录。该类用于存储与特定产品相关的文档信息,包括文件上传" -"及其元数据。它包含处理文件类型和文档文件存储路径的方法和属性。它扩展了特定混" -"合类的功能,并提供了额外的自定义功能。" +"代表与产品相关的文档记录。该类用于存储与特定产品相关的文档信息,包括文件上传及其元数据。它包含处理文件类型和文档文件存储路径的方法和属性。它扩展了特定混合类的功能,并提供了额外的自定义功能。" #: engine/core/models.py:998 msgid "documentary" @@ -2072,20 +2068,17 @@ msgstr "未解决" #: engine/core/models.py:1014 msgid "" -"Represents an address entity that includes location details and associations " -"with a user. Provides functionality for geographic and address data storage, " -"as well as integration with geocoding services. This class is designed to " -"store detailed address information including components like street, city, " -"region, country, and geolocation (longitude and latitude). It supports " -"integration with geocoding APIs, enabling the storage of raw API responses " -"for further processing or inspection. The class also allows associating an " -"address with a user, facilitating personalized data handling." +"Represents an address entity that includes location details and associations" +" with a user. Provides functionality for geographic and address data " +"storage, as well as integration with geocoding services. This class is " +"designed to store detailed address information including components like " +"street, city, region, country, and geolocation (longitude and latitude). It " +"supports integration with geocoding APIs, enabling the storage of raw API " +"responses for further processing or inspection. The class also allows " +"associating an address with a user, facilitating personalized data handling." msgstr "" -"代表一个地址实体,其中包括位置详情以及与用户的关联。提供地理和地址数据存储功" -"能,以及与地理编码服务集成的功能。该类旨在存储详细的地址信息,包括街道、城" -"市、地区、国家和地理位置(经度和纬度)等组件。它支持与地理编码 API 集成,可存" -"储原始 API 响应,以便进一步处理或检查。该类还可以将地址与用户关联起来,方便个" -"性化数据处理。" +"代表一个地址实体,其中包括位置详情以及与用户的关联。提供地理和地址数据存储功能,以及与地理编码服务集成的功能。该类旨在存储详细的地址信息,包括街道、城市、地区、国家和地理位置(经度和纬度)等组件。它支持与地理编码" +" API 集成,可存储原始 API 响应,以便进一步处理或检查。该类还可以将地址与用户关联起来,方便个性化数据处理。" #: engine/core/models.py:1029 msgid "address line for the customer" @@ -2148,10 +2141,8 @@ msgid "" "any), and status of its usage. It includes functionality to validate and " "apply the promo code to an order while ensuring constraints are met." msgstr "" -"代表可用于折扣的促销代码,管理其有效期、折扣类型和应用。PromoCode 类存储促销" -"代码的详细信息,包括其唯一标识符、折扣属性(金额或百分比)、有效期、关联用户" -"(如有)及其使用状态。该类包含验证促销代码并将其应用于订单的功能,同时确保符" -"合约束条件。" +"代表可用于折扣的促销代码,管理其有效期、折扣类型和应用。PromoCode " +"类存储促销代码的详细信息,包括其唯一标识符、折扣属性(金额或百分比)、有效期、关联用户(如有)及其使用状态。该类包含验证促销代码并将其应用于订单的功能,同时确保符合约束条件。" #: engine/core/models.py:1087 msgid "unique code used by a user to redeem a discount" @@ -2221,8 +2212,7 @@ msgstr "促销代码" msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" +msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" #: engine/core/models.py:1171 msgid "promocode already used" @@ -2237,15 +2227,12 @@ msgstr "促销代码 {self.uuid} 的折扣类型无效!" msgid "" "Represents an order placed by a user. This class models an order within the " "application, including its various attributes such as billing and shipping " -"information, status, associated user, notifications, and related operations. " -"Orders can have associated products, promotions can be applied, addresses " +"information, status, associated user, notifications, and related operations." +" Orders can have associated products, promotions can be applied, addresses " "set, and shipping or billing details updated. Equally, functionality " "supports managing the products in the order lifecycle." msgstr "" -"代表用户下达的订单。该类在应用程序中模拟订单,包括订单的各种属性,如账单和发" -"货信息、状态、关联用户、通知和相关操作。订单可以有关联的产品,可以应用促销活" -"动,设置地址,更新发货或账单详情。同样,该功能还支持在订单生命周期中管理产" -"品。" +"代表用户下达的订单。该类在应用程序中模拟订单,包括订单的各种属性,如账单和发货信息、状态、关联用户、通知和相关操作。订单可以有关联的产品,可以应用促销活动,设置地址,更新发货或账单详情。同样,该功能还支持在订单生命周期中管理产品。" #: engine/core/models.py:1213 msgid "the billing address used for this order" @@ -2393,9 +2380,7 @@ msgid "" "product in the order, and a user-assigned rating. The class uses database " "fields to effectively model and manage feedback data." msgstr "" -"管理产品的用户反馈。该类用于捕获和存储用户对其购买的特定产品的反馈。它包含用" -"于存储用户评论的属性、订单中相关产品的引用以及用户指定的评分。该类使用数据库" -"字段对反馈数据进行有效建模和管理。" +"管理产品的用户反馈。该类用于捕获和存储用户对其购买的特定产品的反馈。它包含用于存储用户评论的属性、订单中相关产品的引用以及用户指定的评分。该类使用数据库字段对反馈数据进行有效建模和管理。" #: engine/core/models.py:1711 msgid "user-provided comments about their experience with the product" @@ -2406,7 +2391,8 @@ msgid "feedback comments" msgstr "反馈意见" #: engine/core/models.py:1719 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "引用该反馈意见涉及的订单中的具体产品" #: engine/core/models.py:1720 @@ -2433,10 +2419,9 @@ msgid "" "download URL for digital products. The model integrates with the Order and " "Product models and stores a reference to them." msgstr "" -"代表与订单及其属性相关联的产品。OrderProduct 模型维护订单中产品的相关信息,包" -"括购买价格、数量、产品属性和状态等详细信息。它为用户和管理员管理通知,并处理" -"返回产品余额或添加反馈等操作。该模型还提供支持业务逻辑的方法和属性,如计算总" -"价或为数字产品生成下载 URL。该模型与订单和产品模型集成,并存储对它们的引用。" +"代表与订单及其属性相关联的产品。OrderProduct " +"模型维护订单中产品的相关信息,包括购买价格、数量、产品属性和状态等详细信息。它为用户和管理员管理通知,并处理返回产品余额或添加反馈等操作。该模型还提供支持业务逻辑的方法和属性,如计算总价或为数字产品生成下载" +" URL。该模型与订单和产品模型集成,并存储对它们的引用。" #: engine/core/models.py:1757 msgid "the price paid by the customer for this product at purchase time" @@ -2544,13 +2529,13 @@ msgid "" "Represents the downloading functionality for digital assets associated with " "orders. The DigitalAssetDownload class provides the ability to manage and " "access downloads related to order products. It maintains information about " -"the associated order product, the number of downloads, and whether the asset " -"is publicly visible. It includes a method to generate a URL for downloading " -"the asset when the associated order is in a completed status." +"the associated order product, the number of downloads, and whether the asset" +" is publicly visible. It includes a method to generate a URL for downloading" +" the asset when the associated order is in a completed status." msgstr "" -"代表与订单相关的数字资产的下载功能。DigitalAssetDownload 类提供了管理和访问与" -"订单产品相关的下载的功能。该类维护相关订单产品的信息、下载次数以及资产是否公" -"开可见。当相关订单处于完成状态时,该类包含一个生成用于下载资产的 URL 的方法。" +"代表与订单相关的数字资产的下载功能。DigitalAssetDownload " +"类提供了管理和访问与订单产品相关的下载的功能。该类维护相关订单产品的信息、下载次数以及资产是否公开可见。当相关订单处于完成状态时,该类包含一个生成用于下载资产的" +" URL 的方法。" #: engine/core/models.py:1961 msgid "download" @@ -2606,12 +2591,9 @@ msgstr "你好%(order.user.first_name)s_、" #, python-format msgid "" "thank you for your order #%(order.pk)s! we are pleased to inform you that\n" -" we have taken your order into work. below are " -"the details of your\n" +" we have taken your order into work. below are the details of your\n" " order:" -msgstr "" -"感谢您的订单 #%(order.pk)s!我们很高兴地通知您,我们已将您的订单付诸实施。以" -"下是您的订单详情:" +msgstr "感谢您的订单 #%(order.pk)s!我们很高兴地通知您,我们已将您的订单付诸实施。以下是您的订单详情:" #: engine/core/templates/digital_order_created_email.html:112 #: engine/core/templates/digital_order_delivered_email.html:110 @@ -2634,8 +2616,7 @@ msgstr "总价" msgid "" "if you have any questions, feel free to contact our support at\n" " %(config.EMAIL_HOST_USER)s." -msgstr "" -"如果您有任何问题,请随时通过 %(config.EMAIL_HOST_USER)s 联系我们的支持人员。" +msgstr "如果您有任何问题,请随时通过 %(config.EMAIL_HOST_USER)s 联系我们的支持人员。" #: engine/core/templates/digital_order_created_email.html:133 #, python-format @@ -2716,8 +2697,7 @@ msgstr "" #: engine/core/templates/shipped_order_created_email.html:101 #: engine/core/templates/shipped_order_delivered_email.html:101 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below " -"are\n" +"thank you for your order! we are pleased to confirm your purchase. below are\n" " the details of your order:" msgstr "感谢您的订购!我们很高兴确认您的购买。以下是您的订单详情:" @@ -2787,107 +2767,102 @@ msgstr "必须配置 NOMINATIM_URL 参数!" msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "图像尺寸不应超过 w{max_width} x h{max_height} 像素!" -#: engine/core/views.py:71 +#: engine/core/views.py:73 msgid "" "Handles the request for the sitemap index and returns an XML response. It " "ensures the response includes the appropriate content type header for XML." -msgstr "" -"处理网站地图索引请求并返回 XML 响应。它确保响应包含适当的 XML 内容类型标头。" +msgstr "处理网站地图索引请求并返回 XML 响应。它确保响应包含适当的 XML 内容类型标头。" -#: engine/core/views.py:86 +#: engine/core/views.py:88 msgid "" "Handles the detailed view response for a sitemap. This function processes " "the request, fetches the appropriate sitemap detail response, and sets the " "Content-Type header for XML." -msgstr "" -"处理网站地图的详细视图响应。该函数处理请求,获取相应的网站地图详细响应,并将 " -"Content-Type 标头设置为 XML。" +msgstr "处理网站地图的详细视图响应。该函数处理请求,获取相应的网站地图详细响应,并将 Content-Type 标头设置为 XML。" -#: engine/core/views.py:115 +#: engine/core/views.py:123 msgid "" "Returns a list of supported languages and their corresponding information." msgstr "返回支持语言及其相应信息的列表。" -#: engine/core/views.py:147 +#: engine/core/views.py:155 msgid "Returns the parameters of the website as a JSON object." msgstr "以 JSON 对象形式返回网站参数。" -#: engine/core/views.py:166 +#: engine/core/views.py:174 msgid "" "Handles cache operations such as reading and setting cache data with a " "specified key and timeout." msgstr "处理缓存操作,如使用指定的键和超时读取和设置缓存数据。" -#: engine/core/views.py:193 +#: engine/core/views.py:201 msgid "Handles `contact us` form submissions." msgstr "处理 \"联系我们 \"表单提交。" -#: engine/core/views.py:214 +#: engine/core/views.py:222 msgid "" "Handles requests for processing and validating URLs from incoming POST " "requests." msgstr "处理来自传入 POST 请求的处理和验证 URL 的请求。" -#: engine/core/views.py:254 +#: engine/core/views.py:262 msgid "Handles global search queries." msgstr "处理全局搜索查询。" -#: engine/core/views.py:269 +#: engine/core/views.py:277 msgid "Handles the logic of buying as a business without registration." msgstr "处理未注册企业的购买逻辑。" -#: engine/core/views.py:305 +#: engine/core/views.py:314 msgid "" "Handles the downloading of a digital asset associated with an order.\n" -"This function attempts to serve the digital asset file located in the " -"storage directory of the project. If the file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "处理与订单相关的数字资产的下载。\n" -"此函数会尝试为位于项目存储目录中的数字资产文件提供服务。如果未找到文件,则会" -"出现 HTTP 404 错误,表示资源不可用。" +"此函数会尝试为位于项目存储目录中的数字资产文件提供服务。如果未找到文件,则会出现 HTTP 404 错误,表示资源不可用。" -#: engine/core/views.py:315 +#: engine/core/views.py:325 msgid "order_product_uuid is required" msgstr "order_product_uuid 为必填项" -#: engine/core/views.py:321 +#: engine/core/views.py:332 +msgid "order product does not exist" +msgstr "订单产品不存在" + +#: engine/core/views.py:335 msgid "you can only download the digital asset once" msgstr "您只能下载一次数字资产" -#: engine/core/views.py:324 +#: engine/core/views.py:338 msgid "the order must be paid before downloading the digital asset" msgstr "在下载数字资产前必须支付订单费用" -#: engine/core/views.py:330 +#: engine/core/views.py:344 msgid "the order product does not have a product" msgstr "订单产品没有产品" -#: engine/core/views.py:368 +#: engine/core/views.py:381 msgid "favicon not found" msgstr "未找到 favicon" -#: engine/core/views.py:373 +#: engine/core/views.py:386 msgid "" "Handles requests for the favicon of a website.\n" -"This function attempts to serve the favicon file located in the static " -"directory of the project. If the favicon file is not found, an HTTP 404 " -"error is raised to indicate the resource is unavailable." +"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable." msgstr "" "处理网站的 favicon 请求。\n" -"该函数会尝试为位于项目静态目录中的 favicon 文件提供服务。如果找不到 favicon " -"文件,就会出现 HTTP 404 错误,表示资源不可用。" - -#: engine/core/views.py:385 -msgid "" -"Redirects the request to the admin index page. The function handles incoming " -"HTTP requests and redirects them to the Django admin interface index page. " -"It uses Django's `redirect` function for handling the HTTP redirection." -msgstr "" -"将请求重定向到管理索引页面。该函数处理传入的 HTTP 请求并将其重定向到 Django " -"管理界面索引页面。它使用 Django 的 `redirect` 函数来处理 HTTP 重定向。" +"该函数会尝试为位于项目静态目录中的 favicon 文件提供服务。如果找不到 favicon 文件,就会出现 HTTP 404 错误,表示资源不可用。" #: engine/core/views.py:398 +msgid "" +"Redirects the request to the admin index page. The function handles incoming" +" HTTP requests and redirects them to the Django admin interface index page. " +"It uses Django's `redirect` function for handling the HTTP redirection." +msgstr "" +"将请求重定向到管理索引页面。该函数处理传入的 HTTP 请求并将其重定向到 Django 管理界面索引页面。它使用 Django 的 " +"`redirect` 函数来处理 HTTP 重定向。" + +#: engine/core/views.py:411 msgid "Returns current version of the eVibes. " msgstr "返回 eVibes 的当前版本。" @@ -2899,20 +2874,19 @@ msgid "" "serializer classes based on the current action, customizable permissions, " "and rendering formats." msgstr "" -"定义用于管理 Evibes 相关操作的视图集。EvibesViewSet 类继承于 ModelViewSet,提" -"供了处理 Evibes 实体上的操作和运行的功能。它包括支持基于当前操作的动态序列化" -"类、可定制的权限和渲染格式。" +"定义用于管理 Evibes 相关操作的视图集。EvibesViewSet 类继承于 ModelViewSet,提供了处理 Evibes " +"实体上的操作和运行的功能。它包括支持基于当前操作的动态序列化类、可定制的权限和渲染格式。" #: engine/core/viewsets.py:157 msgid "" -"Represents a viewset for managing AttributeGroup objects. Handles operations " -"related to AttributeGroup, including filtering, serialization, and retrieval " -"of data. This class is part of the application's API layer and provides a " -"standardized way to process requests and responses for AttributeGroup data." +"Represents a viewset for managing AttributeGroup objects. Handles operations" +" related to AttributeGroup, including filtering, serialization, and " +"retrieval of data. This class is part of the application's API layer and " +"provides a standardized way to process requests and responses for " +"AttributeGroup data." msgstr "" -"代表用于管理属性组对象的视图集。处理与 AttributeGroup 相关的操作,包括过滤、" -"序列化和检索数据。该类是应用程序 API 层的一部分,为处理 AttributeGroup 数据的" -"请求和响应提供了标准化方法。" +"代表用于管理属性组对象的视图集。处理与 AttributeGroup 相关的操作,包括过滤、序列化和检索数据。该类是应用程序 API 层的一部分,为处理" +" AttributeGroup 数据的请求和响应提供了标准化方法。" #: engine/core/viewsets.py:176 msgid "" @@ -2923,21 +2897,19 @@ msgid "" "specific fields or retrieving detailed versus simplified information " "depending on the request." msgstr "" -"在应用程序中处理与属性对象相关的操作。提供一组 API 端点,用于与属性数据交互。" -"该类管理属性对象的查询、过滤和序列化,允许对返回的数据进行动态控制,例如根据" -"请求按特定字段进行过滤或检索详细信息与简化信息。" +"在应用程序中处理与属性对象相关的操作。提供一组 API " +"端点,用于与属性数据交互。该类管理属性对象的查询、过滤和序列化,允许对返回的数据进行动态控制,例如根据请求按特定字段进行过滤或检索详细信息与简化信息。" #: engine/core/viewsets.py:195 msgid "" "A viewset for managing AttributeValue objects. This viewset provides " "functionality for listing, retrieving, creating, updating, and deleting " "AttributeValue objects. It integrates with Django REST Framework's viewset " -"mechanisms and uses appropriate serializers for different actions. Filtering " -"capabilities are provided through the DjangoFilterBackend." +"mechanisms and uses appropriate serializers for different actions. Filtering" +" capabilities are provided through the DjangoFilterBackend." msgstr "" -"用于管理 AttributeValue 对象的视图集。该视图集提供了用于列出、检索、创建、更" -"新和删除 AttributeValue 对象的功能。它与 Django REST 框架的视图集机制集成,并" -"为不同的操作使用适当的序列化器。过滤功能通过 DjangoFilterBackend 提供。" +"用于管理 AttributeValue 对象的视图集。该视图集提供了用于列出、检索、创建、更新和删除 AttributeValue 对象的功能。它与 " +"Django REST 框架的视图集机制集成,并为不同的操作使用适当的序列化器。过滤功能通过 DjangoFilterBackend 提供。" #: engine/core/viewsets.py:214 msgid "" @@ -2947,9 +2919,8 @@ msgid "" "The viewset also enforces permissions to ensure that only authorized users " "can access specific data." msgstr "" -"管理类别相关操作的视图。CategoryViewSet 类负责处理系统中与类别模型相关的操" -"作。它支持类别数据的检索、过滤和序列化。视图集还强制执行权限,确保只有授权用" -"户才能访问特定数据。" +"管理类别相关操作的视图。CategoryViewSet " +"类负责处理系统中与类别模型相关的操作。它支持类别数据的检索、过滤和序列化。视图集还强制执行权限,确保只有授权用户才能访问特定数据。" #: engine/core/viewsets.py:326 msgid "" @@ -2958,8 +2929,8 @@ msgid "" "uses Django's ViewSet framework to simplify the implementation of API " "endpoints for Brand objects." msgstr "" -"代表用于管理品牌实例的视图集。该类提供了查询、过滤和序列化品牌对象的功能。它" -"使用 Django 的 ViewSet 框架来简化品牌对象 API 端点的实现。" +"代表用于管理品牌实例的视图集。该类提供了查询、过滤和序列化品牌对象的功能。它使用 Django 的 ViewSet 框架来简化品牌对象 API " +"端点的实现。" #: engine/core/viewsets.py:438 msgid "" @@ -2971,10 +2942,9 @@ msgid "" "product details, applying permissions, and accessing related feedback of a " "product." msgstr "" -"管理与系统中的 \"产品 \"模型相关的操作。该类为管理产品提供了一个视图集,包括" -"产品的筛选、序列化和对特定实例的操作。该类从 `EvibesViewSet` 扩展而来,使用通" -"用功能,并与 Django REST 框架集成,用于 RESTful API 操作。包括检索产品详细信" -"息、应用权限和访问产品相关反馈的方法。" +"管理与系统中的 \"产品 \"模型相关的操作。该类为管理产品提供了一个视图集,包括产品的筛选、序列化和对特定实例的操作。该类从 " +"`EvibesViewSet` 扩展而来,使用通用功能,并与 Django REST 框架集成,用于 RESTful API " +"操作。包括检索产品详细信息、应用权限和访问产品相关反馈的方法。" #: engine/core/viewsets.py:568 msgid "" @@ -2984,50 +2954,46 @@ msgid "" "actions. The purpose of this class is to provide streamlined access to " "Vendor-related resources through the Django REST framework." msgstr "" -"代表用于管理供应商对象的视图集。该视图集允许获取、过滤和序列化 Vendor 数据。" -"它定义了用于处理不同操作的查询集、过滤器配置和序列化器类。该类的目的是通过 " -"Django REST 框架提供对 Vendor 相关资源的简化访问。" +"代表用于管理供应商对象的视图集。该视图集允许获取、过滤和序列化 Vendor " +"数据。它定义了用于处理不同操作的查询集、过滤器配置和序列化器类。该类的目的是通过 Django REST 框架提供对 Vendor 相关资源的简化访问。" #: engine/core/viewsets.py:588 msgid "" "Representation of a view set handling Feedback objects. This class manages " "operations related to Feedback objects, including listing, filtering, and " "retrieving details. The purpose of this view set is to provide different " -"serializers for different actions and implement permission-based handling of " -"accessible Feedback objects. It extends the base `EvibesViewSet` and makes " +"serializers for different actions and implement permission-based handling of" +" accessible Feedback objects. It extends the base `EvibesViewSet` and makes " "use of Django's filtering system for querying data." msgstr "" -"处理反馈对象的视图集的表示。该类管理与反馈对象相关的操作,包括列出、筛选和检" -"索详细信息。该视图集的目的是为不同的操作提供不同的序列化器,并对可访问的反馈" -"对象实施基于权限的处理。它扩展了基本的 `EvibesViewSet` 并使用 Django 的过滤系" -"统来查询数据。" +"处理反馈对象的视图集的表示。该类管理与反馈对象相关的操作,包括列出、筛选和检索详细信息。该视图集的目的是为不同的操作提供不同的序列化器,并对可访问的反馈对象实施基于权限的处理。它扩展了基本的" +" `EvibesViewSet` 并使用 Django 的过滤系统来查询数据。" #: engine/core/viewsets.py:615 msgid "" "ViewSet for managing orders and related operations. This class provides " "functionality to retrieve, modify, and manage order objects. It includes " "various endpoints for handling order operations such as adding or removing " -"products, performing purchases for registered as well as unregistered users, " -"and retrieving the current authenticated user's pending orders. The ViewSet " -"uses multiple serializers based on the specific action being performed and " +"products, performing purchases for registered as well as unregistered users," +" and retrieving the current authenticated user's pending orders. The ViewSet" +" uses multiple serializers based on the specific action being performed and " "enforces permissions accordingly while interacting with order data." msgstr "" -"用于管理订单和相关操作的 ViewSet。该类提供了检索、修改和管理订单对象的功能。" -"它包括用于处理订单操作的各种端点,如添加或删除产品、为注册用户和未注册用户执" -"行购买操作,以及检索当前已验证用户的待处理订单。ViewSet 根据正在执行的特定操" -"作使用多个序列化器,并在与订单数据交互时执行相应的权限。" +"用于管理订单和相关操作的 " +"ViewSet。该类提供了检索、修改和管理订单对象的功能。它包括用于处理订单操作的各种端点,如添加或删除产品、为注册用户和未注册用户执行购买操作,以及检索当前已验证用户的待处理订单。ViewSet" +" 根据正在执行的特定操作使用多个序列化器,并在与订单数据交互时执行相应的权限。" #: engine/core/viewsets.py:813 msgid "" "Provides a viewset for managing OrderProduct entities. This viewset enables " "CRUD operations and custom actions specific to the OrderProduct model. It " -"includes filtering, permission checks, and serializer switching based on the " -"requested action. Additionally, it provides a detailed action for handling " +"includes filtering, permission checks, and serializer switching based on the" +" requested action. Additionally, it provides a detailed action for handling " "feedback on OrderProduct instances" msgstr "" -"提供用于管理 OrderProduct 实体的视图集。该视图集可进行 CRUD 操作和特定于 " -"OrderProduct 模型的自定义操作。它包括过滤、权限检查和根据请求的操作切换序列化" -"器。此外,它还提供了一个详细的操作,用于处理有关 OrderProduct 实例的反馈信息" +"提供用于管理 OrderProduct 实体的视图集。该视图集可进行 CRUD 操作和特定于 OrderProduct " +"模型的自定义操作。它包括过滤、权限检查和根据请求的操作切换序列化器。此外,它还提供了一个详细的操作,用于处理有关 OrderProduct " +"实例的反馈信息" #: engine/core/viewsets.py:867 msgid "Manages operations related to Product images in the application. " @@ -3051,16 +3017,14 @@ msgstr "处理系统中与库存数据有关的操作。" msgid "" "ViewSet for managing Wishlist operations. The WishlistViewSet provides " "endpoints for interacting with a user's wish list, allowing for the " -"retrieval, modification, and customization of products within the wish list. " -"This ViewSet facilitates functionality such as adding, removing, and bulk " +"retrieval, modification, and customization of products within the wish list." +" This ViewSet facilitates functionality such as adding, removing, and bulk " "actions for wishlist products. Permission checks are integrated to ensure " "that users can only manage their own wishlists unless explicit permissions " "are granted." msgstr "" -"用于管理愿望清单操作的 ViewSet。WishlistViewSet 提供了与用户愿望清单交互的端" -"点,允许检索、修改和定制愿望清单中的产品。该 ViewSet 支持添加、删除和批量操作" -"愿望清单产品等功能。此外,还集成了权限检查功能,以确保用户只能管理自己的愿望" -"清单,除非获得明确的权限。" +"用于管理愿望清单操作的 ViewSet。WishlistViewSet 提供了与用户愿望清单交互的端点,允许检索、修改和定制愿望清单中的产品。该 " +"ViewSet 支持添加、删除和批量操作愿望清单产品等功能。此外,还集成了权限检查功能,以确保用户只能管理自己的愿望清单,除非获得明确的权限。" #: engine/core/viewsets.py:1044 msgid "" @@ -3070,9 +3034,8 @@ msgid "" "different HTTP methods, serializer overrides, and permission handling based " "on the request context." msgstr "" -"该类为管理 \"地址 \"对象提供了视图集功能。AddressViewSet 类支持与地址实体相关" -"的 CRUD 操作、过滤和自定义操作。它包括针对不同 HTTP 方法的专门行为、序列化器" -"重载以及基于请求上下文的权限处理。" +"该类为管理 \"地址 \"对象提供了视图集功能。AddressViewSet 类支持与地址实体相关的 CRUD 操作、过滤和自定义操作。它包括针对不同 " +"HTTP 方法的专门行为、序列化器重载以及基于请求上下文的权限处理。" #: engine/core/viewsets.py:1111 #, python-brace-format @@ -3087,7 +3050,4 @@ msgid "" "using the specified filter backend and dynamically uses different " "serializers based on the action being performed." msgstr "" -"在应用程序中处理与产品标签相关的操作。该类提供了检索、筛选和序列化产品标签对" -"象的功能。它支持使用指定的过滤后端对特定属性进行灵活过滤,并根据正在执行的操" -"作动态使用不同的序列化器。" - +"在应用程序中处理与产品标签相关的操作。该类提供了检索、筛选和序列化产品标签对象的功能。它支持使用指定的过滤后端对特定属性进行灵活过滤,并根据正在执行的操作动态使用不同的序列化器。" diff --git a/engine/core/views.py b/engine/core/views.py index 5e4513a0..0602bd1b 100644 --- a/engine/core/views.py +++ b/engine/core/views.py @@ -20,7 +20,7 @@ from django_ratelimit.decorators import ratelimit from djangorestframework_camel_case.render import CamelCaseJSONRenderer from djangorestframework_camel_case.util import camelize from drf_spectacular.utils import extend_schema_view -from drf_spectacular.views import SpectacularRedocView, SpectacularSwaggerView +from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView from graphene_file_upload.django import FileUploadGraphQLView from rest_framework import status from rest_framework.permissions import AllowAny @@ -36,13 +36,15 @@ from engine.core.docs.drf.views import ( BUY_AS_BUSINESS_SCHEMA, CACHE_SCHEMA, CONTACT_US_SCHEMA, + CUSTOM_OPENAPI_SCHEMA, + DOWNLOAD_DIGITAL_ASSET_SCHEMA, LANGUAGE_SCHEMA, PARAMETERS_SCHEMA, REQUEST_CURSED_URL_SCHEMA, SEARCH_SCHEMA, ) from engine.core.elasticsearch import process_query -from engine.core.models import DigitalAssetDownload, Order +from engine.core.models import DigitalAssetDownload, Order, OrderProduct from engine.core.serializers import ( BuyAsBusinessOrderSerializer, CacheOperatorSerializer, @@ -94,6 +96,12 @@ class CustomGraphQLView(FileUploadGraphQLView): return request +@extend_schema_view(**CUSTOM_OPENAPI_SCHEMA) +class CustomSpectacularAPIView(SpectacularAPIView): + def get(self, request, *args, **kwargs): + return super().get(request, *args, **kwargs) + + class CustomSwaggerView(SpectacularSwaggerView): def get_context_data(self, **kwargs): # noinspection PyUnresolvedReferences @@ -300,6 +308,7 @@ class BuyAsBusinessView(APIView): ) +@extend_schema_view(**DOWNLOAD_DIGITAL_ASSET_SCHEMA) class DownloadDigitalAssetView(APIView): __doc__ = _( # type: ignore [assignment] "Handles the downloading of a digital asset associated with an order.\n" @@ -311,25 +320,30 @@ class DownloadDigitalAssetView(APIView): def get(self, request: HttpRequest, *args, **kwargs) -> HttpResponse | FileResponse: try: op_uuid = str(kwargs.get("order_product_uuid")) + if not op_uuid: raise BadRequest(_("order_product_uuid is required")) + uuid = urlsafe_base64_decode(op_uuid).decode("utf-8") - download = DigitalAssetDownload.objects.get(order_product__uuid=uuid) + try: + order_product = OrderProduct.objects.get(uuid=uuid) + except OrderProduct.DoesNotExist as dne: + raise BadRequest(_("order product does not exist")) from dne - if download.num_downloads >= 1: + if order_product.download.num_downloads >= 1: raise BadRequest(_("you can only download the digital asset once")) - if download.order_product.status != "FINISHED": + if order_product.download.order_product.status != "FINISHED": raise BadRequest(_("the order must be paid before downloading the digital asset")) - download.num_downloads += 1 - download.save() + order_product.download.num_downloads += 1 + order_product.download.save() - if not download.order_product.product: + if not order_product.download.order_product.product: raise BadRequest(_("the order product does not have a product")) - file_path = download.order_product.product.stocks.first().digital_asset.path # type: ignore [union-attr] + file_path = order_product.download.order_product.product.stocks.first().digital_asset.path # type: ignore [union-attr] content_type, encoding = mimetypes.guess_type(file_path) if not content_type: @@ -352,8 +366,7 @@ class DownloadDigitalAssetView(APIView): data=camelize( { "error": "An error occurred while trying to download the digital asset", - "traceback": traceback.format_exc() if settings.DEBUG else None, - "received": {"order_product_uuid": kwargs.get("order_product_uuid", "")}, + "detail": traceback.format_exc() if settings.DEBUG else None, } ), status=status.HTTP_503_SERVICE_UNAVAILABLE, diff --git a/engine/payments/docs/drf/views.py b/engine/payments/docs/drf/views.py index 543ab301..7f8c7cea 100644 --- a/engine/payments/docs/drf/views.py +++ b/engine/payments/docs/drf/views.py @@ -7,6 +7,9 @@ from engine.payments.serializers import DepositSerializer, TransactionProcessSer DEPOSIT_SCHEMA = { "post": extend_schema( + tags=[ + "payments", + ], summary=_("deposit to balance"), description=_("deposit some money to balance"), request=DepositSerializer, diff --git a/engine/payments/docs/drf/viewsets.py b/engine/payments/docs/drf/viewsets.py index db47eace..f52f89ee 100644 --- a/engine/payments/docs/drf/viewsets.py +++ b/engine/payments/docs/drf/viewsets.py @@ -8,10 +8,16 @@ from engine.payments.serializers import TransactionSerializer TRANSACTION_SCHEMA = { "list": extend_schema( + tags=[ + "payments", + ], summary=_("list all transactions (read-only)"), responses={status.HTTP_200_OK: TransactionSerializer(many=True), **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "payments", + ], summary=_("retrieve a single transaction (read-only)"), parameters=[ OpenApiParameter( diff --git a/engine/payments/locale/ar_AR/LC_MESSAGES/django.po b/engine/payments/locale/ar_AR/LC_MESSAGES/django.po index 3889db2d..3cefbd41 100644 --- a/engine/payments/locale/ar_AR/LC_MESSAGES/django.po +++ b/engine/payments/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "الإيداع" msgid "withdraw" msgstr "سحب" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "الإيداع في الرصيد" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "إيداع بعض الأموال لتحقيق التوازن" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "سرد جميع المعاملات (للقراءة فقط)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "استرداد معاملة واحدة (للقراءة فقط)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "معرّف المعاملة UUID" diff --git a/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po b/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po index 9b49de58..0c0100fd 100644 --- a/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po +++ b/engine/payments/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Vklad" msgid "withdraw" msgstr "Stáhnout" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Vklad do zůstatku" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Vložte nějaké peníze na účet" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Seznam všech transakcí (pouze pro čtení)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Získání jedné transakce (pouze pro čtení)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID transakce" diff --git a/engine/payments/locale/da_DK/LC_MESSAGES/django.po b/engine/payments/locale/da_DK/LC_MESSAGES/django.po index 4f337824..1584f425 100644 --- a/engine/payments/locale/da_DK/LC_MESSAGES/django.po +++ b/engine/payments/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Indskud" msgid "withdraw" msgstr "Træk dig tilbage" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Indbetaling til saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Sæt nogle penge ind på saldoen" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Liste over alle transaktioner (skrivebeskyttet)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Hent en enkelt transaktion (skrivebeskyttet)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "Transaktions-UUID" diff --git a/engine/payments/locale/de_DE/LC_MESSAGES/django.po b/engine/payments/locale/de_DE/LC_MESSAGES/django.po index 2804a6b8..01f686a8 100644 --- a/engine/payments/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/payments/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Einzahlung" msgid "withdraw" msgstr "Zurückziehen" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Einzahlung auf den Saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Einzahlung von Geld zum Ausgleich" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Alle Transaktionen auflisten (schreibgeschützt)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Eine einzelne Transaktion abrufen (schreibgeschützt)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "Transaktion UUID" diff --git a/engine/payments/locale/en_GB/LC_MESSAGES/django.po b/engine/payments/locale/en_GB/LC_MESSAGES/django.po index 12dcf5d7..1786bd95 100644 --- a/engine/payments/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/payments/locale/en_GB/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -41,23 +41,23 @@ msgstr "Deposit" msgid "withdraw" msgstr "Withdraw" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Deposit to balance" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Deposit some money to balance" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "List all transactions (read-only)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Retrieve a single transaction (read-only)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "Transaction UUID" diff --git a/engine/payments/locale/en_US/LC_MESSAGES/django.po b/engine/payments/locale/en_US/LC_MESSAGES/django.po index 855e6e95..f0a7740c 100644 --- a/engine/payments/locale/en_US/LC_MESSAGES/django.po +++ b/engine/payments/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Deposit" msgid "withdraw" msgstr "Withdraw" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Deposit to balance" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Deposit some money to balance" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "List all transactions (read-only)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Retrieve a single transaction (read-only)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "Transaction UUID" diff --git a/engine/payments/locale/es_ES/LC_MESSAGES/django.po b/engine/payments/locale/es_ES/LC_MESSAGES/django.po index c544762a..38713627 100644 --- a/engine/payments/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/payments/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Depósito" msgid "withdraw" msgstr "Retirar" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Depósito a cuenta" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Depositar dinero para equilibrar" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Listar todas las transacciones (sólo lectura)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Recuperar una única transacción (sólo lectura)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID de la transacción" diff --git a/engine/payments/locale/fa_IR/LC_MESSAGES/django.po b/engine/payments/locale/fa_IR/LC_MESSAGES/django.po index 00744541..dbddec2b 100644 --- a/engine/payments/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/payments/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -40,23 +40,23 @@ msgstr "" msgid "withdraw" msgstr "" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "" diff --git a/engine/payments/locale/fr_FR/LC_MESSAGES/django.po b/engine/payments/locale/fr_FR/LC_MESSAGES/django.po index 874408fb..07d89fd5 100644 --- a/engine/payments/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/payments/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Dépôt" msgid "withdraw" msgstr "Se retirer" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Dépôt au solde" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Déposer de l'argent sur le compte" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Liste de toutes les transactions (en lecture seule)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Récupérer une transaction unique (en lecture seule)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID de la transaction" diff --git a/engine/payments/locale/he_IL/LC_MESSAGES/django.po b/engine/payments/locale/he_IL/LC_MESSAGES/django.po index 9ea45ea9..91f352f3 100644 --- a/engine/payments/locale/he_IL/LC_MESSAGES/django.po +++ b/engine/payments/locale/he_IL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "הפקדה" msgid "withdraw" msgstr "למשוך" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "הפקדה לאיזון" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "הפקד סכום כסף כדי לאזן את החשבון" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "הצג את כל העסקאות (לקריאה בלבד)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "איתור עסקה בודדת (לקריאה בלבד)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID של העסקה" diff --git a/engine/payments/locale/hi_IN/LC_MESSAGES/django.po b/engine/payments/locale/hi_IN/LC_MESSAGES/django.po index 27f0044e..21485575 100644 --- a/engine/payments/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/payments/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -40,23 +40,23 @@ msgstr "" msgid "withdraw" msgstr "" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "" diff --git a/engine/payments/locale/hr_HR/LC_MESSAGES/django.po b/engine/payments/locale/hr_HR/LC_MESSAGES/django.po index 00744541..dbddec2b 100644 --- a/engine/payments/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/payments/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -40,23 +40,23 @@ msgstr "" msgid "withdraw" msgstr "" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "" diff --git a/engine/payments/locale/id_ID/LC_MESSAGES/django.po b/engine/payments/locale/id_ID/LC_MESSAGES/django.po index 72d6f494..4fdc8998 100644 --- a/engine/payments/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/payments/locale/id_ID/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Deposit" msgid "withdraw" msgstr "Menarik diri" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Setoran ke saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Menyetor sejumlah uang untuk menyeimbangkan" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Daftar semua transaksi (hanya-baca)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Mengambil satu transaksi (hanya-baca)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID Transaksi" diff --git a/engine/payments/locale/it_IT/LC_MESSAGES/django.po b/engine/payments/locale/it_IT/LC_MESSAGES/django.po index 3a2b82d9..cb975163 100644 --- a/engine/payments/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/payments/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Deposito" msgid "withdraw" msgstr "Ritiro" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Deposito a saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Depositare del denaro per bilanciare" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Elenco di tutte le transazioni (solo lettura)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Recuperare una singola transazione (solo lettura)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID della transazione" diff --git a/engine/payments/locale/ja_JP/LC_MESSAGES/django.po b/engine/payments/locale/ja_JP/LC_MESSAGES/django.po index 599db01e..04ed6aa2 100644 --- a/engine/payments/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/payments/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "デポジット" msgid "withdraw" msgstr "辞退" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "預金残高" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "預金残高を増やす" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "全トランザクションのリスト(読み取り専用)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "単一のトランザクションを取得する(読み取り専用)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "トランザクションUUID" diff --git a/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po b/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po index 27f0044e..21485575 100644 --- a/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/payments/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -40,23 +40,23 @@ msgstr "" msgid "withdraw" msgstr "" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "" diff --git a/engine/payments/locale/ko_KR/LC_MESSAGES/django.po b/engine/payments/locale/ko_KR/LC_MESSAGES/django.po index 506ac60b..c8328c6f 100644 --- a/engine/payments/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/payments/locale/ko_KR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "입금" msgid "withdraw" msgstr "철회" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "잔액 입금" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "잔액을 입금하여 균형 맞추기" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "모든 트랜잭션 나열(읽기 전용)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "단일 트랜잭션 검색(읽기 전용)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "트랜잭션 UUID" diff --git a/engine/payments/locale/nl_NL/LC_MESSAGES/django.po b/engine/payments/locale/nl_NL/LC_MESSAGES/django.po index 708957a2..bcf0ea19 100644 --- a/engine/payments/locale/nl_NL/LC_MESSAGES/django.po +++ b/engine/payments/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Statiegeld" msgid "withdraw" msgstr "Intrekken" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Storting op saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Stort wat geld om te balanceren" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Alle transacties weergeven (alleen-lezen)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Een enkele transactie ophalen (alleen-lezen)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID transactie" diff --git a/engine/payments/locale/no_NO/LC_MESSAGES/django.po b/engine/payments/locale/no_NO/LC_MESSAGES/django.po index 4013b5a4..882818ca 100644 --- a/engine/payments/locale/no_NO/LC_MESSAGES/django.po +++ b/engine/payments/locale/no_NO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Innskudd" msgid "withdraw" msgstr "Trekke tilbake" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Innskudd til saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Sett inn litt penger for å balansere" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Liste over alle transaksjoner (skrivebeskyttet)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Hent en enkelttransaksjon (skrivebeskyttet)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID for transaksjon" diff --git a/engine/payments/locale/pl_PL/LC_MESSAGES/django.po b/engine/payments/locale/pl_PL/LC_MESSAGES/django.po index c065f114..b0b490f1 100644 --- a/engine/payments/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/payments/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Depozyt" msgid "withdraw" msgstr "Wycofać się" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Wpłata na saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Wpłać trochę pieniędzy na saldo" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Lista wszystkich transakcji (tylko do odczytu)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Pobieranie pojedynczej transakcji (tylko do odczytu)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID transakcji" diff --git a/engine/payments/locale/pt_BR/LC_MESSAGES/django.po b/engine/payments/locale/pt_BR/LC_MESSAGES/django.po index 2325db6b..d8e033bd 100644 --- a/engine/payments/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/payments/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Deposit" msgid "withdraw" msgstr "Retirada" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Depósito no saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Depositar algum dinheiro no saldo" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Listar todas as transações (somente leitura)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Recuperar uma única transação (somente leitura)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID da transação" diff --git a/engine/payments/locale/ro_RO/LC_MESSAGES/django.po b/engine/payments/locale/ro_RO/LC_MESSAGES/django.po index 6ad3f6c7..0939a075 100644 --- a/engine/payments/locale/ro_RO/LC_MESSAGES/django.po +++ b/engine/payments/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Depozit" msgid "withdraw" msgstr "Retragere" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Depozit la sold" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Depuneți niște bani la sold" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Lista tuturor tranzacțiilor (doar pentru citire)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Recuperează o singură tranzacție (numai citire)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID al tranzacției" diff --git a/engine/payments/locale/ru_RU/LC_MESSAGES/django.po b/engine/payments/locale/ru_RU/LC_MESSAGES/django.po index 7340e5e8..17c68e84 100644 --- a/engine/payments/locale/ru_RU/LC_MESSAGES/django.po +++ b/engine/payments/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Депозит" msgid "withdraw" msgstr "Вывести" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Депозит на баланс" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Внесите немного денег на баланс" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Список всех транзакций (только для чтения)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Получение одной транзакции (только для чтения)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "UUID транзакции" diff --git a/engine/payments/locale/sv_SE/LC_MESSAGES/django.po b/engine/payments/locale/sv_SE/LC_MESSAGES/django.po index ab7ea61a..afe12481 100644 --- a/engine/payments/locale/sv_SE/LC_MESSAGES/django.po +++ b/engine/payments/locale/sv_SE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Insättning" msgid "withdraw" msgstr "Uttag" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Insättning till saldo" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Sätt in pengar på saldot" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Lista alla transaktioner (skrivskyddad)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Hämta en enskild transaktion (skrivskyddad)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "Transaktionens UUID" diff --git a/engine/payments/locale/th_TH/LC_MESSAGES/django.po b/engine/payments/locale/th_TH/LC_MESSAGES/django.po index a7a8ffa9..4c45c424 100644 --- a/engine/payments/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/payments/locale/th_TH/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "เงินฝาก" msgid "withdraw" msgstr "ถอน" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "ฝากเงินเพื่อปรับยอด" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "ฝากเงินเพื่อปรับยอด" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "รายการธุรกรรมทั้งหมด (อ่านอย่างเดียว)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "ดึงข้อมูลธุรกรรมเดียว (อ่านอย่างเดียว)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "รหัส UUID ของธุรกรรม" diff --git a/engine/payments/locale/tr_TR/LC_MESSAGES/django.po b/engine/payments/locale/tr_TR/LC_MESSAGES/django.po index 67e5b1b2..69da6633 100644 --- a/engine/payments/locale/tr_TR/LC_MESSAGES/django.po +++ b/engine/payments/locale/tr_TR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Depozito" msgid "withdraw" msgstr "Geri Çekilme" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Bakiyeye yatırma" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Bakiye için biraz para yatırın" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Tüm işlemleri listele (salt okunur)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Tek bir işlemi alma (salt okunur)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "İşlem UUID'si" diff --git a/engine/payments/locale/vi_VN/LC_MESSAGES/django.po b/engine/payments/locale/vi_VN/LC_MESSAGES/django.po index 4f012558..306d4221 100644 --- a/engine/payments/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/payments/locale/vi_VN/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "Tiền gửi" msgid "withdraw" msgstr "Rút tiền" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "Gửi tiền vào tài khoản" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "Gửi một số tiền để cân bằng." -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "Danh sách tất cả các giao dịch (chỉ đọc)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "Lấy một giao dịch duy nhất (chỉ đọc)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "Mã giao dịch UUID" diff --git a/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po b/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po index 1edd72a7..a01d39c6 100644 --- a/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/payments/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -37,23 +37,23 @@ msgstr "存款" msgid "withdraw" msgstr "退出" -#: engine/payments/docs/drf/views.py:10 +#: engine/payments/docs/drf/views.py:13 msgid "deposit to balance" msgstr "余额存款" -#: engine/payments/docs/drf/views.py:11 +#: engine/payments/docs/drf/views.py:14 msgid "deposit some money to balance" msgstr "为余额存入一些钱" -#: engine/payments/docs/drf/viewsets.py:11 +#: engine/payments/docs/drf/viewsets.py:14 msgid "list all transactions (read-only)" msgstr "列出所有交易(只读)" -#: engine/payments/docs/drf/viewsets.py:15 +#: engine/payments/docs/drf/viewsets.py:21 msgid "retrieve a single transaction (read-only)" msgstr "检索单个事务(只读)" -#: engine/payments/docs/drf/viewsets.py:20 +#: engine/payments/docs/drf/viewsets.py:26 msgid "Transaction UUID" msgstr "事务 UUID" diff --git a/engine/vibes_auth/docs/drf/messaging.py b/engine/vibes_auth/docs/drf/messaging.py new file mode 100644 index 00000000..30d99ae1 --- /dev/null +++ b/engine/vibes_auth/docs/drf/messaging.py @@ -0,0 +1,35 @@ +from drf_spectacular.utils import OpenApiParameter + +from engine.vibes_auth.messaging.serializers import OkSerializer, PingPongSerializer, ThreadSerializer + +USER_MESSAGE_CONSUMER_SCHEMA = { + "tags": [ + "messaging", + ], + "type": "send", + "summary": "some_method_summary", + "description": "some_method_description", + "request": PingPongSerializer, + "responses": PingPongSerializer, +} + +STAFF_INBOX_CONSUMER_SCHEMA = { + "tags": [ + "messaging", + ], + "type": "send", + "summary": "some_method_summary", + "description": "some_method_description", + "responses": OkSerializer, +} + +THREAD_CONSUMER_SCHEMA = { + "tags": [ + "messaging", + ], + "type": "send", + "summary": "some_method_summary", + "description": "some_method_description", + "parameters": [OpenApiParameter(name="thread_id")], + "responses": ThreadSerializer, +} diff --git a/engine/vibes_auth/docs/drf/views.py b/engine/vibes_auth/docs/drf/views.py index acfc2b72..a1c0f689 100644 --- a/engine/vibes_auth/docs/drf/views.py +++ b/engine/vibes_auth/docs/drf/views.py @@ -12,6 +12,9 @@ from engine.vibes_auth.serializers import ( TOKEN_OBTAIN_SCHEMA = { "post": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("obtain a token pair"), description=_("obtain a token pair (refresh and access) for authentication."), request=TokenObtainPairSerializer, @@ -32,6 +35,9 @@ TOKEN_OBTAIN_SCHEMA = { TOKEN_REFRESH_SCHEMA = { "post": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("refresh a token pair"), description=_("refresh a token pair (refresh and access)."), request=TokenRefreshSerializer, @@ -52,6 +58,9 @@ TOKEN_REFRESH_SCHEMA = { TOKEN_VERIFY_SCHEMA = { "post": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("verify a token"), description=_("Verify a token (refresh or access)."), request=TokenVerifySerializer, diff --git a/engine/vibes_auth/docs/drf/viewsets.py b/engine/vibes_auth/docs/drf/viewsets.py index be8c1f57..79240f00 100644 --- a/engine/vibes_auth/docs/drf/viewsets.py +++ b/engine/vibes_auth/docs/drf/viewsets.py @@ -13,29 +13,55 @@ from engine.vibes_auth.serializers import ( USER_SCHEMA = { "create": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("create a new user"), request=UserSerializer, responses={status.HTTP_201_CREATED: UserSerializer, **BASE_ERRORS}, ), "retrieve": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("retrieve a user's details"), responses={status.HTTP_200_OK: UserSerializer, **BASE_ERRORS}, ), "update": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("update a user's details"), request=UserSerializer, responses={status.HTTP_200_OK: UserSerializer, **BASE_ERRORS}, ), + "partial_update": extend_schema( + tags=[ + "vibesAuth", + ], + summary=_("partially update a user's details"), + request=UserSerializer, + responses={status.HTTP_200_OK: UserSerializer, **BASE_ERRORS}, + ), "destroy": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("delete a user"), responses={status.HTTP_204_NO_CONTENT: {}, **BASE_ERRORS}, ), "reset_password": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("reset a user's password by sending a reset password email"), request=ResetPasswordSerializer, responses={status.HTTP_200_OK: {}, **BASE_ERRORS}, ), "upload_avatar": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("handle avatar upload for a user"), request={ "multipart/form-data": { @@ -51,6 +77,9 @@ USER_SCHEMA = { }, ), "confirm_password_reset": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("confirm a user's password reset"), request=ConfirmPasswordResetSerializer, responses={ @@ -60,6 +89,9 @@ USER_SCHEMA = { }, ), "activate": extend_schema( + tags=[ + "vibesAuth", + ], summary=_("activate a user's account"), request=ActivateEmailSerializer, responses={ @@ -69,6 +101,9 @@ USER_SCHEMA = { }, ), "merge_recently_viewed": extend_schema( + tags=[ + "misc", + ], summary=_("merge client-stored recently viewed products"), request=MergeRecentlyViewedSerializer, responses={ diff --git a/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo index ccdbf513e0f1b19d1a5de6e9b546458c9ad33c6d..56740f0c48d037597e19ed719ce495ddde6ec880 100644 GIT binary patch delta 2795 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "الرصيد" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "الطلب" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "الطلبات" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "معلومات شخصية" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "الأذونات" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "تواريخ مهمة" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "معلومات إضافية" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "إغلاق المواضيع المحددة" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "فتح المواضيع المحددة" @@ -54,80 +54,104 @@ msgstr "فتح المواضيع المحددة" msgid "authentication" msgstr "المصادقة" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "مفتوح" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "مغلق" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "المستخدم" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "الموظفون" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "النظام" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "الحصول على زوج رمزي" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "الحصول على زوج رمز مميز (التحديث والوصول) للمصادقة." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "تحديث زوج من الرمز المميز" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "تحديث زوج الرموز (التحديث والوصول)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "التحقق من الرمز المميز" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "التحقق من الرمز المميز (التحديث أو الوصول)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "الرمز المميز صالح" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "إنشاء مستخدم جديد" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "استرداد تفاصيل المستخدم" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "تحديث تفاصيل المستخدم" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "تحديث تفاصيل المستخدم جزئياً" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "حذف مستخدم" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" -"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة " -"المرور" +"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة" +" المرور" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "التعامل مع تحميل الصورة الرمزية للمستخدم" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "كلمات المرور غير متطابقة" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "تنشيط حساب مستخدم" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "رابط التفعيل غير صالح أو أن الحساب مفعل بالفعل" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "دمج المنتجات التي تم عرضها مؤخراً المخزنة لدى العميل" @@ -173,19 +197,20 @@ msgstr "تم تفعيل الحساب بالفعل..." msgid "something went wrong: {e!s}" msgstr "حدث خطأ ما: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "الرمز غير صالح!" #: engine/vibes_auth/graphene/object_types.py:40 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)، بترتيب زمني عكسي." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "المجموعات" @@ -193,7 +218,8 @@ msgstr "المجموعات" msgid "wishlist" msgstr "قائمة الرغبات" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "الصورة الرمزية" @@ -204,76 +230,31 @@ msgstr "يمكن استخدام السمات لتخزين البيانات ال #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "اللغة هي واحدة من {settings.LANGUAGES} مع {settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "العناوين" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "مفتوح" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "مغلق" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "المستخدم" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "الموظفون" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "النظام" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "بالنسبة للمواضيع المجهولة" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "موضوع المحادثة" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "خيوط الدردشة" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "توفير مستخدم أو بريد إلكتروني لموضوع مجهول." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "يجب أن يكون المعين مستخدمًا من الموظفين." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "رسالة الدردشة" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "رسائل المحادثة" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "مطلوب بريد إلكتروني صالح للمحادثات المجهولة." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "يجب أن تتكون الرسالة من 1...1028 حرفاً." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "نحن نبحث عن عامل التشغيل للرد عليك بالفعل، انتظر!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "يجب أن يكون المعين مستخدمًا من الموظفين." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -286,95 +267,123 @@ msgstr "" "يمثل كيان مستخدم مع حقول وأساليب مخصصة لوظائف موسعة. توسع هذه الفئة نموذج " "AbstractUser وتدمج ميزات إضافية مثل تسجيل الدخول إلى البريد الإلكتروني " "المخصص، وطرق التحقق من الصحة، وحالة الاشتراك، والتحقق، وتخزين السمات. كما " -"يوفر أيضًا أدوات مساعدة لإدارة العناصر التي تم عرضها مؤخرًا والتفعيل المستند " -"إلى الرمز المميز للتحقق من الحسابات. تم تصميم نموذج المستخدم للتعامل مع " +"يوفر أيضًا أدوات مساعدة لإدارة العناصر التي تم عرضها مؤخرًا والتفعيل المستند" +" إلى الرمز المميز للتحقق من الحسابات. تم تصميم نموذج المستخدم للتعامل مع " "حالات استخدام محددة لإدارة المستخدم المحسنة." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "البريد الإلكتروني" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "عنوان البريد الإلكتروني للمستخدم" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "رقم الهاتف" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "رقم هاتف المستخدم" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "الاسم الأول" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "اسم العائلة" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "صورة ملف تعريف المستخدم" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "تم التحقق" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "حالة التحقق من المستخدم" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "نشط" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "قم بإلغاء تحديد هذا بدلاً من حذف الحسابات" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "مشترك" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "حالة اشتراك المستخدم في النشرة الإخبارية" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "رمز التفعيل" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "السمات" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "المستخدم" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "المستخدمون" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "بالنسبة للمواضيع المجهولة" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "موضوع المحادثة" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "خيوط الدردشة" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "توفير مستخدم أو بريد إلكتروني لموضوع مجهول." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "يجب أن يكون المُحال إليه مستخدمًا من الموظفين." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "رسالة الدردشة" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "رسائل المحادثة" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "المجموعة" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "الرمز المميز" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "الرموز المميزة المعلقة" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "الرمز المميز المدرج في القائمة السوداء" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "الرموز المميزة المدرجة في القائمة السوداء" @@ -437,8 +446,7 @@ msgstr "مرحباً %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "لقد تلقينا طلباً لإعادة تعيين كلمة المرور الخاصة بك. يرجى إعادة تعيين كلمة " @@ -522,29 +530,29 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"يمثل طريقة عرض للحصول على زوج من رموز الوصول والتحديث وبيانات المستخدم. تدير " -"طريقة العرض هذه عملية التعامل مع المصادقة المستندة إلى الرمز المميز حيث يمكن " -"للعملاء الحصول على زوج من رموز JWT (الوصول والتحديث) باستخدام بيانات " +"يمثل طريقة عرض للحصول على زوج من رموز الوصول والتحديث وبيانات المستخدم. تدير" +" طريقة العرض هذه عملية التعامل مع المصادقة المستندة إلى الرمز المميز حيث " +"يمكن للعملاء الحصول على زوج من رموز JWT (الوصول والتحديث) باستخدام بيانات " "الاعتماد المقدمة. وهو مبني على طريقة عرض الرمز المميز الأساسي ويضمن تحديد " "المعدل المناسب للحماية من هجمات القوة الغاشمة." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "يعالج تحديث الرموز المميزة لأغراض المصادقة. يتم استخدام هذه الفئة لتوفير " -"وظيفة لعمليات تحديث الرموز كجزء من نظام المصادقة. وهي تضمن أن العملاء يمكنهم " -"طلب رمز محدث ضمن حدود المعدل المحدد. تعتمد طريقة العرض على أداة التسلسل " +"وظيفة لعمليات تحديث الرموز كجزء من نظام المصادقة. وهي تضمن أن العملاء يمكنهم" +" طلب رمز محدث ضمن حدود المعدل المحدد. تعتمد طريقة العرض على أداة التسلسل " "المرتبطة بها للتحقق من صحة مدخلات تحديث الرمز المميز وإنتاج مخرجات مناسبة." #: engine/vibes_auth/views.py:67 @@ -562,17 +570,10 @@ msgstr "الرمز المميز غير صالح" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "تنفيذ مجموعة عرض المستخدم.\n" -"يوفر مجموعة من الإجراءات التي تدير البيانات المتعلقة بالمستخدم مثل الإنشاء " -"والاسترجاع والتحديثات والحذف والإجراءات المخصصة بما في ذلك إعادة تعيين كلمة " -"المرور وتحميل الصورة الرمزية وتفعيل الحساب ودمج العناصر التي تم عرضها مؤخرًا. " -"تعمل هذه الفئة على توسيع mixins و GenericViewSet لمعالجة واجهة برمجة " -"التطبيقات القوية." +"يوفر مجموعة من الإجراءات التي تدير البيانات المتعلقة بالمستخدم مثل الإنشاء والاسترجاع والتحديثات والحذف والإجراءات المخصصة بما في ذلك إعادة تعيين كلمة المرور وتحميل الصورة الرمزية وتفعيل الحساب ودمج العناصر التي تم عرضها مؤخرًا. تعمل هذه الفئة على توسيع mixins و GenericViewSet لمعالجة واجهة برمجة التطبيقات القوية." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo index 1bf2269100a8cf3fbbe80b54bba2632de2839012..f12c125869e015f046f82ec98a27360aca22e214 100644 GIT binary patch delta 2819 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Bilance" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Objednávka" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Objednávky" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Osobní informace" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Oprávnění" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Důležitá data" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Další informace" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Zavřít vybraná vlákna" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Otevřít vybraná vlákna" @@ -54,78 +54,102 @@ msgstr "Otevřít vybraná vlákna" msgid "authentication" msgstr "Ověřování" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Otevřít" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Uzavřeno" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Uživatel" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Zaměstnanci" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Systém" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Získání páru tokenů" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Získat pár tokenů (obnovení a přístup) pro ověření." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Obnovení páru tokenů" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Obnovení dvojice tokenů (obnovení a přístup)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Ověření tokenu" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Ověření tokenu (obnovení nebo přístup)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Token je platný" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Vytvoření nového uživatele" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Získání údajů o uživateli" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Aktualizace údajů uživatele" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "částečně aktualizovat údaje uživatele" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Odstranění uživatele" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "Obnovení hesla uživatele odesláním e-mailu s obnovením hesla." -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Zpracování nahrávání avataru pro uživatele" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Hesla se neshodují" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Aktivace účtu uživatele" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Aktivační odkaz je neplatný nebo je účet již aktivován" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Sloučení naposledy zobrazených produktů uložených u klienta" @@ -171,20 +195,21 @@ msgstr "Účet byl již aktivován..." msgid "something went wrong: {e!s}" msgstr "Něco se pokazilo: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token je neplatný!" #: engine/vibes_auth/graphene/object_types.py:40 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í." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Skupiny" @@ -192,7 +217,8 @@ msgstr "Skupiny" msgid "wishlist" msgstr "Seznam přání" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -203,8 +229,8 @@ msgstr "Atributy lze použít k uložení vlastních dat." #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "Jazyk je jeden z {settings.LANGUAGES} s výchozím {settings.LANGUAGE_CODE}" @@ -212,68 +238,23 @@ msgstr "" msgid "address set" msgstr "Adresy" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Otevřít" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Uzavřeno" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Uživatel" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Zaměstnanci" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Systém" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Pro anonymní vlákna" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Vlákno chatu" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Vlákna chatu" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Zadejte uživatele nebo e-mail pro anonymní vlákno." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Příjemce musí být zaměstnanecký uživatel." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Zpráva na chatu" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Zprávy v chatu" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Pro anonymní chaty je vyžadován platný e-mail." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Zpráva musí mít 1..1028 znaků." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Už hledáme operátora, který vám odpoví, vydržte!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Příjemce musí být zaměstnanecký uživatel." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -284,98 +265,126 @@ msgid "" "for enhanced user management." msgstr "" "Reprezentuje entitu User s upravenými poli a metodami pro rozšířenou " -"funkčnost. Tato třída rozšiřuje model AbstractUser a integruje další funkce, " -"jako je vlastní přihlašování e-mailem, ověřovací metody, stav odběru, " +"funkčnost. Tato třída rozšiřuje model AbstractUser a integruje další funkce," +" jako je vlastní přihlašování e-mailem, ověřovací metody, stav odběru, " "ověřování a ukládání atributů. Poskytuje také nástroje pro správu naposledy " -"zobrazených položek a aktivaci založenou na tokenu pro ověřování účtů. Model " -"User je navržen tak, aby zvládal specifické případy použití pro rozšířenou " +"zobrazených položek a aktivaci založenou na tokenu pro ověřování účtů. Model" +" User je navržen tak, aby zvládal specifické případy použití pro rozšířenou " "správu uživatelů." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "E-mailová adresa uživatele" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Telefonní číslo" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Telefonní číslo uživatele" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Křestní jméno" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Příjmení" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Obrázek profilu uživatele" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Je ověřeno" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Stav ověření uživatele" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Je aktivní" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Zrušení výběru této možnosti místo odstranění účtů" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Je přihlášena k odběru" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Stav odběru newsletteru uživatele" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Aktivační token" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Atributy" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Uživatel" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Uživatelé" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Pro anonymní vlákna" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Vlákno chatu" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Vlákna chatu" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "zadejte uživatele nebo e-mail pro anonymní vlákno." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "Příjemce musí být personálním uživatelem." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Zpráva na chatu" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Zprávy v chatu" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Skupina" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Vynikající žeton" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Nevyplacené žetony" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token na černé listině" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Tokeny na černé listině" @@ -438,8 +447,7 @@ msgstr "Ahoj %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Obdrželi jsme žádost o obnovení vašeho hesla. Kliknutím na níže uvedené " @@ -455,8 +463,7 @@ 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:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -524,26 +531,26 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Představuje zobrazení pro získání dvojice přístupových a obnovovacích tokenů " -"a dat uživatele. Toto zobrazení řídí proces zpracování ověřování na základě " -"tokenů, kdy klienti mohou získat dvojici tokenů JWT (přístupový a " +"Představuje zobrazení pro získání dvojice přístupových a obnovovacích tokenů" +" a dat uživatele. Toto zobrazení řídí proces zpracování ověřování na základě" +" tokenů, kdy klienti mohou získat dvojici tokenů JWT (přístupový a " "obnovovací) pomocí poskytnutých pověření. Je postaven nad základním " "zobrazením tokenu a zajišťuje správné omezení rychlosti pro ochranu před " "útoky hrubou silou." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Zpracovává obnovování tokenů pro účely ověřování. Tato třída slouží k " "zajištění funkčnosti operací obnovení tokenů v rámci systému ověřování. " @@ -566,17 +573,10 @@ msgstr "Token je neplatný" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementace sady uživatelských zobrazení.\n" -"Poskytuje sadu akcí, které spravují data související s uživatelem, jako je " -"vytváření, načítání, aktualizace, mazání a vlastní akce včetně obnovení " -"hesla, nahrání avatara, aktivace účtu a sloučení naposledy zobrazených " -"položek. Tato třída rozšiřuje mixiny a GenericViewSet pro robustní " -"zpracování API." +"Poskytuje sadu akcí, které spravují data související s uživatelem, jako je vytváření, načítání, aktualizace, mazání a vlastní akce včetně obnovení hesla, nahrání avatara, aktivace účtu a sloučení naposledy zobrazených položek. Tato třída rozšiřuje mixiny a GenericViewSet pro robustní zpracování API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo index 0d82ed6eaaf18a10c74c2584bdfc22e8fc44d62e..8d1de9c5b0e0dd3c7a308e44abcbfb77ed9b97a9 100644 GIT binary patch delta 2777 zcmZA2d2Ccw6vy$?LTL+yF0|0HK8lvs(jtY*Dg~v0?8sha8SHczm?=05NJujZB9W-U z3{pN;co6bK8;%cfT_ujB zy|FMo@IjnP`y(8Hf1@T=TEtDU9?Nh8mT-T2nv-#Kyo3YsJTj(TNA7KRP&3W%YsQ}q zPbCp|}gl-Cjpk;vG~mkD)5?iRX1J=R`*6M9K zl-UX7&(8Cq8(za*m_t3A@CDRBS5XPxM$M#yqH}OJHen84LY4Yg)DjdAHsjAG@u8<^C05Zs!H!jh zenwU3CTb5QGTAZuqBknDGSpJkpfVhbyBTOEYDQl<>BRm-CFZa`sz?QP%jCw`&h-r} zc!K^5ccu5#DrTc`1D>t8J%dZ)oYe9~C+TbRI3swjaUSwp+lvk!#nJc;YKd}~wh}By zU0;uSET2FUEq!CTAU}J#Y)#u!Jo<6O*Wc zzQc|9i`QO8R_gboW*Wm@*oL$5SAzIVzoT1@cm| zI_!YkdX_u>*JDPpBmdCdQ;6 zr#R|{FC(u2JB>U=wv^COM2siK5fh2Wi0OoWqhom*_nont^9KnfxQ19nOe1s@5K3%5 z!PDwKqVD4}hek7@GT%q&*qX+DjC88RbX25qOUl;y&#{8mdP3FeLu?>gh#0Ywm_#fl z8VJAcud?t2xyKehL*Dr&)LPFY9w!0>%k7pE+;>7x)Q)ZiN`W zzn>WG_UOY~f2!@iY<##;{r@^(Gm9 z714{(2F>IC?*D8(7WsrWj~$sHpSYz;WR7RTS}tc%10{)oN^ YZHu_7wZ88E05#7aYybcN delta 2621 zcmYk;eN5F=9LMo5&&WfU2jxLgK}94KwD1v1z@P$C#K1riEglmTxw0C}Zs~}zGTo4k zH&_0<6Q% zFajT@|1}RS$GaG57O-rd))#ZJ084O&2Rg77OCB=o;{FAnSro=4gKhPFd>CWVm@Z_e%nt&6L=Xn;#;@~r;#!3N95i1Cu+qJsb>5$ zA0I5rmZK(Kh)b~vnX?U`GBJWm<{4B5#+_eaGVixJ8jNi=->e)`Q3KT@leT_T%7;-I z7(>1Ioa;}bUi2aAxgcuAGk6^5a1VB~N-g9n_TaY|(7+XJoK{wgY_sh{-EYTTc+B0O zMy32K)IhVCfj{F){1>$ax#?!Bunx6=LDZg~Le^@ZU@3l?PX4u`a7NJzVo?wHP#MWV zZAG!O*8RO3d6&I{n)n!M!tWquV;>`nwolP3I^0bEE^2EwWQHbEnMwX>TO%KOkspWf zG&bP^@~DA&Q4<ee`SdF}v&zg7RAvTIH8bMwpG8e9aDj$W ze;GByDI8{?8>kgEWQQj98fs$iqcZXls_L&`L^wr;=XvgrWjfSU`-)I4C9x`vztEY3 zgM4ol7V4|-u?!W>3|64!kv`al+1QEea0IngQ>cl~qQ3ttGFK}gEjq5%sM^?zvDk+s z#RgFs7{|@{F6L;eH)*Jv|3l5xNB&|k4K=YP$V{yU^@0J^1m3`%IN|<2=k6~iZQ8oE zsPVR<#;bDu9j;%Gc}i6?4b{L9>by?ilbA(*HBc)aLci<(;GDx)?%%_BjApjgn1b`L z8C8TGsEKzY^=ZeEwc0oaifMdKV=exLnn>Q7&=<;34|btaHh@~uWlX>+R5f2iW#l_# z?)Dq<&oW4x#;Zb|{}$9lPojQtPZyH^L>d>lp`r?+W_AsC;~i9$Ru+YhRU@j}kD@mK z_R_zI2QZCQ==(3Bw?+6k{Rz}WZ#sWRl4fD+$iIqb4Hc%9ZAVRHH|iXBI$w2;qb6_( znVa1}?d?5G#;8ZkPGCA}rEepJZj-1NUPn%{{f!&~+phgTKx`xq5{%>RxgSdjU8>%2 zujL&MueFuWJ?@?|@!-`+M~hki;7!^cuCG(m=h}L|w}NIo;%?qYGu3`>At>(9p5pyW z$5e&dMEKmzO{k2v5fSd5YE0XzOWSeSYk9{pVD)rr37u_SN>h~A3VrN#?Pqa6(M8k{ zO7}5B6|QPmnsu?Y-hXCPKQ9txgsu`Ig{V`D+v|nV?-rE zjd^?j6m}B2o*|wi8q{%@j+km_1Hm?XzY*YFt\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Balance" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Bestil" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Bestillinger" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Personlig information" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Tilladelser" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Vigtige datoer" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Yderligere information" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Luk udvalgte tråde" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Åbn udvalgte tråde" @@ -54,80 +54,104 @@ msgstr "Åbn udvalgte tråde" msgid "authentication" msgstr "Autentificering" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Åben" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Lukket" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Bruger" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personale" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Få et token-par" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Hent et tokenpar (refresh og access) til autentificering." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Opdater et token-par" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Opdater et tokenpar (refresh og access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Bekræft et token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Bekræft et token (opdatering eller adgang)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Tokenet er gyldigt" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Opret en ny bruger" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Hent oplysninger om en bruger" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Opdater en brugers oplysninger" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "Delvis opdatering af en brugers oplysninger" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Slet en bruger" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Nulstil en brugers adgangskode ved at sende en e-mail om nulstilling af " "adgangskode" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Håndter upload af avatar for en bruger" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Adgangskoderne stemmer ikke overens" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Aktivér en brugers konto" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Aktiveringslinket er ugyldigt, eller kontoen er allerede aktiveret" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Flet nyligt viste produkter, der er gemt af klienten" @@ -173,20 +197,21 @@ msgstr "Kontoen er allerede aktiveret..." msgid "something went wrong: {e!s}" msgstr "Noget gik galt: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token er ugyldig!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupper" @@ -194,7 +219,8 @@ msgstr "Grupper" msgid "wishlist" msgstr "Ønskeliste" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -205,8 +231,8 @@ msgstr "Attributter kan bruges til at gemme brugerdefinerede data" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "Sprog er en af {settings.LANGUAGES} med standard {settings.LANGUAGE_CODE}." @@ -214,68 +240,23 @@ msgstr "" msgid "address set" msgstr "Adresser" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Åben" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Lukket" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Bruger" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personale" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Til anonyme tråde" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Chat-tråd" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Chat-tråde" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Angiv bruger eller e-mail for anonym tråd." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Modtageren skal være en personalebruger." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chat-besked" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chat-beskeder" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Gyldig e-mail er påkrævet for anonyme chats." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Beskeden skal bestå af 1..1028 tegn." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Vi leder allerede efter en operatør, der kan svare dig, så vent!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Modtageren skal være en personalebruger." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -293,91 +274,119 @@ msgstr "" "aktivering til verificering af konti. User-modellen er designet til at " "håndtere specifikke brugsscenarier for forbedret brugeradministration." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Brugerens e-mailadresse" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Telefonnummer" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Brugerens telefonnummer" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Fornavn" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Efternavn" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Billede af brugerprofil" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Er verificeret" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Brugerens verifikationsstatus" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Er aktiv" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Fravælg dette i stedet for at slette konti" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Er tilmeldt" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Status for brugerens abonnement på nyhedsbrev" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Aktiveringstoken" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Egenskaber" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Bruger" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Brugere" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Til anonyme tråde" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Chat-tråd" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Chat-tråde" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "Angiv bruger eller e-mail for anonym tråd." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "modtageren skal være en personalebruger." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chat-besked" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chat-beskeder" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Gruppe" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Enestående token" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Udestående tokens" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Sortlistet token" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Sortlistede tokens" @@ -441,8 +450,7 @@ msgstr "Hej %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Vi har modtaget en anmodning om at nulstille din adgangskode. Nulstil " @@ -458,8 +466,7 @@ 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:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -526,8 +533,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -536,16 +543,16 @@ msgstr "" "brugerens data. Denne visning administrerer processen med at håndtere " "tokenbaseret godkendelse, hvor klienter kan få et par JWT-tokens (adgang og " "opdatering) ved hjælp af de angivne legitimationsoplysninger. Den er bygget " -"oven på en basis-tokenvisning og sikrer korrekt hastighedsbegrænsning for at " -"beskytte mod brute force-angreb." +"oven på en basis-tokenvisning og sikrer korrekt hastighedsbegrænsning for at" +" beskytte mod brute force-angreb." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Håndterer opfriskning af tokens til autentificeringsformål. Denne klasse " "bruges til at levere funktionalitet til token-opdatering som en del af et " @@ -559,8 +566,8 @@ msgid "" "Represents a view for verifying JSON Web Tokens (JWT) using specific " "serialization and validation logic. " msgstr "" -"Repræsenterer en visning til verificering af JSON Web Tokens (JWT) ved hjælp " -"af specifik serialiserings- og valideringslogik." +"Repræsenterer en visning til verificering af JSON Web Tokens (JWT) ved hjælp" +" af specifik serialiserings- og valideringslogik." #: engine/vibes_auth/views.py:80 msgid "the token is invalid" @@ -569,17 +576,10 @@ msgstr "Tokenet er ugyldigt" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementering af brugervisningssæt.\n" -"Indeholder et sæt handlinger, der håndterer brugerrelaterede data såsom " -"oprettelse, hentning, opdateringer, sletning og brugerdefinerede handlinger, " -"herunder nulstilling af adgangskode, upload af avatar, kontoaktivering og " -"sammenlægning af nyligt viste elementer. Denne klasse udvider mixins og " -"GenericViewSet til robust API-håndtering." +"Indeholder et sæt handlinger, der håndterer brugerrelaterede data såsom oprettelse, hentning, opdateringer, sletning og brugerdefinerede handlinger, herunder nulstilling af adgangskode, upload af avatar, kontoaktivering og sammenlægning af nyligt viste elementer. Denne klasse udvider mixins og GenericViewSet til robust API-håndtering." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo index c2974a8f5bfe5b60a0fb3d88c0e8172008dd40aa..377ca0bcf12af57779a97299666647f66e94c9fc 100644 GIT binary patch delta 2792 zcmZA3X>3$g7{>9pLTd*K1zJigLwieAXpyA_WGP!K6)2^ED4T2py)6UNQf84LX-1-m z5>tY80Z9=>FflIC!QcYLM1v+KL{LIvkSN9vM6HN^asmI(%xyxvnfLzgIh}i!_nb5E zd2{EM_~k*ppEs^;grE4Pm)Q|~=5}se`F+d^u>iAhGWNq7?2Ajh`n8xxIfNPbI1a`= zxG~M_FqTpF(MSnSz}{wYTh4>NxEjCaixF(VIsMIo)W4Z+mX3J?QVsi&7p(-V`QAvp zhw|ousfPFCEXpVG4*VB2vHU@FiW9K_H{oFVw5ORhwA7e>b=XTncu)REFith@I};we#2(GiE%aD%))7gJJ5%_QT6+9 zF~028|Bg!i->8Oc2x)}@csG`!mSPc(#5U9fj-l5417y;638&$;A>>~(8ci#j!FbdQ zQ&AbI!(v>ETAH1nov819h>XR)L`~odYT(_-HnM+EOXFj~Nrp{CEkP|#!B_$L*IK

25Ke)`LYI7@3{`uQ5c!5b)qu&KB}LOQ173O z^Pm@h@GAa525lK^*}Jd^m7yBcKeVf#WH6v19fA zb=2lgW1}cz@j>20A@Z>@uUv~7=~BE%Lz{3ke zMg3pQLIZu8(P@dFMU@ZW-Za+#RUW2LQNc7OV+iZKk~g0 zPovf@dknt~=%5Dr3aUPVKKu;(;aPkLFQGcD7@OLJm8cBO!nkIzga`VvtyqhPP&2)X zTHE4rX0&0`QRNWU;ZxWLFJKmakDBSPsAHL4ZpO#_+_ahNQSC%g?Hnm5|HFAWO+{b4 zf|_|ZY9_u4v$>dqO64llZr+YAzJ=;2hf2LyhS~!)=wJ}{;U3(I{t2l8wj)1&c5DLq zU(CZvDs-;`qbAh%UjBW+F{t;}AU`G6 zgwNqlRL1h+F+78qRe+UA+(sWsEZiA`SXxNG0sdM&50kPi!I@ zi72sxs3evUGYOV3p4`D4+2r*I_mKCz1xFGK2(4Wcp_J;R=yC{czTU)2qL%2na(H;q zE3ie97b}z8Bh#@wRmGk8&j9vE^6Uq2GjZ!Rmx9)`g_uUnA?_z0AZm!7E8Tn0(F+r+ zymG6j&>mP#XtNI{vXuWKf}@@MCsoH$`yocmBD4v6u3kLw^PT)(Oc0k6+FU&sr_L7j z6g)@#ulz9OIwIoLmoDU?*(=QR)DhAy*AXlx))W53cfK{ZC7QBMWekf%f=w;1>omtA zQD?pD1e{1T(Aen2B5rt0Vt7t&dSN&k41_}4omgu_AgXWZZzCd3gBuM5Lmd_Qd(v7v zre%%lIG3NB_$t3GGx0)kXJ+tJ41ic*rBi delta 2621 zcmY+`ZA_L`9LMoL2!x373=$Ne;1g+qpeUe#Nj~r-N(zytf_Mk0fow((+qs8|M%xQ*UfdEbN=Ul?m2wm zyUxDf;=_iF)VJwts7Bhvtc&Q!Zg(V1(=Kl7=fEG3F~oR z2!V^~U*Vy7cn`zO`Ye;D^@ll_i^X`A2imX&i|;oJaR2=nvv7=x^#_PWUSKI$!QZ9h z!}NE?`2)OxW%NJ82k;JRfzk0y5*J}AW0+6b25SPJ>qib8pdRuGALAO@9@ zEYwyMIP2W^9mrVr5^CZ@s0n|7l#QK77HwamS9G|N{yo&zEKl_(vM!bUb8U@$XrONF z$CKEEN#s#4I*6K3KWgTuQ4_u9oI(xs53)GR=4HxM32MdVsOK9{&+T*l-aamvl%2pF zJcr82PpFyxjK}agMq+>xR%*LYDL;b`;y0+%GKtIRuj9<>`R7nYd>oaj_nc=@wbD1@ zZd^gl^jDnVMR#xs{U0)Y@1kCiljUbB57*PL#@bM`ckuTRvs-NR0QY}nHJWfEv((n^ zM)d=DlE3T1l{){S3(bo7q6BNO2l;2Cd}QOFsPE$!`7_>x%2+!Vv*7<*(3+>5y)J!j;w%~hQftQ>SxqhlwJDahY?|X3#P9WL0 z6pnxfEI_@l3N?`}uHTIMJ=lY}jBo8+XvXj22!4*W*h2obcNg$w979dCa;blRJ8DG% zoQ>VsfJaaRPN0f#5|x>os9O0O8N!kuA^#h>Sj&Z0I)K!fjU#_!H(WpNQ9or%FpB%V z7>)g?mA-{Kjvu3n_#*20Db)Lt^UUUAKF-1h)Pi^Ak$cyq` z{sUW4dwl>iaS%`81$-7Oc~}$r0{L;X%eWbDp^kA;fuDhDr1-48fc$50ah4lO*%+$0 zE}y#LH>!DomvLamsHC+gL4ZKKZrUOFl& z6$EwS9gRwyPv}^c66*-8HgP{%b@b|S$R8+GX&W$;>yvl(l2t^BtW zYl&FmF`|>$LnISAE@~E1`AV9MGhw9ZwQWO4MzqC R77s)W*5r)^oAb-V{{yhR^tAv0 diff --git a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po index 4bebbaf9..42d750cd 100644 --- a/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Waage" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Bestellung" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Bestellungen" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Persönliche Informationen" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Erlaubnisse" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Wichtige Termine" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Zusätzliche Informationen" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Ausgewählte Threads schließen" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Ausgewählte Themen öffnen" @@ -54,81 +54,105 @@ msgstr "Ausgewählte Themen öffnen" msgid "authentication" msgstr "Authentifizierung" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Öffnen Sie" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Geschlossen" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Benutzer" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personal" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Erhalten Sie ein Token-Paar" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" "Beziehen Sie ein Token-Paar (Refresh und Access) für die Authentifizierung." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Ein Token-Paar aktualisieren" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Auffrischen eines Tokenpaares (Refresh und Access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Überprüfen eines Tokens" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Überprüfen eines Tokens (Aktualisierung oder Zugriff)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Das Token ist gültig" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Einen neuen Benutzer anlegen" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Abrufen der Details eines Benutzers" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Aktualisieren der Benutzerdaten" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "die Daten eines Benutzers teilweise aktualisieren" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Einen Benutzer löschen" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Zurücksetzen des Kennworts eines Benutzers durch Senden einer E-Mail zum " "Zurücksetzen des Kennworts" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Avatar-Upload für einen Benutzer verwalten" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Passwörter stimmen nicht überein" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Aktivieren eines Benutzerkontos" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Aktivierungslink ist ungültig oder Konto bereits aktiviert" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "" "Zusammenführen der vom Kunden gespeicherten, zuletzt angesehenen Produkte" @@ -136,8 +160,8 @@ msgstr "" #: engine/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." #: engine/vibes_auth/graphene/mutations.py:61 msgid "password too weak" @@ -177,20 +201,21 @@ msgstr "Das Konto wurde bereits aktiviert..." msgid "something went wrong: {e!s}" msgstr "Etwas ist schief gelaufen: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token ist ungültig!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Gruppen" @@ -198,7 +223,8 @@ msgstr "Gruppen" msgid "wishlist" msgstr "Wunschzettel" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -210,81 +236,35 @@ msgstr "" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Sprache ist eine der {settings.LANGUAGES} mit Voreinstellung {settings." -"LANGUAGE_CODE}" +"Sprache ist eine der {settings.LANGUAGES} mit Voreinstellung " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adressen" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Öffnen Sie" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Geschlossen" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Benutzer" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personal" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Für anonyme Themen" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Chat-Thread" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Chat-Themen" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" -"Geben Sie einen Benutzer oder eine E-Mail für einen anonymen Thread an." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Der Abtretungsempfänger muss ein Mitarbeiter sein." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chat-Nachricht" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chat-Nachrichten" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Für anonyme Chats ist eine gültige E-Mail erforderlich." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Die Nachricht muss 1..1028 Zeichen lang sein." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" "Wir suchen bereits nach dem Operator, um Ihnen zu antworten, bleiben Sie " "dran!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Der Abtretungsempfänger muss ein Mitarbeiter sein." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -304,91 +284,120 @@ msgstr "" "entwickelt, um spezielle Anwendungsfälle für eine erweiterte " "Benutzerverwaltung zu behandeln." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-Mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "E-Mail Adresse des Benutzers" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Rufnummer" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Rufnummer des Benutzers" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Vornamen" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Nachname" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Bild des Benutzerprofils" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Wird überprüft" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Verifizierungsstatus des Benutzers" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Ist aktiv" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Deaktivieren Sie diese Option, anstatt Konten zu löschen" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Ist abonniert" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Status des Newsletter-Abonnements des Benutzers" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Aktivierungs-Token" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attribute" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Benutzer" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Benutzer" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Für anonyme Themen" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Chat-Thread" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Chat-Themen" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" +"Geben Sie einen Benutzer oder eine E-Mail für einen anonymen Thread an." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "Der Beauftragte muss ein Mitarbeiter sein." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chat-Nachricht" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chat-Nachrichten" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Gruppe" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Hervorragende Wertmarke" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Ausstehende Wertmarken" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token auf der schwarzen Liste" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Token auf der schwarzen Liste" @@ -453,8 +462,7 @@ msgstr "Hallo %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Wir haben eine Anfrage erhalten, Ihr Passwort zurückzusetzen. Bitte setzen " @@ -470,8 +478,7 @@ 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:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -479,8 +486,8 @@ msgid "" "if you did not send this request, please ignore this\n" " 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." #: engine/vibes_auth/templates/user_reset_password_email.html:102 #, python-format @@ -539,35 +546,35 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Stellt eine Ansicht zum Abrufen eines Paars von Zugangs- und Aktualisierungs-" -"Tokens und der Benutzerdaten dar. Diese Ansicht verwaltet den Prozess der " -"Handhabung der Token-basierten Authentifizierung, bei der Clients ein Paar " -"JWT-Tokens (Zugriffs- und Aktualisierungs-Token) unter Verwendung der " -"bereitgestellten Anmeldeinformationen abrufen können. Sie baut auf einer " -"Basis-Token-Ansicht auf und gewährleistet eine angemessene Ratenbegrenzung " -"zum Schutz vor Brute-Force-Angriffen." +"Stellt eine Ansicht zum Abrufen eines Paars von Zugangs- und " +"Aktualisierungs-Tokens und der Benutzerdaten dar. Diese Ansicht verwaltet " +"den Prozess der Handhabung der Token-basierten Authentifizierung, bei der " +"Clients ein Paar JWT-Tokens (Zugriffs- und Aktualisierungs-Token) unter " +"Verwendung der bereitgestellten Anmeldeinformationen abrufen können. Sie " +"baut auf einer Basis-Token-Ansicht auf und gewährleistet eine angemessene " +"Ratenbegrenzung zum Schutz vor Brute-Force-Angriffen." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Verwaltet die Auffrischung von Token für Authentifizierungszwecke. Diese " -"Klasse wird verwendet, um Funktionen für die Auffrischung von Token als Teil " -"eines Authentifizierungssystems bereitzustellen. Sie stellt sicher, dass " +"Klasse wird verwendet, um Funktionen für die Auffrischung von Token als Teil" +" eines Authentifizierungssystems bereitzustellen. Sie stellt sicher, dass " "Clients ein aktualisiertes Token innerhalb definierter Ratengrenzen " "anfordern können. Die Ansicht verlässt sich auf den zugehörigen Serializer, " -"um die Eingaben für die Token-Aktualisierung zu validieren und entsprechende " -"Ausgaben zu erzeugen." +"um die Eingaben für die Token-Aktualisierung zu validieren und entsprechende" +" Ausgaben zu erzeugen." #: engine/vibes_auth/views.py:67 msgid "" @@ -584,17 +591,10 @@ msgstr "Das Token ist ungültig" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementierung der Benutzeransicht.\n" -"Stellt eine Reihe von Aktionen zur Verfügung, die benutzerbezogene Daten wie " -"Erstellung, Abruf, Aktualisierung, Löschung und benutzerdefinierte Aktionen " -"wie Kennwortrücksetzung, Avatar-Upload, Kontoaktivierung und Zusammenführung " -"kürzlich angesehener Elemente verwalten. Diese Klasse erweitert die Mixins " -"und GenericViewSet für eine robuste API-Behandlung." +"Stellt eine Reihe von Aktionen zur Verfügung, die benutzerbezogene Daten wie Erstellung, Abruf, Aktualisierung, Löschung und benutzerdefinierte Aktionen wie Kennwortrücksetzung, Avatar-Upload, Kontoaktivierung und Zusammenführung kürzlich angesehener Elemente verwalten. Diese Klasse erweitert die Mixins und GenericViewSet für eine robuste API-Behandlung." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo index 338e0883c0a9f9e9710768741faff197b0b75227..e8be32ffffb7d2dd3522d08ae2c7c39c3a0251b2 100644 GIT binary patch delta 2744 zcmajfdrXye9LMo5a`7Cw2!eXJh)1E2kVu6THB$;nF_g3fQ}Gy}2pDmRZtUptvYfdb zb6JhDHT}cfS{*IAk=3*&t0gwwx@ftawHoPc>kmzPf6nu;*ZxoYa5vJk>9L@Z;g^TIjcp1}i02$K;k-6;#YNsQU&G@r) zK9rFHWK&jwd036(aVxTR+mFh`VN^0dL}lP}*Fj8TeoIX;V-Cy1c{m3(&?aQ@whxu^ zcTkx)ikkSi+dqk#=nU$)v#6b4$1Y4Iz02`M)Q0}VX1swx4ctuOw8N*-i`!B6cVi{K z=H9=IO8r&TKsJ`NLL%OZxu{Ys!AaPK+Q0!+&3lne+YdM!FO4Pt+EG5EXb00!56nbm zWD!ol8dPaEyY`@d_dc=~>ql+iJZj;C$T6~OsM2^TILWXgR0$ShF?OVqf7R+OZfIqF z$e#`Hp$Y%Mt>_`2D{vQTpx;mnypGyQ5h;Y+y}o}>uI z%yu?#3^i^)>bU{r^$pq?E_7(pSiTNP8P3H<%*8{fOq|9-yoM^#lpJT`a-2>-fF#de zLcP96P>1w5DpRLXsXvFx$Q2x+_kR@m)6T{ri?;=+R5xM_K83?^GpeS~xgJK9?i{L? zmvJ6Ov1*cK^HJZ|qf-6^YP@Zz*Y|mhW`5i2e(@^m!Trd&vSZkVKjCs*&FtFIyV#7! zQ3DsUdeyQ7y;y;|Uxk%e@80i4rT#P2IA35;hwTg(WWz3@O5x*!%~&bw^ln6zW*aJn z2XQv`p$_L&)XpOEogI5n8A(HBG#^!(#i&v?qUPP5PyTi24ss(FKgD?b3ghs5WKH%f z>a|O`-6=sX7SmsbD%CF3!g^3=<89Q0{n&sPu^KB2oN?YnE%0ao`PWWPaYMCAyu)!K zl3goAWuOL?x=z$Y&!86c0_wT_r~%(YmF@&;rx#Eeik;#tGzlB&`_Y3tgIp-pdys=| zeW=rU0eOq;K|)P~&meTtXA+MP_Y%sEn$CxsCS6V3LxdNOm4ptaS|UL*tb!Ou==@m; zQBKqn+SQ$eTBk#}M7mT;)wEExH3X&qPphK0p3r$nAT|*7L_47p%p#T&cN2A*KZy$t zc(^^zXOnyVC@M4e6OR$=2&xo*6~X+(2ts99K`bPOno6|H?M!toLY3w&g5TPjwMZ^>HVO%y>W2sqG1NF~wq&T|s@MAF_As4AM4NjvcQF^u zZfAjO7V7=<5)+8EL`LXG@9JTpb#WiZbT7%w3}q!JM`yOSHw2oRp7eLL)CSt?`~iPQ zTU~2To4>ZMJ}#{`JUEXLdnkL?ArOft>Vce@ozh S2Kr?3E8&6iLo4$KBmV_#q7g^{ delta 2623 zcmYk;dra0<9LMpm+~s}^xhNo#8iM5=A-R-gig76*(4>rOTr?lp442OziH?@hA{J$B z)fRs^m$~P!w%p3hwN{&XVXJ0StMx~XW&P1&X1zbZ-*NNI@AEpp^YA;D?>PrN)bZ8s z;E$;hlSUaPa*4CyX76BsG#`|!^UW6FHH=q7tXTpiU>xS4+Lz*8xCWze8)jf5_RJ&j z9-hDDr9!-k5oSTl=WYF95f)=PUgU*t?7;FwvtHWYO)`tb*kpfzWTXSj#2S7s7gzAy zp5hPiGFI{Y5oY5J)B@vEnIta9EXKE8R5XG8xE^1@96X2gY1fgl?Jv}d!_&<8XGwgp zC@VxwycF}W4VklzpfWLrO6IGm3`{vc#}vl5St|5xmTp!JX{e5xkV)GxD&f}kBin2{QSDvWfJ3hR94h7K zQ5{{z1^5fzjki!+P?Tx53>#4kIDp#oqsUtA6jtCDndDz93ZoaTAO`h95-KAFsI6Gz ztasn{BV*Y?)Wj!I6MhdlHg*zOw0(l!p~EtsZ=$wlU6wzQ%~|B1y0!A5fdV*+1vN&5pXUbFsYQ@#4_nT1f^|OV%^ zf=^NRbp~~+EA#!m>qD(*9QAXrqrN|mx~?;*>w0`K@6(>N#9zpMRR0H2?~kIc>r2R4 z3EDR-TZdx~t8fv^T8{0gjEvzLJc-(>pHUOIh3heWslRo#sO#E;I-Jj=GB$?Vg4a;D zW*Rl|Q&^z;e}#%t{U1hQBKeKR4Ah=3bZ$ZIT>!nafYm%tp|0Kc?)y1Z%Hvsu`pZTQ zT!7lz6|Q|1<}tpNQQ_QJE9$-uVGI6=TFF*sF@SBTj=#h>oWc2c-L?OY4Lr}e_F9&y zlsBXL*?~H1eaKqv5C(N$Pf%gf_8scYI?p{SMq#IsNnZFcsc#u-^j{SzY_;%}%9|3z(8 z^1c2Fi%}VAz(j1pKJ3C6ynxE=56F47i2MBOS&Uo)tJVHLMd&0yP0;Rj6hNh1g)41g zUd`V(RVxXd5f$BrJBu=*?OA(gBlT|gT!Z^uUE_PF{Yl*88gHW%D@_{-&Z3cZZ$H5+ zTw!~dXd{xm7PAe=uMX=Z!d;uLud<-Bi5T>1-mM5)6A$%-_Em*5=%v(q;A4lYJdV4F zUSb=eZ5bl8ZMp?Ia4KZl`_If{_$*OHsFV}h!bUx~vQ_uLiwB+dGGaBsp|yty?N%CvKTd;>v*-kt`H0!|?oe!Ozb;K&7j<{VqTxBOds=D&81M>ipOgu;o5YG_$ z{TxTA=$1U^)y(p7HxWbR5swfYc&{wxb1zXqR1@ul4s<`EgWf<`bs*5&J=ocqKQKJ8 zF)cl`A+|hhUj0ODR&gj0e>y5umzEki@#2ERp|x4F(e8`Fg7Z%~}1MN)! diff --git a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index cfa6c65a..59e42878 100644 --- a/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 Egor "fureunoir" Gorbunov # This file is distributed under the same license as the eVibes package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -17,40 +17,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Balance" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Order" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Orders" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Personal Info" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permissions" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Important dates" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Additional Info" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Close selected threads" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Open selected threads" @@ -58,78 +58,102 @@ msgstr "Open selected threads" msgid "authentication" msgstr "Authentication" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Open" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Closed" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "User" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Staff" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Obtain a token pair" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Obtain a token pair (refresh and access) for authentication." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Refresh a token pair" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Refresh a token pair (refresh and access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verify a token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verify a token (refresh or access)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "The token is valid" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Create a new user" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Retrieve a user's details" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Update a user's details" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "partially update a user's details" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Delete a user" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "Reset a user's password by sending a reset password email" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Handle avatar upload for a user" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Passwords do not match" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Activate a user's account" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Activation link is invalid or account already activated" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Merge client-stored recently viewed products" @@ -175,20 +199,21 @@ msgstr "Account has been already activated..." msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token is invalid!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Groups" @@ -196,7 +221,8 @@ msgstr "Groups" msgid "wishlist" msgstr "Wishlist" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -207,78 +233,33 @@ msgstr "Attributes may be used to store custom data" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"Language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adresses" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Open" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Closed" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "User" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Staff" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "For anonymous threads" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Chat thread" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Chat threads" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Provide user or email for anonymous thread." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Assignee must be a staff user." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chat message" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chat messages" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Valid email is required for anonymous chats." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Message must be 1..1028 characters." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "We're searching for the operator to answer you already, hold by!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Assignee must be a staff user." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -296,91 +277,119 @@ msgstr "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "User's email address" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Phone Number" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "User phone number" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "First name" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Last name" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "User profile image" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Is verified" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "User's verification status" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Is active" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Unselect this instead of deleting accounts" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Is subscribed" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "User's newsletter subscription status" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Activation token" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attributes" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "User" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Users" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "For anonymous threads" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Chat thread" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Chat threads" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "provide user or email for anonymous thread." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "assignee must be a staff user." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chat message" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chat messages" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Group" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Outstanding token" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Outstanding tokens" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Blacklisted token" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Blacklisted tokens" @@ -443,8 +452,7 @@ msgstr "Hello %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "We have received a request to reset your password. Please reset your " @@ -528,31 +536,31 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." #: engine/vibes_auth/views.py:67 msgid "" @@ -569,16 +577,10 @@ msgstr "The token is invalid" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.mo index 3264ec03dd191f2afdba41ac13d1e22b6bce3c5c..4ba458219b39f78e04e9865b09caf9a6cd803f9e 100644 GIT binary patch delta 2744 zcmajfdrXye9LMo59>8-z1Ox<>;3yUl5~UJ?sGy>GBN0pS21lSo!H`R=89S+w8|$)S ztwuSumVczx*3mBF)M{&PQA3NhIdRLaHM@}2*1CzkKj%Db_E*30J+J5Yob&uH-|z3? z?6yDa{8uK0zi6~hB8~XUW%fEgJ)RF*N|aeTrs4#gi!oS^(OBi&uffUmn=lghV-oh@ z_As-#}SNYeoIX>V-Cy3GF*Tf=m});b{LiN zcTt%*hno0Pr+)!8(buTwuAp{4id~pWde`Gis15y$&3F_28n~IlX@`5zg9lLepT|l( zqkYi;3pi1MR;3UHeP$gJ_Mc9!_{#C1YxS^Gu zLH_I_ADZw->_#{F+=$Pj2D*k?;3#S*@%&f|s&K4DP1K5P)()aFcM>(vDb({{__@%7 z-#9mZLl$k39NF731C^n2)IwL{0o;ggyoyTo52z9(-e$(1&ErFFQ8ntYp5a3o8AfI3 zdsN2!e>h)+b8?i*cvLB}k@I2ssQ0%VmCCohp;}%-?PwJBI~R4*>zj(2_^0VS$NjZ4 zLL2Bujr$Smx%0^D>$lIj(4mQA`8p)?u@rrngRh}7F@SUMS5%3zvO*J=VIlqXNb>AC z)a!c;bx2R6GBtoo{SdNeyM|GE|J~$IJ4-+oZwpbW_F*Kp;CSpr)zt6!CaQEps9Ju9 zW%w78EGuF4`hGJi<-1U&d>r-q?o*%n?HMjKQ7`JjKIB~4DeS@_T#r@Et{ol2X6#1| zoWtr>%R=tjD`%w#f0d+Qxq9#0tjd&TWacO>NoWrOEp3Eoz+R1rtXyp-ihfGGY zYdNS4tV5-)2{qAf)PlNE&-I}OJdP^eS=3H1p)zFmgccf!JLx8&8~6ITP^x>7gKYuS z>AZxzMfL!prorbDI_bqk9kGN^cGPq})HLZk zQBP=B_Y!KIA%Z2+rBbSM*S#93>hIU_LQ}3*lp0JkQBi`KJ3n__#!IZ)A3^EuQ<_nJSYSxqpZ;S7L#yBza NmEah8fy%rQ*T3Wb65{{> delta 2632 zcmYk;drZ}39LMo59PW1kMTF#{1Xf@LXb35XL@P`#MJ6iVK%ls&z*e$4ZAF%OsWCRn zTDX?|(`I!x`={2HW@|D>lB>1lpjH0UjBYEYYrQ|e^Vodm_q?9pbI$L%e4poG&h7qm zSKxAL#HdjQiEQGm&+JX?j^=|h9c#82XD~qxab}5-i1C<(YA?hEScXwphx4%sJHrUP zjpwg;X$fA(2(y6Y^0t0hfVX2MPVqtqwqa$GSr_f&$!3ulml7Hv1?j*tu!i4d;~hM2 zpBEb7Fjn*YJ}$!FPzy{*Wsb%8p=IO6`7B%8%nM_!;W9Orx%AEg#B68!9vVP?-w2_Lor^42)4x>QA9= z!D-Zeoj{%H^4!qg?L@6;81=hDsPD&7*L4Clf$@Car#*6MXd%6*{s%Auhfvq`S>&t) z>h%7N+LC0xRO(8x3fH4n^gL<>hfo=L6_t^n8g$L-k;z*dR^Tzz)_jSY$hW97@C$07s1mY; z`M4Pmqx$(7HKA*$i6<=&O|;Ir4K+^Ra`LYgzfOZv^&x7Yk5C<*N3C!g)#2}`t%|%e zw8C6eM%G~xZonsS3&!9VsLW0x=hfzri)FcYnQ;khgZ6(1p_9Cmpxx`JA2o9ouC#@F zwa~t)x`xmhQPFLN8r<*d8s9tZ+py0y-asi1gx2d215I)!rAju>OJtW#Z?}`Rzmw- zM`&9H2yL5gfexGs8TS4&^DsV6R1+$dgto9r53W3@`@e?=o%RZ%l;E)1Izs!ENZd=* z5^TNqr}lpABvc+E9wQ#rgDW~8Iy)2#aE*BREv+~~Z1=CZqeZl&))X0(N7QPTH&-^j^|8Flu1!Ia9MUJd3 Lek~YVGVA*fnep+M diff --git a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 35f3633b..c6227b91 100644 --- a/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Balance" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Order" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Orders" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Personal Info" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permissions" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Important dates" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Additional Info" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Close selected threads" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Open selected threads" @@ -54,78 +54,102 @@ msgstr "Open selected threads" msgid "authentication" msgstr "Authentication" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Open" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Closed" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "User" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Staff" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Obtain a token pair" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Obtain a token pair (refresh and access) for authentication." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Refresh a token pair" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Refresh a token pair (refresh and access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verify a token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verify a token (refresh or access)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "The token is valid" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Create a new user" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Retrieve a user's details" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Update a user's details" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "partially update a user's details" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Delete a user" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "Reset a user's password by sending a reset password email" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Handle avatar upload for a user" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Passwords do not match" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Activate a user's account" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Activation link is invalid or account already activated" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Merge client-stored recently viewed products" @@ -171,20 +195,21 @@ msgstr "Account has been already activated..." msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token is invalid!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Groups" @@ -192,7 +217,8 @@ msgstr "Groups" msgid "wishlist" msgstr "Wishlist" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -203,78 +229,33 @@ msgstr "Attributes may be used to store custom data" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"Language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adresses" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Open" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Closed" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "User" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Staff" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "For anonymous threads" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Chat thread" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Chat threads" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Provide user or email for anonymous thread." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Assignee must be a staff user." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chat message" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chat messages" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Valid email is required for anonymous chats." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Message must be 1..1028 characters." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "We're searching for the operator to answer you already, hold by!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Assignee must be a staff user." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -292,91 +273,119 @@ msgstr "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Email" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "User's email address" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Phone Number" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "User phone number" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "First name" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Last name" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "User profile image" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Is verified" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "User's verification status" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Is active" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Unselect this instead of deleting accounts" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Is subscribed" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "User's newsletter subscription status" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Activation token" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attributes" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "User" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Users" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "For anonymous threads" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Chat thread" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Chat threads" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "provide user or email for anonymous thread." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "assignee must be a staff user." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chat message" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chat messages" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Group" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Outstanding token" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Outstanding tokens" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Blacklisted token" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Blacklisted tokens" @@ -439,8 +448,7 @@ msgstr "Hello %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "We have received a request to reset your password. Please reset your " @@ -524,31 +532,31 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." #: engine/vibes_auth/views.py:67 msgid "" @@ -565,16 +573,10 @@ msgstr "The token is invalid" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo index a53237bd9de7bebdf78dbb0ea7e4e0b2644dc932..1bff057b11dc48c2f582725ddb826b25afd397a5 100644 GIT binary patch delta 2821 zcmZA3d2Ccw6vy#1Kx+qD%F;q>fxc3)lnO1B%2rt_1zBVl+R8T2X&IP}Ss+TtxIiFi zjMxZb0z!-?ZZUDhASzKvG{nRR7{x>zCHjYv)GaCr3VwexuZemyXFl(~dGEe^&poej zY1^?-s(VPkr;WCg7(sm2*X((G{1(1wCH>7tVJYV0R4l+|9Dpm`^BZs&{UGMzqgadw zaEr(6IF6(5WspjojQz|~*1~}0VE*?~tOH(Dh&aot$F zgZ{R`*@2(I+4SGVTk&ty!b*nlP;9_b+=|6K-}Z1Yg%i(W8D2!jv>xQyb`!PI!l7n- ztc)*Zq!w9}Ex{UW#d6$>%-voRRA(OY` zsFc5f%EbGq2Y=}HFQ6Xu1?s+T)XHz*ZY(9eYw$2?K|f&#Z(>RVhuAo+a2I-UAL{%; zT#nDV=YK(^{yJ(P8%|nb5Z;c}sI6FrV{tcX0WYHV{1mci`wAQJ=i%gED;m!zT0uSP zhUut`EXE4lfZCdeU5}!!dmEXHeT-Vb71YFgkTSBrP+Q|=!%2oUptfKkPQzp=`PW{( z&I!%z4DzvyeCdH#aWCeP&o+DlHP8>J3En`hWH1+NLQ7mXq8=1O7HdaQnLCMk&S}*B zpQJd@jo-Q_enTd0xs>b}EJtOi88y*GxDVSf53it7{Ud4%ibk68u^D{nEo#MD`e&$E zZCMYhxNjiaZ>d5mMkyPEs_J@FwXQ&|v<=TOPz3AsJNr?Mov4W&L_P2@F6zSy@g$MYWczlnpn{E*Kw#^Z9FjwvJ=b{ZZ094FzQ$Xsk3vry(1 zqV8XdRd@n5@$;zK=tkAX@2H7-*cWA_9KCw~mvV47Ct8t7+fh`i&tfiKK&|vL)?v46 zA(f@QosHVE7MzFM@h&`tn!q2ZJul$ZkQJzL8!(6GTcdlT36+5bs3P2nVLXT%P(P|@ zHsT(PqxSL|4nXgOY}FT|7BCv`!-<%O`&^$yZS@gMDP^ZPP-?%yCLBtBCgW-(YxWrG z{XL0V>6fUK|BC%^3Te^aHew;pMQzP0&ATKvj4r&O*&}2Wo{!un12eS+}>)!S7HD$!W-DsuD@2%}1qv2M)m$?#HK4nJP>1 z6kY(UL8WR1YNd}LZ&7CdAanCnoI>dB*i2{(sI5#}j@RK7NWXYPRt?H1`(Rr z5`wo?^`G5yWucwW>Uegh?Q|XHs)?y-!fG1{YV$v>h29oI6+V#IN^}qjqLr9ItR!X; zY)L9pC@M0w9Yip5#2*|SOWaFrCprmbNZX+15d8@iU>mWJ=xy5DRc?o^&onZg`Bzb| zCS~I`)<2U&wmhD+|BO~+9?{$MrY!62xK{nIe?R@jMBF`J zy_AEH+gadRiF(hyLlF@cwLRaXws<_kcPxu1Cu1O^aJkhSk{F<%{B}M5^OM-dn zT@_pNx|&DTrN6Hpo?GkNoJjhDfd_ptC+drBX0VVy%s{~iWB3yK_B+Wi!zO*PK&0z> t?d7^?EE0`yZ6wTH?hj7H@rQV#M)5gY0>Oym3!h7e1EI)-^u;<)&OZztEuR1Y delta 2645 zcmY+`dra0<9LMo5SGfj)2;}Vnxs(Qi;0>q*r5goEkw^qmA`tMPTw1dWb|GvNZDTMu zOKYaf;a2T&vsv^FbAIrg-#Op!IqI>F zskXkK;(~{b)=MlUE(DpqiR}ycpj`_$TaMEhr3Vpa(GZQ1xCHe)6BlDXhGH2eU=_9m z5V(r*H+*R&&SS7ypLzJUelZ zR0f7oFFxvyPoZ9P2K7B3YR6OfJkH>DY-g9+$OY`cZ?R7kmrywEtP&}+)uEp6#%;=@qhfxcD8#y-i9o@=xD(@SzuV zV?Q3oT1+61nrIJdLH($eA3-hjvg^;N7yW~5&eE7nnJPl-(-?-W9ATxl3zhPtxC}o<-Ii;(hH)u(Rwe319pZk}As<0y>J0M7 z`p)yI)A<8xr_(sjM01$O_`HX!f-|UvC8hXZxE$|dT!dwT)EG|(m`zY<9lE{jMhl)r z&HuNnR{c4@7lvDP|0greviOBWwpDYDINrc5IE!hz|9KQnsjfjC!e-P?y_kbNt|w8oy@D#)4Bmqaxcqlw zIqJm+Q8ho|dJZ-3CDgo=?)ZDm;{A4&jt*focgKsF*nlIbLo*vg zMQz|iti}lp!)4iiGmvW98dRprQ5k(2`%37Xrjw7qAz85$PLS?v8EU7Us8k=oVEhtQ z(@BiMA5kUw1(mUR*DMC9jO$S)coDU*bUlfj zGaGZqSFwZfU)Y3AY)d7$get*xEWS=TJKu#W*~R2XF$FnaXwkYq}FjiVdJPdJee+_Mqy&lh{Bs5^Th& zWj7WPYFugKhB;03Q@fkk?)3brbh{2a_|$>p9sg_1?nou?a{GF}v-8KX(|vdot&~IV zTuYq`Wkl!UW=o@UFHuWqw`v;+9X6FCh)^RL&R<&U>+cM&IVfwbQ3|j zoqxe}uQP~fLU+5AQ2lfU?ju?VwTFlr;!zFU#y(=p;uHYP#opou2?mR@~j) z+U#v=@^thL6~r&{ZHy=k45%E6NM7yhjv5Q~Rm8`I485H6s&8HL{xE*v&0Re7Qffk6 oV^^c6rM11&)94-dd0RU=vwde%+QNJls}e(pMsmJ8aV$6FKh@C!*Z=?k diff --git a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index 9d568397..9c158076 100644 --- a/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Saldo" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Pida" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Pedidos" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Información personal" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permisos" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Fechas importantes" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Información adicional" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Cerrar los hilos seleccionados" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Abrir los hilos seleccionados" @@ -54,80 +54,104 @@ msgstr "Abrir los hilos seleccionados" msgid "authentication" msgstr "Autenticación" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Abrir" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Cerrado" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Usuario" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personal" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Sistema" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Obtener un par de fichas" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Obtener un par de tokens (refresco y acceso) para la autenticación." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Actualizar un par de fichas" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Refrescar un par de fichas (refrescar y acceder)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verificar un token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verificar un token (actualización o acceso)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "El token es válido" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Crear un nuevo usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Recuperar los datos de un usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Actualizar los datos de un usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "actualizar parcialmente los datos de un usuario" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Eliminar un usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Restablecer la contraseña de un usuario enviando un correo electrónico de " "restablecimiento de contraseña" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Gestionar la subida de avatares de un usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Las contraseñas no coinciden" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Activar la cuenta de un usuario" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "El enlace de activación no es válido o la cuenta ya está activada" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Fusionar productos vistos recientemente almacenados por el cliente" @@ -174,20 +198,21 @@ msgstr "La cuenta ya ha sido activada..." msgid "something went wrong: {e!s}" msgstr "Algo salió mal: {e!s}." -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "¡La ficha no es válida!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupos" @@ -195,7 +220,8 @@ msgstr "Grupos" msgid "wishlist" msgstr "Lista de deseos" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -206,8 +232,8 @@ msgstr "Los atributos pueden utilizarse para almacenar datos personalizados" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "El idioma es uno de los {settings.LANGUAGES} con {settings.LANGUAGE_CODE} " "por defecto" @@ -216,68 +242,23 @@ msgstr "" msgid "address set" msgstr "Direcciones" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Abrir" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Cerrado" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Usuario" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personal" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Sistema" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Para hilos anónimos" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Hilo de conversación" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Hilos de chat" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Proporcionar usuario o correo electrónico para hilo anónimo." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "El cesionario debe ser un usuario del personal." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Mensaje de chat" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Mensajes de chat" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Se requiere un correo electrónico válido para los chats anónimos." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "El mensaje debe tener 1..1028 caracteres." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Ya estamos buscando al operador que le responda, ¡espera!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "El cesionario debe ser un usuario del personal." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -296,91 +277,119 @@ msgstr "" "verificar las cuentas. El modelo User está diseñado para manejar casos de " "uso específicos para una gestión de usuarios mejorada." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Correo electrónico" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Dirección de correo electrónico del usuario" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Número de teléfono" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Número de teléfono del usuario" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Nombre" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Apellido" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Imagen del perfil del usuario" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Se verifica" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Estado de verificación del usuario" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Está activo" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Deseleccione esta opción en lugar de eliminar cuentas" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Está suscrito" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Estado de suscripción del usuario al boletín" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Ficha de activación" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Atributos" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Usuario" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Usuarios" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Para hilos anónimos" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Hilo de conversación" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Hilos de chat" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "proporcionar usuario o email para hilo anónimo." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "El cesionario debe ser un usuario del personal." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Mensaje de chat" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Mensajes de chat" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Grupo" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Ficha pendiente" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Fichas pendientes" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Ficha en la lista negra" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Fichas en la lista negra" @@ -390,7 +399,8 @@ msgstr "`attributes` debe ser un diccionario" #: engine/vibes_auth/serializers.py:93 msgid "business identificator is required when registering as a business" -msgstr "El identificador de empresa es necesario para registrarse como empresa" +msgstr "" +"El identificador de empresa es necesario para registrarse como empresa" #: engine/vibes_auth/serializers.py:113 #, python-brace-format @@ -443,8 +453,7 @@ msgstr "Hola %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Hemos recibido una solicitud para restablecer su contraseña. Por favor, " @@ -528,14 +537,14 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Representa una vista para obtener un par de tokens de acceso y actualización " -"y los datos del usuario. Esta vista gestiona el proceso de autenticación " +"Representa una vista para obtener un par de tokens de acceso y actualización" +" y los datos del usuario. Esta vista gestiona el proceso de autenticación " "basada en tokens donde los clientes pueden obtener un par de tokens JWT " "(acceso y actualización) utilizando las credenciales proporcionadas. Se " "construye sobre una vista de token base y asegura una limitación de tasa " @@ -543,18 +552,18 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Maneja la actualización de tokens con fines de autenticación. Esta clase se " "utiliza para proporcionar funcionalidad a las operaciones de actualización " "de tokens como parte de un sistema de autenticación. Garantiza que los " "clientes puedan solicitar un token actualizado dentro de los límites de " -"velocidad definidos. La vista depende del serializador asociado para validar " -"las entradas de actualización de tokens y producir las salidas apropiadas." +"velocidad definidos. La vista depende del serializador asociado para validar" +" las entradas de actualización de tokens y producir las salidas apropiadas." #: engine/vibes_auth/views.py:67 msgid "" @@ -571,18 +580,10 @@ msgstr "El token no es válido" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementación del conjunto de vistas de usuario.\n" -"Proporciona un conjunto de acciones que gestionan los datos relacionados con " -"el usuario, como la creación, recuperación, actualización, eliminación y " -"acciones personalizadas, incluyendo el restablecimiento de la contraseña, la " -"carga de avatares, la activación de cuentas y la fusión de elementos vistos " -"recientemente. Esta clase extiende los mixins y GenericViewSet para un " -"manejo robusto de la API." +"Proporciona un conjunto de acciones que gestionan los datos relacionados con el usuario, como la creación, recuperación, actualización, eliminación y acciones personalizadas, incluyendo el restablecimiento de la contraseña, la carga de avatares, la activación de cuentas y la fusión de elementos vistos recientemente. Esta clase extiende los mixins y GenericViewSet para un manejo robusto de la API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po index 727dd586..ea682bd9 100644 --- a/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,40 +16,40 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "" @@ -57,78 +57,102 @@ msgstr "" msgid "authentication" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "" @@ -185,7 +209,7 @@ msgid "" msgstr "" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "" @@ -193,7 +217,7 @@ msgstr "" msgid "wishlist" msgstr "" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:68 msgid "avatar" msgstr "" @@ -212,68 +236,23 @@ msgstr "" msgid "address set" msgstr "" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -284,91 +263,119 @@ msgid "" "for enhanced user management." msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "" diff --git a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo index a7b420bf66520f3bdb3254d77d9f1ee74577b5fa..66565a9822502d1ee9f03e472b6b4923594bb99c 100644 GIT binary patch delta 2776 zcmY+`d2Ccw6vy$?LZ=-l(3Y0AP~a8RQYzFIDqGnq1!do4-==h+g()qwh=hcb9X|8~vfB zEf~F+)AgXywh%?cg)U}Ca9=tfw1RGC1F#S?aWwY8TI`Ms-21Ds5B&go@L9~mz1Waq zb{L1!_cF*}9En}cqPBz!eQ_mz%NIjfkJEaZHFE#$US?_7Co4H{5%Qo7#u~mi1Rtiq zF*`Z%D>#Y%$JiI|pf*;J!=zY+g}4FpnBR7BF^U_nVm~~OjA`x2+;$JO(_X#J__Ka| zC?n;_rffEr;ZhukyOFiqo2X12LnZShDg$R++cBH@tuWV&IjjsP;{?<|JCMcOVN}ZB zM`hv@)WmIW{~T(f?@-TOMD6@8ZpT8>yBJ?aZRi>{;XRCM;3f`EJKTm|Y(?FF5$ECS z?)@96)c=DT$nr@mWZ^?tiaLt9I0Uz&HgFVm=Espu+mBd{*YnB0b~KDpw1W|-2gaf@ zG82n&HR@=daXp0k-U(za_7!Ramr)CEN6N@% z2Y+^NbRdg14<-8`4n$?B7PZhB*owCx&6)fvvGXrEn14B=%1!yb!0bD z#qFU`G;cJY3$3ISRn^s~qgaj)U>$zXK&@Coe+}m`0$)OXuMPFw*SIH@jNy$GUSl5K z&wW3uQcZQB7JLVFRGt#EUsE{$94>0P@fX|B1mjE1W??fb1E)~M^9xpDI(Z$0V^K%3 z67_r#8On~MHgpM5+Iq0N zYYp-S*;drR2XHg!P&r0b?KNEJOjqDz_yUf> z3rK-mPtIi;mLm0On^8O6kJ`~C)Wla%19zY@SnX^f=3xs?z&%J3>~qutZ=y1i$~&cn_ea&t6m&3v)UoZy8vGD5@fPNw zXEgtv!9vW&V^J=&;x=S#yN=pX3Hj$OvL^{OJSbLv~#sJ1V#S8wuD{-p*KfG zw}Dtkgo&lZIAQ@Yk??DNr9l}`dy3Gxsx=cz=(%lWa63d9`L}%04 zE_6GTR-$p_iK82j70FwCvVWa3b(HwE^Pvjm{`NQ>{orgOstLUbQ;GS6et0@tntRa$ zgTxBA-{LA%d@BjnlIko|`5#E|iYI=b^^3(1R-$SrA!YDi>%x_4gJMqnpV1=BAUc~0 zb#7imw+359*@);W=oKR7%-sCRDKfMB@M7YJ;1A}#g4u)d*xD+xLE{;;nx5UVWM zo6-`i&Mb?aE69z1Q*b0B{zY-E*E_Ss7Y+v->mso^1BS;>cz;I%^G`OU&)W z!k8}m!?oEK?XnM?%s-^LHn)~*y+6-+{G;Fep4abrIM46${e7R~ z^w8zOz?Jkx<3<}MmJ;Wq%uZncVm@eBSIPI(nIcD2|y1yHnai4pC z8kO=3sDUow68r=2#eY#pknb_O4_ih}qQeTV@1TxmjW@iIIxqRBZykJSB0rAe zTiA(N6E~MAgb|jKd_})h6^{f!_aKI!e(ojKNc=_w@r@gHx{asNad@l(+^g!xpT^^>`A= zzFk2b=|89iWIhlcZy9R*eD}H-E1BQQ=;*<{7{nvkkGUn`GaSP=xjunfXyJq5YOh4? zXbUD_3qFTksM`4wRfIFB%v?kj`#kDMBOW6E8|jqOslZo|0=5u7hCd>8XW5*OcIrdz zXcRT^QPjW_sLY(fGW-h5@itOMR_qHG>sHi4{iuZmeB@uLJkAY$aSAK(0xAOuEK|j{ zAE_^U2Pp&l3{@M~aTpgf>q|I-8u$igU=*upMh|KueVB!#_$W@6lYcg8zi~q=OW?qj z0S{83=0g=%2j=4INWI$oSc~6dA|~_BrDG1hizS$b-=P+K8TqP3uM2Oe8hHt9tIq#f zg1Tww`Erdf^?pU55@nRcP$#f33&8(!z(_zUFtT{TbZr z-n@%a##`eYiFQFO-f_ifP2iuG~|0LoOLO(RTHO>#q7VIU|8i=Qe?YeNA>L-)XdHaY);%?jJc6Q)4 z^_72B?nWY&*hCBvFA&*;ic(EQ_OjCp7vl5uV~G{S;{-nqPFu<6AfdOVhS*8yP0-uq zA({!R@%#IF_H=jW4h#n?GcrT#;;SMfnu77(qL4rF^O#U$MtXGcjU@*|<=#(YgPTjY Yhi>L=iVO7?eG(IF_x%}~EIkwbA3+E8&;S4c diff --git a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index 7bb00050..159bc134 100644 --- a/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Balance" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Commande" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Commandes" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Informations personnelles" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permissions" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Important dates" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Informations complémentaires" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Fermer les fils sélectionnés" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Ouvrir les fils sélectionnés" @@ -54,82 +54,106 @@ msgstr "Ouvrir les fils sélectionnés" msgid "authentication" msgstr "Authentification" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Ouvrir" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Fermé" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Utilisateur" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personnel" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Système" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Obtenir une paire de jetons" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" "Obtenir une paire de jetons (rafraîchissement et accès) pour " "l'authentification." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Rafraîchir une paire de jetons" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Rafraîchir une paire de jetons (rafraîchir et accéder)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Vérifier un jeton" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Vérifier un jeton (rafraîchissement ou accès)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Le jeton est valide" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Créer un nouvel utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Récupérer les données d'un utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Mettre à jour les coordonnées d'un utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "mettre à jour partiellement les données d'un utilisateur" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Supprimer un utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Réinitialiser le mot de passe d'un utilisateur en envoyant un courriel de " "réinitialisation du mot de passe" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Gérer le téléchargement d'un avatar pour un utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Les mots de passe ne correspondent pas" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Activer le compte d'un utilisateur" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Le lien d'activation n'est pas valide ou le compte est déjà activé" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Fusionner les produits récemment consultés stockés par le client" @@ -177,20 +201,21 @@ msgstr "Le compte a déjà été activé..." msgid "something went wrong: {e!s}" msgstr "Quelque chose a mal tourné : {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Le jeton n'est pas valide !" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Groupes" @@ -198,7 +223,8 @@ msgstr "Groupes" msgid "wishlist" msgstr "Liste de souhaits" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -210,8 +236,8 @@ msgstr "" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "La langue est l'une des {settings.LANGUAGES} avec la valeur par défaut " "{settings.LANGUAGE_CODE}." @@ -220,71 +246,24 @@ msgstr "" msgid "address set" msgstr "Adresses" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Ouvrir" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Fermé" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Utilisateur" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personnel" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Système" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Pour les fils de discussion anonymes" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Fil de discussion" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Fils de discussion" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" -"Indiquer l'utilisateur ou l'adresse électronique pour le fil de discussion " -"anonyme." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Le destinataire doit être un utilisateur du personnel." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Message de chat" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Messages de chat" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Une adresse électronique valide est requise pour les chats anonymes." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Le message doit comporter de 1 à 1028 caractères." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" "Nous sommes en train de chercher l'opérateur pour vous répondre, attendez !" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Le destinataire doit être un utilisateur du personnel." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -304,91 +283,121 @@ msgstr "" "modèle User est conçu pour gérer des cas d'utilisation spécifiques en vue " "d'une gestion améliorée des utilisateurs." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Courriel" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Adresse électronique de l'utilisateur" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Numéro de téléphone" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Numéro de téléphone de l'utilisateur" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Prénom" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Nom de famille" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Image du profil de l'utilisateur" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Est vérifié" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Statut de vérification de l'utilisateur" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Est actif" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Désélectionner cette option au lieu de supprimer des comptes" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Est abonné" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Statut de l'abonnement à la lettre d'information de l'utilisateur" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Jeton d'activation" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attributs" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Utilisateur" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Utilisateurs" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Pour les fils de discussion anonymes" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Fil de discussion" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Fils de discussion" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" +"Indiquer l'utilisateur ou l'adresse électronique pour le fil de discussion " +"anonyme." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "L'attributaire doit être un utilisateur du personnel." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Message de chat" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Messages de chat" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Groupe" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Jeton exceptionnel" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Jetons en circulation" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Jeton sur liste noire" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Jetons sur liste noire" @@ -426,7 +435,8 @@ msgstr "Jeton non valide" #: engine/vibes_auth/serializers.py:243 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" #: engine/vibes_auth/serializers.py:245 msgid "user does not exist" @@ -453,8 +463,7 @@ msgstr "Bonjour %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Nous avons reçu une demande de réinitialisation de votre mot de passe. " @@ -471,8 +480,7 @@ 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 :" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -504,8 +512,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " 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 :" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -540,8 +548,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -556,11 +564,11 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Gère le rafraîchissement des jetons à des fins d'authentification. Cette " "classe est utilisée pour fournir une fonctionnalité pour les opérations de " @@ -575,8 +583,8 @@ msgid "" "Represents a view for verifying JSON Web Tokens (JWT) using specific " "serialization and validation logic. " msgstr "" -"Représente une vue permettant de vérifier les jetons Web JSON (JWT) à l'aide " -"d'une logique de sérialisation et de validation spécifique." +"Représente une vue permettant de vérifier les jetons Web JSON (JWT) à l'aide" +" d'une logique de sérialisation et de validation spécifique." #: engine/vibes_auth/views.py:80 msgid "the token is invalid" @@ -585,18 +593,10 @@ msgstr "Le jeton n'est pas valide" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Mise en œuvre de l'ensemble des vues de l'utilisateur.\n" -"Fournit un ensemble d'actions qui gèrent les données liées à l'utilisateur, " -"telles que la création, la récupération, les mises à jour, la suppression et " -"les actions personnalisées, notamment la réinitialisation du mot de passe, " -"le téléchargement de l'avatar, l'activation du compte et la fusion des " -"éléments récemment consultés. Cette classe étend les mixins et " -"GenericViewSet pour une gestion robuste de l'API." +"Fournit un ensemble d'actions qui gèrent les données liées à l'utilisateur, telles que la création, la récupération, les mises à jour, la suppression et les actions personnalisées, notamment la réinitialisation du mot de passe, le téléchargement de l'avatar, l'activation du compte et la fusion des éléments récemment consultés. Cette classe étend les mixins et GenericViewSet pour une gestion robuste de l'API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/he_IL/LC_MESSAGES/django.mo index a8f728e31e5906b9290f280be8d7b235a9f132c6..48db7e381d242ae00675105925524cf2d9d99211 100644 GIT binary patch delta 2778 zcmY+`d2AGA7{~Fa(3Z9=Lg}^T>a;~UYB@?F?-sgR0 z%Z-Mv#+F+{qYoKvCozJ!+28DaY#qRc=1(vih3V+SX*dWM;6PmI9p8wl^y@Gd_hJej z#H~?g$8kLUcy5x7`50~1Vr$vaiRqK3)4yO8a#}e(C=7}kFZ5Iu4myi!&fmL51@{> z;c`6Y9sdKB`hQS2vNX~PL+~jahgyndI2L!ICU6S1=AR>zwjZzvd(z0iW|YfaG=nLq z3ud4)Qihqh5w$dXJUdY5okyOZuBea0Ux4flE}$=prxLhPy;n0leG?1=DJYhTtHoa zrG*_`_>*_wPvoI3mXduEGf){?fO^oycmUU79NtEy`Zv@PB#$)XV>8+4Eh@(;^eCPp5(1C{EJJU_ur^e^CG96l-XeGY2v^HKF@3)x`|+k&gH4QJwA zRO&}hj{KySpi+MTm*6Q>rv5@r;1Q~3e0h=UCgF7YE6~AKR8gNn>eX)Kk$q5D2ch>{KTajY3St4#*Yq>3Hi&2> zRG?}N5yD&koY;C|Ady1&l>ZDuYp-`y@BMfpNX#bm`t-H_?5OxC=J5ZFR%0B|*LYjQ zzY~3Zsp5RRy+Ego2zUp_J;zSH*Ll`68~ucStul$t#E8xx<2Ur{tnqynJ2DWct=Umk z<jr@{#|Ra93y!9Z2xgwCv_qGhb$vEY!7_};6_|W zrsI8#H>X7(a2Tr@e~5SEEz|~+{45gZU^dUUO?0$?XK*3Diqr5sGN)Zbo^5}kb{v;( z#{ZVW2b;2)sD;nN9Be|?Z2M7}ID|^(Yp4tyb)LmEo^LnlFt=HTSq-G4CTc(yZ9S-z z_n|T{fO_zt8xNr#^a1L=2x`Y8_yXRdJC?` zz3%#XRLU=*Cc2DM@jA}Je^9TWAj_-}>roqc4)xCak-ge5R^gXfd>knoJB4i8K0~kQa1rA>s8_QfJGzj%Z1PXv8u`$J zy0I6JU=wDNM@_UFwV+Op@ao3nf-Q>Lm=JFY?9-+;QW&5iem=&&g3 z#{wKeW#ntrO25ZGyow3fP6;cuU8s}~;tV{4IxSbQlyMzrRu6m@wSmKKeB6yc!ns@z zU7(|hZ=>FkD(D&$<>LZ|lXA_L;u6&N4xp;N4_9CWL$PN6;_Vpv`DU+keIKjS_Y-GF zi`DO(fv5RiAui|ZHde@4|GVh;xG;#iVF;D_2x{Up&fifB%b>)W%PO%7Td*8Y zpkC#V$jP!lFcA~Tvx?J?dQJe7um~%7zE#lCJKTeB;1LXB-aJ>7sFWT-?L7DX=tNbR zz<8N6h+7ypVhVohu3tpe!U$4E_6za|i=9vY*U*_yrxN>6DL;$Vcpa7US;f&**P(V0 zM(yBjRLz`3-S;g9@D{3={Uy<#+zM3Y8c_E=k7;4ss!Yr%=^<2{+&b21?~t zq#kV_2JlT(CO*LzaRhs?p)C6MuTb~hz|9z29$nxz)Itv819-BW{0Hd##s%%nN6Bl) znW%SPh7_u8L<-w_F%RFz3j79DEAb1XMVg5NjOU<=@ibC4Hi}Al95>}+F~;CydjDGp z{%%_dGUrX$jVdlRjDxkfDer9#dRB&q4tXB(9;L}7kp{4@&6ZIOn_NdN(3jd{sns&RVc}X3Z;(V)Og2qIkpjMD~WZ)8Vy`iVP+7NhEd11iWqO(T}Q?JxcbWf z4&p%~m3WBgB%UIs5R(Zt9h*H~FIuqM=??t0Qyse2I}AMPu>d{*o`kk\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "מאזניים" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "הזמנה" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "הזמנות" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "מידע אישי" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "הרשאות" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "תאריכים חשובים" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "מידע נוסף" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "סגור את השרשורים הנבחרים" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "פתח את השרשורים הנבחרים" @@ -54,78 +54,102 @@ msgstr "פתח את השרשורים הנבחרים" msgid "authentication" msgstr "אימות" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "פתוח" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "סגור" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "משתמש" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "צוות" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "מערכת" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "השג זוג אסימונים" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "השג זוג אסימונים (רענון וגישה) לצורך אימות." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "רענן זוג אסימונים" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "רענן זוג אסימונים (רענן וגש)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "אמת אסימון" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "אמת אסימון (רענן או גש)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "האסימון תקף" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "צור משתמש חדש" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "איתור פרטי המשתמש" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "עדכון פרטי המשתמש" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "לעדכן באופן חלקי את פרטי המשתמש" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "מחיקת משתמש" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "אפס את סיסמת המשתמש על ידי שליחת דוא\"ל לאיפוס סיסמה" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "טיפול בהעלאת אווטאר עבור משתמש" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "אשר את איפוס הסיסמה של המשתמש" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "הסיסמאות אינן תואמות" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "הפעל חשבון משתמש" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "קישור ההפעלה אינו תקף או שהחשבון כבר הופעל" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "מיזוג מוצרים שנצפו לאחרונה המאוחסנים אצל הלקוח" @@ -171,18 +195,19 @@ msgstr "החשבון כבר הופעל..." msgid "something went wrong: {e!s}" msgstr "משהו השתבש: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "האסימון אינו חוקי!" #: engine/vibes_auth/graphene/object_types.py:40 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), בסדר כרונולוגי הפוך." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "קבוצות" @@ -190,7 +215,8 @@ msgstr "קבוצות" msgid "wishlist" msgstr "רשימת משאלות" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "אוואטר" @@ -201,8 +227,8 @@ msgstr "ניתן להשתמש בתכונות לאחסון נתונים מותא #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "השפה היא אחת ה-{settings.LANGUAGES} עם ברירת מחדל {settings.LANGUAGE_CODE}" @@ -210,68 +236,23 @@ msgstr "" msgid "address set" msgstr "כתובות" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "פתוח" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "סגור" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "משתמש" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "צוות" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "מערכת" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "לשרשורים אנונימיים" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "שרשור צ'אט" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "שרשורי צ'אט" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "ציין שם משתמש או דוא\"ל עבור שרשור אנונימי." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "המקבל חייב להיות משתמש צוות." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "הודעת צ'אט" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "הודעות צ'אט" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "נדרש כתובת דוא\"ל תקפה לצ'אטים אנונימיים." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "ההודעה חייבת להכיל בין 1 ל-1028 תווים." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "אנו מחפשים את המפעיל שיענה לך, אנא המתן!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "המקבל חייב להיות משתמש צוות." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -281,97 +262,125 @@ msgid "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." msgstr "" -"מייצג ישות משתמש עם שדות ושיטות מותאמים אישית לפונקציונליות מורחבת. מחלקה זו " -"מרחיבה את המודל AbstractUser ומשלבת תכונות נוספות כגון כניסה מותאמת אישית " -"באמצעות דוא\"ל, שיטות אימות, מצב מנוי, אימות ואחסון תכונות. היא מספקת גם כלי " -"עזר לניהול פריטים שנצפו לאחרונה והפעלה מבוססת אסימון לאימות חשבונות. המודל " +"מייצג ישות משתמש עם שדות ושיטות מותאמים אישית לפונקציונליות מורחבת. מחלקה זו" +" מרחיבה את המודל AbstractUser ומשלבת תכונות נוספות כגון כניסה מותאמת אישית " +"באמצעות דוא\"ל, שיטות אימות, מצב מנוי, אימות ואחסון תכונות. היא מספקת גם כלי" +" עזר לניהול פריטים שנצפו לאחרונה והפעלה מבוססת אסימון לאימות חשבונות. המודל " "User נועד לטפל במקרי שימוש ספציפיים לניהול משתמשים משופר." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "דוא\"ל" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "כתובת הדוא\"ל של המשתמש" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "מספר טלפון" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "מספר הטלפון של המשתמש" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "שם פרטי" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "שם משפחה" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "תמונת פרופיל המשתמש" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "מאומת" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "סטטוס אימות המשתמש" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "פעיל" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "בטל את הבחירה במקום למחוק חשבונות" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "מנוי" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "סטטוס המנוי לניוזלטר של המשתמש" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "אסימון הפעלה" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "תכונות" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "משתמש" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "משתמשים" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "לשרשורים אנונימיים" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "שרשור צ'אט" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "שרשורי צ'אט" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "ציין משתמש או דוא\"ל עבור שרשור אנונימי." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "המקבל חייב להיות משתמש צוות." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "הודעת צ'אט" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "הודעות צ'אט" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "קבוצה" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "אסימון יוצא מן הכלל" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "אסימונים מצטיינים" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "אסימון ברשימה השחורה" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "אסימונים ברשימה השחורה" @@ -434,12 +443,11 @@ msgstr "שלום %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" -"קיבלנו בקשה לאיפוס הסיסמה שלך. אנא איפס את הסיסמה שלך על ידי לחיצה על הכפתור " -"שלהלן:" +"קיבלנו בקשה לאיפוס הסיסמה שלך. אנא איפס את הסיסמה שלך על ידי לחיצה על הכפתור" +" שלהלן:" #: engine/vibes_auth/templates/user_reset_password_email.html:95 msgid "reset password" @@ -515,8 +523,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -528,11 +536,11 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "מטפל ברענון אסימונים למטרות אימות. מחלקה זו משמשת לספק פונקציונליות עבור " "פעולות רענון אסימונים כחלק ממערכת אימות. היא מבטיחה שלקוחות יוכלו לבקש " @@ -554,10 +562,7 @@ msgstr "האסימון אינו חוקי" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "יישום הגדרת תצוגת משתמש. מספק סט פעולות לניהול נתונים הקשורים למשתמש, כגון " "יצירה, אחזור, עדכונים, מחיקה ופעולות מותאמות אישית, כולל איפוס סיסמה, העלאת " diff --git a/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index e40a79fb..4abfa04e 100644 --- a/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,40 +16,40 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "" @@ -57,78 +57,102 @@ msgstr "" msgid "authentication" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "" @@ -185,7 +209,7 @@ msgid "" msgstr "" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "" @@ -193,7 +217,7 @@ msgstr "" msgid "wishlist" msgstr "" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:68 msgid "avatar" msgstr "" @@ -212,68 +236,23 @@ msgstr "" msgid "address set" msgstr "" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -284,91 +263,119 @@ msgid "" "for enhanced user management." msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "" diff --git a/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po index 727dd586..ea682bd9 100644 --- a/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,40 +16,40 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "" @@ -57,78 +57,102 @@ msgstr "" msgid "authentication" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "" @@ -185,7 +209,7 @@ msgid "" msgstr "" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "" @@ -193,7 +217,7 @@ msgstr "" msgid "wishlist" msgstr "" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:68 msgid "avatar" msgstr "" @@ -212,68 +236,23 @@ msgstr "" msgid "address set" msgstr "" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -284,91 +263,119 @@ msgid "" "for enhanced user management." msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "" diff --git a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.mo index a3e9c99eaa71e1055ce482881561c829da432394..30521d344dd599dd56b311e6ba0a1dc8f3f99024 100644 GIT binary patch delta 2778 zcmY+`32anV6vpvWXz3JMN;ld{X$K0jw``RiL98HP1yNZ9$}62t2Rfyl1%d7 z4UR-&LLfo5#JG({R0I!@VDgUZ1Bu3ebN_*PnI#uzpR=i+SCi*_KBwCB4h>In;u#V-UMBrWXe(oL0CEvv3dU{(fAF zhu!U(b?bFq(63%G)sco(vb>=vptSrnXPSPiNK3vn7oOUb`#^)fd! zv$M#LUF1Up{*1fPLq1pGQ>YjHfSTZK)JpRBvL;mLx(+o^2wAKhLS^m^)HrXWp8qUH zM-N_hZ~TT#+WN3%hhqgQL$#=hF2X&y3O#rQmFk~RB`6$h#*fY5L#JpZR&jln9jnY- zbG?bmP%Mibqs~Co$}3U3brx!3wfHnIT8`tmzUob_tcbd3MRQOksKx%h%vR&xG>#($ zZ|DA>!&2Ydz-m%C|bB%S#n6@94kylaQ`v}Rp-9n|X znC0Jvqmd+-gUZwssNe5H4SWRou@ihKBj+(w=f9iIByMCfx;D!U)baA89t@!}v=xV9 zhwCX+sy}i45vOwPq3{!NE^@*wf|^JtX5b<0i$~GJ`1TSVrSeVG49}oS@jdRsZd{GK zn4LD$W%T1;s1iA2Qv-xi19Z68dvO)lhf%fv8#RuHI_eKx4#u>b%jr-in}m1c3LK9I zQK|kAwW9A(6DTHsbFmsVU^`~w7SxJks1+YTz4s(iUHcTNn*EL{X<0S-*XF6IPR(pF zYDG&i2iKzpZbwbz1)PHCa0&i_dVT@3)$i+3nR^^LNcJp7@D)@hhO>e6{vD`=KQn>+ z&!=;O8=CQT*ItauVyy`EqIu}Sdd$aW)JnIZCa~Z2Bx)k(P%Hl$^;|a&Ko1*jAC{u7 zPsHeO0PHksz)PqVWKTBZ6xkz$T0Wu8rPWU-))V&<+OTTNQzYNDmi|0KrK%^E5-OLP z1||DeM{ruT|5L|p5jGM^i;k1pmK4bqs;f+>sg`Q%2=>(f+6u0k37wq�H{?P#IPd zGl*q`_L)!P=h5NhB->^_TipI8)MrID0+sXf80{AGQ&DGP!(^=AU;i}{I z-}V?6i;1v%bJT-$g6_rru9c|snMDjC8i=yQw^?g@CH&d%_8A-w2mGx*pEno{N4yO_ zuj36zoTeskH0%piC59FhW|W5_0jH&9t2f%#=tT4l{cc3q+vtlpftL8hlFqcY_{{7v z@e3t|iSs1|o<#nTNM^jYygJb_@>IsKpfA|w3pF^QXuuoxH8}o&)9OC#ZS%GI{n1t@ eUR8C>6ZExi^)&{Z_*L(?_>HQP#I>sC^nU?A(jSok delta 2630 zcmYk;eN5F=9LMpmJU?A|xEi7)pgbuGQXnd10+N=Mh=NIqJ;+l6$pu!~5_=HWCg4U) zH?!4NEM3#;ZvD}ERJ8uUts-pe55-!uzt~#;WI5~o`Q5|Tncv^*oZr2_-#O=d&bc_& zHr3L9EhS>qD1AgaF&=Jq8atx7P^M$e7UK;}(2Y1VANVjH7oqOw;aymQQMd)?V;#25 zA#geE?|En`-o^;Ce#_)(eK7|MupB3OpcVIF`CPMh?!TRA7Kw35p$?Le7g#D*@x63h zL3?jE5dT0;Fd>CO;xbI5e`}(m0X&aoIE0JvGV)IQ1?k)VM9nzdZ^l1M zP7X)psf#;@}sB> zjG{U|<=SJYjy^y=7evi?5?{g@+=(5`QWF`+PW%!3_2McPPBW`Tmf3cr?ziAJ>~;4q zqf-7I>P1ty0Dr?=yn|YToK&-XtV2!UMbw%PB6GEmumUfol7G!8jJIe8F{lR;Q5nfX zEk%j5)_vZA^ks)o10O{V_#I^1*m-2q_8EGc4%gDYjar)3X`zACq>+E>wu_58>cJy8 zjEy*-JnBUUPy;%G8u>}oK&PBHQ61evCTH2aOqr@c&A1Zvd_C&9HrGDbPlZ9*Am-p0 zDkBr9k^X>3@dn0VJ6l+(4WLqf3h%}XsM9iyg|urpv&u-X^A%KPjyq4ICfXP@h+$ zI&MJz*&Z&@IDq%!5EkhCU!bDnG=qBJ7AjR5)e`VISD{k9-Pw(6Xba*V-JR3_JBKK)xY6|F@FzJ>$18{_#^(PnDHRy>SaqTf*+{Eh0s$C*>x zkByj%TKkt#9Sx&?$lgG0=J$}*u}`u8ek#|gtilWyTq&+a&1gSr0B>O>euC=oFH|b; zpk^G!M$iD#kyW%JWL2yIwS6`NB~5y+5R$-9&ZhW9MlC<;WqhhqeAs5SsOq1n>2B zaSv7yD%#zgFs~@BDq6OkUM)0GSM}J%RU5hV|2L_(y0%VPz}3~ix0ZYGS$A_5Wrn?I z>j*ZrHv_HbY*7Z3UZpXzjJ3VhN>Lg{AiXGqW9^AvO>yHN3Q&|jyu1k2+6 z1$zLsleIbTBWeitn0Nj+V;iCJ2=N%vpoS~jAKHBSabnqRD=}O4xr&bWqpBIC9#+A6CH$(@;1UMdwSYi zyPBIbJNrh~`R4`K#FdB5sU3++D+u-^d>$3t>Q9Lrd3C`+urw_%CZei2&_41)(aK;` aRvDoj(l0PF!)7LTf~38tnzgL diff --git a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po index 78e620d7..97d010ee 100644 --- a/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/id_ID/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Keseimbangan" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Pesan" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Pesanan" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Informasi Pribadi" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Izin" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Tanggal-tanggal penting" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Informasi Tambahan" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Menutup utas yang dipilih" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Buka utas yang dipilih" @@ -54,80 +54,104 @@ msgstr "Buka utas yang dipilih" msgid "authentication" msgstr "Otentikasi" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Buka" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Ditutup" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Pengguna" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Staf" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Sistem" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Dapatkan pasangan token" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Dapatkan pasangan token (penyegaran dan akses) untuk autentikasi." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Menyegarkan pasangan token" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Menyegarkan pasangan token (menyegarkan dan mengakses)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verifikasi token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verifikasi token (penyegaran atau akses)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Token tersebut valid" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Membuat pengguna baru" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Mengambil detail pengguna" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Memperbarui detail pengguna" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "memperbarui sebagian detail pengguna" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Menghapus pengguna" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Atur ulang kata sandi pengguna dengan mengirim email pengaturan ulang kata " "sandi" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Menangani unggahan avatar untuk pengguna" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Mengonfirmasi pengaturan ulang kata sandi pengguna" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Kata sandi tidak cocok" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Mengaktifkan akun pengguna" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Tautan aktivasi tidak valid atau akun sudah diaktifkan" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Menggabungkan produk yang baru saja dilihat yang disimpan klien" @@ -174,20 +198,21 @@ msgstr "Akun sudah diaktifkan..." msgid "something went wrong: {e!s}" msgstr "Ada yang tidak beres: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token tidak valid!" #: engine/vibes_auth/graphene/object_types.py:40 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 "" "Produk yang terakhir dilihat pengguna ini (maksimal 48), dalam urutan " "kronologis terbalik." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grup" @@ -195,7 +220,8 @@ msgstr "Grup" msgid "wishlist" msgstr "Daftar keinginan" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -206,78 +232,33 @@ msgstr "Atribut dapat digunakan untuk menyimpan data khusus" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Bahasa adalah salah satu dari {settings.LANGUAGES} dengan default {settings." -"LANGUAGE_CODE}" +"Bahasa adalah salah satu dari {settings.LANGUAGES} dengan default " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Alamat" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Buka" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Ditutup" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Pengguna" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Staf" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Sistem" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Untuk utas anonim" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Utas obrolan" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Utas obrolan" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Berikan pengguna atau email untuk utas anonim." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Penerima tugas haruslah seorang staf pengguna." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Pesan obrolan" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Pesan obrolan" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Email yang valid diperlukan untuk obrolan anonim." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Pesan harus terdiri dari 1..1028 karakter." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Kami sedang mencari operator untuk menjawab Anda, tunggu sebentar!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Penerima tugas haruslah seorang staf pengguna." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -296,91 +277,119 @@ msgstr "" "untuk menangani kasus penggunaan tertentu untuk meningkatkan manajemen " "pengguna." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Email" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Alamat email pengguna" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Nomor Telepon" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Nomor telepon pengguna" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Nama depan" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Nama belakang" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Gambar profil pengguna" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Sudah diverifikasi" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Status verifikasi pengguna" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Aktif" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Batalkan pilihan ini alih-alih menghapus akun" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Sudah berlangganan" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Status berlangganan buletin pengguna" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Token aktivasi" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Atribut" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Pengguna" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Pengguna" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Untuk utas anonim" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Utas obrolan" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Utas obrolan" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "menyediakan pengguna atau email untuk utas anonim." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "Penerima tugas haruslah seorang staf pengguna." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Pesan obrolan" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Pesan obrolan" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Kelompok" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Token yang luar biasa" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Token yang beredar" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token yang masuk daftar hitam" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Token yang masuk daftar hitam" @@ -443,12 +452,11 @@ msgstr "Halo %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" -"Kami telah menerima permintaan untuk mengatur ulang kata sandi Anda. Silakan " -"atur ulang kata sandi Anda dengan mengeklik tombol di bawah ini:" +"Kami telah menerima permintaan untuk mengatur ulang kata sandi Anda. Silakan" +" atur ulang kata sandi Anda dengan mengeklik tombol di bawah ini:" #: engine/vibes_auth/templates/user_reset_password_email.html:95 msgid "reset password" @@ -460,8 +468,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Jika tombol di atas tidak berfungsi, silakan salin dan tempelkan URL " -"berikut\n" +"Jika tombol di atas tidak berfungsi, silakan salin dan tempelkan URL berikut\n" " ke dalam peramban web Anda:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -529,8 +536,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -544,11 +551,11 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Menangani penyegaran token untuk tujuan otentikasi. Kelas ini digunakan " "untuk menyediakan fungsionalitas untuk operasi penyegaran token sebagai " @@ -572,17 +579,10 @@ msgstr "Token tidak valid" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementasi set tampilan pengguna.\n" -"Menyediakan serangkaian tindakan yang mengelola data terkait pengguna " -"seperti pembuatan, pengambilan, pembaruan, penghapusan, dan tindakan khusus " -"termasuk pengaturan ulang kata sandi, unggahan avatar, aktivasi akun, dan " -"penggabungan item yang baru dilihat. Kelas ini memperluas mixin dan " -"GenericViewSet untuk penanganan API yang kuat." +"Menyediakan serangkaian tindakan yang mengelola data terkait pengguna seperti pembuatan, pengambilan, pembaruan, penghapusan, dan tindakan khusus termasuk pengaturan ulang kata sandi, unggahan avatar, aktivasi akun, dan penggabungan item yang baru dilihat. Kelas ini memperluas mixin dan GenericViewSet untuk penanganan API yang kuat." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo index af8dba85a6a1a47f50ce7fd2d88fbe784bcb3003..0c31162c9e77707d089fa817f22a751b80ba9535 100644 GIT binary patch delta 2782 zcmZA2eN0t#9LMo5ipW(GL{x4f9?(EU)Id8~@hQcJe7MR5uU?SuLt4$QJ&>C# zTf4KevfNrVTdmoxR%X`9^$(j%t+ia)a;xPmA9AhD5_^B{J#4Pu?)SXTIiB--_ zi(Asn4&gYiJ#;b}Cu6!<%vN!t2iM^l9t>j(&KqPF;Qrg$X8mwjPO9Sq;q7<>wXpnL2E}Uh;#M5W`1S-RQ@HUWj=`J*fN7 z;!=Foy?+&z`hQRz*>KVdIaq>as8TG!vA7GhfHzPz{|H&M{eUy@%5d_p6;;rSR#1g{ zp%#^qg;<0eP^Ed)^&slGkCC}pH);XrQ4_y}Y$N*@RT>WkCmB|aD!~GrhEXs1SFPUV zhGupg`Ppd>8t`}Q!c6kH2KS*lx`3Ks4{9ZYc~}!_a@~j;D1OleP@D>>W4?m7xaIL>qAruE9(^k4p7LR0;A%n(?#g9P|~f#>reCXUA%s zYpBiLkBy=d#)fgiBCG^eqk2>+{O}3w)`Y;fFmPUr? z>@n^iW)<2~5(hE^ho?>JGqi=5Xyt2j4GTGpXTwj38@5U1iX)CB%QJ(tDHDy4(k3niGr_*SkHti(w;4ONn@xC6UzE8alW zY)eIIQ|?67vIn*6vnQlhIuZwRU5Xp93YGdeYT%bp?;XOJQgVb7e%8%lI$n3Jq0sC{ z3!zfB57}q-1un#&P!k`|tYsByrM0Nt-GnUOe8}AGY1BAJQT<$)MEQC-oJH8(H`g^v?t~fbBSd{1JT>`ZL8^13=#L~g4UTL zdDI?TM+_u}5?RXsD1uKo`E6_Sj3c7NEMgkb+xl{%%{G|`5G#pHqPOYGSkimpTKd21 zwOs4d4ZHWt7IV_>Ufkn48uJMcQABJa3KBnh*7r%YWqq14G8_)Hb@=^Gdo&zzHu)W& z6OQ;=Tb*dwADWOT9+KCuFcb;+g24x!XlIKrq9^okrD3PVAMpi(@yh(YX`S&IS>^Fl z`FV-2^P`!Gokc4%`!6i@g~R@~_@cs!#K|&mMtOZ(TVQ*r!x!>9oxadRblUFkpu>Pe ezZ?Qiw8M!;bT9tv#O}1#_}rq(#F0tArT+(3jUX=o delta 2623 zcmY+_drXye9LMo5*SN~%KyZ=*n)|vc=eF z&Q^1=)nG-ZKXSu#rLMK+D0Qo?nzohw;mGtK+nDwKob&KUzwv!uzvnsU`CY%i!>!(T zdpy6!2TvMhkVqlU1(}_|-g~%Eu7;aEfY&fe4AsQobCF=QVycY{G6ss{2>#-|< zz#Q(s=cNo>!eBFxrSZ1Dn1ySx1TXPIC$?e93bSsWzaL{3f)TO)4q}l8ED0<4UJ5?M zeM_9bgQHl+{ik>z{*9VoR6K*kHRz^)+e1YIcomEBEnJBgkT&f%q;I>8nsJcJj6aLv z!lWz%HSkGl48?^#cj$dOO{o5iH+BQotD+d>RJe6l$PX9IvA~`UjbuWzv{dsuVTja@6|`sQ0>@`yme%24&-zh0~}N z`3^PGA8-t>VHkFk!dlvX)RG^^`|&H(X}OAp+*fjD)zJ_tiI1YT>;y7Kn?-Gj=Nl?o z`Wwy%w{ez+R**@L@O(ba?+w)VQqtKL%-~Xhm6#LA>A^DrW+!QNgy(yijdJM^RQBIQ zy?+Pi_};(xsLub~YJUfR;TFD-%JkB(4K>11R7W47vioP$QZ8W?#;ozLTqA0$hEcgO zf#LWuYKuR2?k{3B_djBm&VMEwr={M88etPgU@Iz{dmN`wdwCwUWj|pJ-og!7!HI~an~s9cyqwLjMy*6K@@I8iJS9|Kry}Q(JhMBv4iiWK^2w@jJGP@{@R{Q& z)J)H!w&XH0M!SwQVF`Ku_cx=Gv=zf}7`0Mkd91%)e2)j@oy{SCw!ozk1M>aHsoAj~ zSMmG^rr|8Uj2E#T%SaS8JdJAiG;YQP)XWo@l|IkKQmkCZ`m4ba9%yDCq6=qGGe3(O z*e|G+SwhVunKQ;DtqApA2P*mc@EDGu1`xmAe_XRr-`|1S>S5#%*mmuID^W~5PcRW* zG7g|dsG@;z!hD58;wz7H-R0C19hYgMqCwHe|4OHGSAqRbUH$u#M zg41H;l`r$bS2DRiK{OLFz9;^ZpcT`01Ub)G4BwBIZXYA|sX~d+`EQ_7OK5*oI0U|9 zrot#=^mbf~w+6(2HjDEUqAdiUY5fUOga`32rD(|3k> St8(0-6XSW`dXMD)8T=m%)%Yy{ diff --git a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index f69ba56a..e0a74dd7 100644 --- a/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Equilibrio" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Ordine" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Ordini" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Informazioni personali" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permessi" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Date importanti" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Ulteriori informazioni" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Chiudere le filettature selezionate" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Aprire le discussioni selezionate" @@ -54,81 +54,105 @@ msgstr "Aprire le discussioni selezionate" msgid "authentication" msgstr "Autenticazione" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Aperto" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Chiuso" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Utente" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personale" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Sistema" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Ottenere una coppia di token" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" "Ottenere una coppia di token (aggiornamento e accesso) per l'autenticazione." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Aggiornare una coppia di token" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Aggiorna una coppia di token (refresh e access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verifica di un token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verifica di un token (aggiornamento o accesso)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Il token è valido" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Creare un nuovo utente" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Recuperare i dettagli di un utente" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Aggiornare i dettagli di un utente" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "Aggiornare parzialmente i dati di un utente" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Eliminare un utente" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Reimpostare la password di un utente inviando un'e-mail di reimpostazione " "della password" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Gestire il caricamento dell'avatar per un utente" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Le password non corrispondono" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Attivare l'account di un utente" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Il link di attivazione non è valido o l'account è già stato attivato." -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Unire i prodotti memorizzati dal cliente e visti di recente" @@ -174,20 +198,21 @@ msgstr "L'account è già stato attivato..." msgid "something went wrong: {e!s}" msgstr "Qualcosa è andato storto: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Il gettone non è valido!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Gruppi" @@ -195,7 +220,8 @@ msgstr "Gruppi" msgid "wishlist" msgstr "Lista dei desideri" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -207,8 +233,8 @@ msgstr "" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "La lingua è una delle {settings.LANGUAGES} con il codice predefinito " "{settings.LANGUAGE_CODE}." @@ -217,68 +243,23 @@ msgstr "" msgid "address set" msgstr "Indirizzi" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Aperto" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Chiuso" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Utente" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personale" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Sistema" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Per le discussioni anonime" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Filo della chat" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Filo conduttore della chat" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Fornire l'utente o l'e-mail per il thread anonimo." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Il destinatario deve essere un utente del personale." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Messaggio di chat" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Messaggi di chat" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Per le chat anonime è necessario un indirizzo e-mail valido." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Il messaggio deve essere di 1...1028 caratteri." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Stiamo già cercando l'operatore per rispondervi, restate in attesa!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Il destinatario deve essere un utente del personale." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -289,99 +270,127 @@ msgid "" "for enhanced user management." msgstr "" "Rappresenta un'entità Utente con campi e metodi personalizzati per " -"funzionalità estese. Questa classe estende il modello AbstractUser e integra " -"funzionalità aggiuntive come il login via e-mail personalizzato, i metodi di " -"convalida, lo stato di iscrizione, la verifica e la memorizzazione degli " +"funzionalità estese. Questa classe estende il modello AbstractUser e integra" +" funzionalità aggiuntive come il login via e-mail personalizzato, i metodi " +"di convalida, lo stato di iscrizione, la verifica e la memorizzazione degli " "attributi. Fornisce inoltre utilità per la gestione degli elementi " "visualizzati di recente e l'attivazione basata su token per la verifica " -"degli account. Il modello User è progettato per gestire casi d'uso specifici " -"per una migliore gestione degli utenti." +"degli account. Il modello User è progettato per gestire casi d'uso specifici" +" per una migliore gestione degli utenti." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Email" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Indirizzo e-mail dell'utente" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Numero di telefono" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Numero di telefono dell'utente" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Nome" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Cognome" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Immagine del profilo utente" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "È verificato" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Stato di verifica dell'utente" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "È attivo" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Deselezionare questa opzione invece di eliminare gli account" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "È iscritto" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Stato di iscrizione alla newsletter dell'utente" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Token di attivazione" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attributi" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Utente" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Utenti" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Per le discussioni anonime" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Filo della chat" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Filo conduttore della chat" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "fornire l'utente o l'e-mail per il thread anonimo." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "L'assegnatario deve essere un utente del personale." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Messaggio di chat" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Messaggi di chat" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Gruppo" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Gettone eccezionale" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Gettoni in sospeso" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token in lista nera" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Gettoni nella lista nera" @@ -446,8 +455,7 @@ msgstr "Hello %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Abbiamo ricevuto una richiesta di reimpostazione della password. La " @@ -531,8 +539,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -547,17 +555,17 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Gestisce l'aggiornamento dei token per l'autenticazione. Questa classe è " "utilizzata per fornire funzionalità per le operazioni di aggiornamento dei " "token come parte di un sistema di autenticazione. Garantisce che i client " -"possano richiedere un token aggiornato entro limiti di velocità definiti. La " -"vista si affida al serializzatore associato per convalidare gli input di " +"possano richiedere un token aggiornato entro limiti di velocità definiti. La" +" vista si affida al serializzatore associato per convalidare gli input di " "aggiornamento dei token e produrre output appropriati." #: engine/vibes_auth/views.py:67 @@ -575,18 +583,10 @@ msgstr "Il token non è valido" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementazione del set di viste utente.\n" -"Fornisce un insieme di azioni che gestiscono i dati relativi all'utente, " -"come la creazione, il recupero, gli aggiornamenti, la cancellazione e le " -"azioni personalizzate, tra cui la reimpostazione della password, il " -"caricamento dell'avatar, l'attivazione dell'account e l'unione degli " -"elementi visti di recente. Questa classe estende i mixin e GenericViewSet " -"per una gestione robusta delle API." +"Fornisce un insieme di azioni che gestiscono i dati relativi all'utente, come la creazione, il recupero, gli aggiornamenti, la cancellazione e le azioni personalizzate, tra cui la reimpostazione della password, il caricamento dell'avatar, l'attivazione dell'account e l'unione degli elementi visti di recente. Questa classe estende i mixin e GenericViewSet per una gestione robusta delle API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo index 36df94d10cd5cfe0a9c513a95ed8cab96fb80aed..8afc28f55c2bc3de95e457f11ac34eb18226a361 100644 GIT binary patch delta 2806 zcmYk-3rv+|9LMoLipb5Bi^36=Bj$yh8iJyd*U%EhTc(hT7>Fn!anYKyBcNGoS{*Ad zb6Td=(y*YWX{Ncd%W7&hw=QmZmgX|8)mEE{eShb?RL}UI&-1*#&;5B`KU{h25zocw z;OC6Ais(gr)zNGpZtlzvDL&k+54tcCv#|^2Vg$~1o)=*c$`u%bP1qeb;?f|qy_iBd zj7IulCI*{%Y#tfCxB$Q8#ab-E$#7tQmb+Dvrl7sD{=egSWk?C4URG5+_j| zf8>iIJ`6ZbgJe?u+( zO;ke`$Ff2<9DvEFt(bv>a1Ck#2T*%{1evsbhdKCb9P6(crPGRLFbq{;6lz7LVqYvm zZB2vYZq$26k+Ilks0my`4g5NCjO=gJ)`YR)EQV#FwqOd5#CjL&uf1yKfkt)$`Lpx< zsKaZx9z$8rLfnFC=qhS}ZK#<<@v;V#@3;unQ4KO#+l^Yew^9APi>m*Hhm0!z;5_&p z8MK9PWcy z949je@8m%hYHz)$7x!Uk2ebEa1m%y}k1=RTfh8V`+M=nrjrXc>D0XD@n|Pi%F!0_< z$Il(V!E-_E{}nQK^WxEDW`}=b4o+nKCg55eiKp>CyoFS;$!x3!xB@reCLE42oIqZ& zDX240k2+h8sCrML+I`di+++3!nFTz!i5Xas9;mPxBPn|w_o8Ng$nhF#=Ba}@z&H)H z)T>bwIE5Nun`6%*ft4MO8qg$+q<@>H3>Km)mZ7%dWxRl&;30f*XrO`VcbPp!xd^$! z_6w?hM@HWjyP>YJ8_O{T`KsGCRL9#U*!X7^woYU!UwJ^vK- zyBYK1BIA zYERwN)-}w-C3pbUa2HOdOhc_)9_oWrjk|Fh&c}@Gz=~}}ZO#5{)_)e6Q#?=uu}oJT z4a0kJA?n3fPy;)SdhaZ%qZ_Ch$Bqh=(^2owLe0DiRc{Y=$Ah>7KS0%+?-?EV#MYyh z<_zi#v|$j=A(XT_jM0Ausq0@AZ4rmwpXNGp>ue!0k%%LTh?&HALP`IzaULz7;Fhxf zBwdF*qJ)SgG!Ug#0sNm>WfPq80LMj`=H%O%M`kIZgLVh8jL=rq5d{SEve|^rQ>pro zBEyyUr7Ow!;vH8|6ftx8ZL~J znEx2E9Blu77UOc~pW4wm&@HJVv^A57NrcXg?t6Rc*816ng~MY z!GHe~$)ppyyS)h=zFVfo>Lb#ZSWNV4`95r6hnBL)_duc-Wi%Z?b?%KNI zB}?4(wWT$KTasd8JN2olD=)67c+_2AT~b`9H}r1O)X-uUUYmMg7?eT~mvZF=>` zCmz4DbDgi@^~<|jFF$|S*RaFaxXIg`<#F20}^z delta 2658 zcmY+_drVhl9LMpmsE7#3MMY2$Q8WcFAr}$60AiUIpb<%=W{QwNCej$Ke#_s8Ii=i) zO=Glb%Vyco{Wdoj&CT1gY>SAsE-URf)@seIm0LD*y+7wX{LwSM=k+}2cb@ay4$1T_} zj=;r~hp03U@8SfrfTdGg4`yN(7U3`z_Tp|Vy3eeU`)^M*n~2eIegkpH3oHpsd2Tjl zQ{EBpH*gf!Q9gqy_y=l$F$r`M7hy8(+jcVQKsy%TYd8z9BJZ@Hk+$tm)QHC?n(=2- zxiBc3hwAuJoP)JUpREHm6Ngcgc?>lJ$DNljp7!k)8QyI+&8!3xQ7@`SI&E#JDepqf zKrgD{K36`8YUnhoUI;bfVSEX1VGTAhN)6;PHsjYA(2Gl1IE}0lS!Sz4-LJ9COUUDVR#C;J^KPiFqf+cqw0s1-Z$ zb*#nd%%fhkAJw5wRL_s2Iy&O~1=Y|UWNZP;HQ0rk+N;Q)4Rfi*+xQ00S7w+k$5GyTg!?lV`p>`X9B>Ze z&^WVexLW7GZxJ60DtwE@n8`er;w~)2_i!Wrgw(M`S$;>Wu#0jt=HqST5zA%=s-rci zJ+&KEZ=Wmo;8T>}#2lUfzuga6OZN)RVG3{IAGJh?~@Eghv_z|vK?!Vv`c2mBG`cNHxz)dZxfdSO9y?~8) z4f%@OiX6Y;0@T{CK~~9XkS44H18d2AKxRGuhMMwaE6jAi5!oJg3TyCF)CkgZeV3qK zyb2R=E9&`r)RJ_%@*ryFzDGUxFX}yUdCb2usd@g|Ek}PiY~!j8$K?Gl?R6!ct^+Qw_Pzg3Iug&hn`3CCI#P7n zIGx_E*QmylX5>Mlme592V#2%`+=JSLN-Vec(Nca5(V`3~TIau-OeK-5J0y;=_XYF{ zT%L59$8bBL9lnW(Ck_%52<`q%LP^WgMr(RO!#e-kXxdCHnX$pW z|6m(%0TD~^mGaKHj!Y`yZ5&j3gm{8@Tm_d>a2lcY&LJv@v9#M|v{@fjUh}_?C?n#C z^+YrA3^9Y4LMUmIJ@4f>ez=R!|ARTiMuKmNmom8SCv@COh#f>C(L^K>RfLtawl?l< z*|R6Txvgha;ml|9kPS)taLPa;DVi3t;Xf-_$Y)%_|7CWRyjR{>mPi)bmg7#ZY?wtjPZWq(2jK diff --git a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 03999ab3..37c06a5c 100644 --- a/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "バランス" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "オーダー" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "受注状況" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "個人情報" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "アクセス許可" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "重要な日程" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "追加情報" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "選択したスレッドを閉じる" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "選択したスレッドを開く" @@ -54,80 +54,102 @@ msgstr "選択したスレッドを開く" msgid "authentication" msgstr "認証" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "オープン" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "クローズド" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "ユーザー" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "スタッフ" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "システム" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "トークン・ペアの取得" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "認証用のトークンペア(リフレッシュとアクセス)を取得する。" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "トークン・ペアのリフレッシュ" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "トークン・ペアをリフレッシュする(リフレッシュとアクセス)。" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "トークンの検証" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "トークンを確認する(リフレッシュまたはアクセス)。" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "トークンは有効です" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "新規ユーザーの作成" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "ユーザーの詳細を取得する" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "ユーザー情報の更新" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "ユーザーの詳細を部分的に更新する" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "ユーザーを削除する" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "パスワード再設定メールを送信して、ユーザーのパスワードを再設定する。" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "ユーザーのアバターアップロードを処理する" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "パスワードが一致しない" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "ユーザーアカウントの有効化" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" -msgstr "" -"アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション" -"されています。" +msgstr "アクティベーションリンクが無効であるか、アカウントがすでにアクティベーションされています。" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "クライアントが最近閲覧した商品をマージする" @@ -173,18 +195,19 @@ msgstr "アカウントはすでに有効になっています..." msgid "something went wrong: {e!s}" msgstr "何かが間違っていた:{e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "トークンが無効です!" #: engine/vibes_auth/graphene/object_types.py:40 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件)を逆順に表示します。" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "グループ" @@ -192,7 +215,8 @@ msgstr "グループ" msgid "wishlist" msgstr "ウィッシュリスト" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "アバター" @@ -203,78 +227,31 @@ msgstr "属性は、カスタム・データを保存するために使用する #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" -msgstr "" -"言語は {settings.LANGUAGES} のいずれかで、デフォルトは {settings." -"LANGUAGE_CODE} です。" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" +msgstr "言語は {settings.LANGUAGES} のいずれかで、デフォルトは {settings.LANGUAGE_CODE} です。" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "住所" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "オープン" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "クローズド" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "ユーザー" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "スタッフ" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "システム" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "匿名スレッドの場合" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "チャットスレッド" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "チャットスレッド" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "匿名スレッドにユーザー名または電子メールを入力してください。" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "担当者はスタッフユーザーでなければなりません。" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "チャットメッセージ" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "チャットメッセージ" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "匿名チャットには有効なEメールが必要です。" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "メッセージは1〜1028文字でなければならない。" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "今、オペレーターを探しているところです!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "担当者はスタッフユーザーでなければなりません。" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -284,98 +261,122 @@ msgid "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." msgstr "" -"拡張機能のためにカスタマイズされたフィールドとメソッドを持つ User エンティ" -"ティを表します。このクラスは AbstractUser モデルを拡張し、カスタムメールログ" -"イン、検証メソッド、購読ステータス、検証、属性保存などの追加機能を統合してい" -"ます。また、最近閲覧したアイテムを管理するユーティリティや、アカウントを検証" -"するためのトークンベースのアクティベーションも提供します。Userモデルは、ユー" -"ザ管理を強化するための特定のユースケースを扱うように設計されています。" +"拡張機能のためにカスタマイズされたフィールドとメソッドを持つ User エンティティを表します。このクラスは AbstractUser " +"モデルを拡張し、カスタムメールログイン、検証メソッド、購読ステータス、検証、属性保存などの追加機能を統合しています。また、最近閲覧したアイテムを管理するユーティリティや、アカウントを検証するためのトークンベースのアクティベーションも提供します。Userモデルは、ユーザ管理を強化するための特定のユースケースを扱うように設計されています。" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "電子メール" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "ユーザーのメールアドレス" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "電話番号" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "ユーザー電話番号" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "名前" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "姓" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "ユーザープロフィール画像" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "確認済み" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "ユーザーの認証状況" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "アクティブ" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "アカウントを削除する代わりに、この選択を解除する" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "購読中" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "ユーザーのニュースレター購読状況" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "アクティベーション・トークン" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "属性" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "ユーザー" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "ユーザー" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "匿名スレッドの場合" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "チャットスレッド" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "チャットスレッド" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "匿名スレッドの場合は、ユーザーまたは電子メールを入力してください。" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "担当者はスタッフユーザーでなければならない。" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "チャットメッセージ" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "チャットメッセージ" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "グループ" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "卓越したトークン" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "トークン残高" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "ブラックリストトークン" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "ブラックリストに載ったトークン" @@ -438,12 +439,9 @@ msgstr "こんにちは %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" -msgstr "" -"パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワー" -"ドをリセットしてください:" +msgstr "パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワードをリセットしてください:" #: engine/vibes_auth/templates/user_reset_password_email.html:95 msgid "reset password" @@ -455,8 +453,7 @@ 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" " をウェブブラウザに貼り付けてください:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -487,9 +484,7 @@ msgstr "アカウントの有効化" msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " by clicking the button below:" -msgstr "" -"%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックし" -"てアカウントを有効にしてください:" +msgstr "%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -518,45 +513,36 @@ 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桁まで入力可能です。" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"アクセストークンとリフレッシュトークンのペアとユーザーデータを取得するための" -"ビューを表します。このビューは、クライアントが提供されたクレデンシャルを使用" -"して JWT トークンのペア(アクセスとリフレッシュ)を取得できる、トークン・ベー" -"スの認証を処理するプロセスを管理します。ベースのトークンビューの上に構築さ" -"れ、ブルートフォース攻撃から保護するために適切なレート制限を保証します。" +"アクセストークンとリフレッシュトークンのペアとユーザーデータを取得するためのビューを表します。このビューは、クライアントが提供されたクレデンシャルを使用して" +" JWT " +"トークンのペア(アクセスとリフレッシュ)を取得できる、トークン・ベースの認証を処理するプロセスを管理します。ベースのトークンビューの上に構築され、ブルートフォース攻撃から保護するために適切なレート制限を保証します。" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" -"認証目的のトークンのリフレッシュを処理します。このクラスは、認証システムの一" -"部としてトークンのリフレッシュ操作の機能を提供するために使用されます。このク" -"ラスは、クライアントがリフレッシュされたトークンを定義されたレート制限内で要" -"求できるようにします。ビューは、トークン更新の入力を検証して適切な出力を行う" -"ために、 関連するシリアライザに依存します。" +"認証目的のトークンのリフレッシュを処理します。このクラスは、認証システムの一部としてトークンのリフレッシュ操作の機能を提供するために使用されます。このクラスは、クライアントがリフレッシュされたトークンを定義されたレート制限内で要求できるようにします。ビューは、トークン更新の入力を検証して適切な出力を行うために、" +" 関連するシリアライザに依存します。" #: engine/vibes_auth/views.py:67 msgid "" "Represents a view for verifying JSON Web Tokens (JWT) using specific " "serialization and validation logic. " -msgstr "" -"特定のシリアライズと検証ロジックを使用して JSON ウェブトークン (JWT) を検証す" -"るビューを表します。" +msgstr "特定のシリアライズと検証ロジックを使用して JSON ウェブトークン (JWT) を検証するビューを表します。" #: engine/vibes_auth/views.py:80 msgid "the token is invalid" @@ -565,16 +551,10 @@ msgstr "トークンが無効" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "ユーザービューセットの実装。\n" -"作成、取得、更新、削除、およびパスワードリセット、アバターアップロード、アカ" -"ウントの有効化、最近見たアイテムのマージなどのカスタムアクションなど、ユーザ" -"関連のデータを管理するアクションのセットを提供します。このクラスは、堅牢なAPI" -"ハンドリングのためにミキシンとGenericViewSetを拡張します。" +"作成、取得、更新、削除、およびパスワードリセット、アバターアップロード、アカウントの有効化、最近見たアイテムのマージなどのカスタムアクションなど、ユーザ関連のデータを管理するアクションのセットを提供します。このクラスは、堅牢なAPIハンドリングのためにミキシンとGenericViewSetを拡張します。" #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index e40a79fb..4abfa04e 100644 --- a/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -16,40 +16,40 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "" @@ -57,78 +57,102 @@ msgstr "" msgid "authentication" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "" @@ -185,7 +209,7 @@ msgid "" msgstr "" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "" @@ -193,7 +217,7 @@ msgstr "" msgid "wishlist" msgstr "" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:68 msgid "avatar" msgstr "" @@ -212,68 +236,23 @@ msgstr "" msgid "address set" msgstr "" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -284,91 +263,119 @@ msgid "" "for enhanced user management." msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "" diff --git a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.mo index 4d720365bfb62a3eaded92bc36d6ece54ceac699..26cca7aa06604435de110a170a3c78c39be46d75 100644 GIT binary patch delta 2802 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 diff --git a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po index 252df4e8..41e7b065 100644 --- a/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/ko_KR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "잔액" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "주문" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "주문" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "개인 정보" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "권한" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "중요한 날짜" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "추가 정보" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "선택한 스레드 닫기" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "선택한 스레드 열기" @@ -54,78 +54,102 @@ msgstr "선택한 스레드 열기" msgid "authentication" msgstr "인증" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "열기" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "닫힘" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "사용자" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "직원" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "시스템" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "토큰 쌍 얻기" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "인증을 위한 토큰 쌍(새로 고침 및 액세스)을 얻습니다." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "토큰 쌍 새로 고침" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "토큰 쌍을 새로 고칩니다(새로 고침 및 액세스)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "토큰 확인" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "토큰을 확인합니다(새로 고침 또는 액세스)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "토큰이 유효합니다." -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "새 사용자 만들기" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "사용자 세부 정보 검색" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "사용자 세부 정보 업데이트" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "사용자 세부 정보 부분 업데이트" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "사용자 삭제하기" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "비밀번호 재설정 이메일을 보내 사용자의 비밀번호를 재설정합니다." -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "사용자에 대한 아바타 업로드 처리" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "사용자의 비밀번호 재설정 확인" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "비밀번호가 일치하지 않습니다." -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "사용자 계정 활성화하기" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "활성화 링크가 유효하지 않거나 계정이 이미 활성화되어 있습니다." -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "클라이언트가 저장한 최근 본 제품 병합" @@ -171,18 +195,19 @@ msgstr "계정이 이미 활성화되었습니다..." msgid "something went wrong: {e!s}" msgstr "문제가 발생했습니다: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "토큰이 유효하지 않습니다!" #: engine/vibes_auth/graphene/object_types.py:40 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개)을 시간 역순으로 표시합니다." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "그룹" @@ -190,7 +215,8 @@ msgstr "그룹" msgid "wishlist" msgstr "위시리스트" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "아바타" @@ -201,78 +227,31 @@ msgstr "속성을 사용하여 사용자 지정 데이터를 저장할 수 있 #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" -msgstr "" -"언어는 {settings.LANGUAGES} 중 하나이며 기본값은 {settings.LANGUAGE_CODE}입니" -"다." +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" +msgstr "언어는 {settings.LANGUAGES} 중 하나이며 기본값은 {settings.LANGUAGE_CODE}입니다." #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "주소" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "열기" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "닫힘" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "사용자" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "직원" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "시스템" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "익명 스레드의 경우" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "채팅 스레드" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "채팅 스레드" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "익명 스레드의 사용자 또는 이메일을 입력합니다." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "양수인은 직원 사용자이어야 합니다." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "채팅 메시지" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "채팅 메시지" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "익명 채팅을 하려면 유효한 이메일이 필요합니다." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "메시지는 1...1028자여야 합니다." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "이미 응답할 교환원을 찾고 있으니 잠시만 기다려주세요!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "양수인은 직원 사용자이어야 합니다." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -282,98 +261,124 @@ msgid "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." msgstr "" -"확장 기능을 위한 사용자 정의 필드 및 메서드가 있는 사용자 엔티티를 나타냅니" -"다. 이 클래스는 AbstractUser 모델을 확장하여 사용자 지정 이메일 로그인, 유효" -"성 검사 방법, 가입 상태, 인증 및 속성 저장과 같은 추가 기능을 통합합니다. 또" -"한 최근에 본 항목을 관리하기 위한 유틸리티와 계정 인증을 위한 토큰 기반 활성" -"화도 제공합니다. 사용자 모델은 향상된 사용자 관리를 위한 특정 사용 사례를 처" -"리하도록 설계되었습니다." +"확장 기능을 위한 사용자 정의 필드 및 메서드가 있는 사용자 엔티티를 나타냅니다. 이 클래스는 AbstractUser 모델을 확장하여 " +"사용자 지정 이메일 로그인, 유효성 검사 방법, 가입 상태, 인증 및 속성 저장과 같은 추가 기능을 통합합니다. 또한 최근에 본 항목을 " +"관리하기 위한 유틸리티와 계정 인증을 위한 토큰 기반 활성화도 제공합니다. 사용자 모델은 향상된 사용자 관리를 위한 특정 사용 사례를 " +"처리하도록 설계되었습니다." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "이메일" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "사용자의 이메일 주소" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "전화 번호" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "사용자 전화번호" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "이름" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "성" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "사용자 프로필 이미지" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "확인됨" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "사용자 인증 상태" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "활성화됨" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "계정을 삭제하는 대신 이 옵션을 선택 해제합니다." -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "구독 중" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "사용자의 뉴스레터 구독 상태" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "활성화 토큰" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "속성" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "사용자" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "사용자" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "익명 스레드의 경우" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "채팅 스레드" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "채팅 스레드" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "익명 스레드에 사용자 또는 이메일을 입력합니다." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "양수인은 직원 사용자여야 합니다." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "채팅 메시지" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "채팅 메시지" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "그룹" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "뛰어난 토큰" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "우수 토큰" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "블랙리스트에 오른 토큰" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "블랙리스트에 오른 토큰" @@ -436,12 +441,9 @@ msgstr "안녕하세요 %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" -msgstr "" -"비밀번호 재설정 요청을 받았습니다. 아래 버튼을 클릭하여 비밀번호를 재설정하세" -"요:" +msgstr "비밀번호 재설정 요청을 받았습니다. 아래 버튼을 클릭하여 비밀번호를 재설정하세요:" #: engine/vibes_auth/templates/user_reset_password_email.html:95 msgid "reset password" @@ -484,9 +486,7 @@ msgstr "계정 활성화" msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " by clicking the button below:" -msgstr "" -"가입해 주셔서 감사합니다 %(project_name)s. 아래 버튼을 클릭하여 계정을 활성화" -"하세요:" +msgstr "가입해 주셔서 감사합니다 %(project_name)s. 아래 버튼을 클릭하여 계정을 활성화하세요:" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -516,44 +516,38 @@ msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." msgstr "" -"잘못된 전화번호 형식입니다. 번호는 다음과 같은 형식으로 입력해야 합니다: " -"\"+999999999\". 최대 15자리까지 입력할 수 있습니다." +"잘못된 전화번호 형식입니다. 번호는 다음과 같은 형식으로 입력해야 합니다: \"+999999999\". 최대 15자리까지 입력할 수 " +"있습니다." #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"액세스 및 새로 고침 토큰과 사용자 데이터 쌍을 가져오기 위한 보기를 나타냅니" -"다. 이 보기는 클라이언트가 제공된 자격 증명을 사용하여 한 쌍의 JWT 토큰(액세" -"스 및 새로 고침)을 얻을 수 있는 토큰 기반 인증을 처리하는 프로세스를 관리합니" -"다. 기본 토큰 보기 위에 구축되며 무차별 암호 대입 공격으로부터 보호하기 위해 " -"적절한 속도 제한을 보장합니다." +"액세스 및 새로 고침 토큰과 사용자 데이터 쌍을 가져오기 위한 보기를 나타냅니다. 이 보기는 클라이언트가 제공된 자격 증명을 사용하여 한" +" 쌍의 JWT 토큰(액세스 및 새로 고침)을 얻을 수 있는 토큰 기반 인증을 처리하는 프로세스를 관리합니다. 기본 토큰 보기 위에 " +"구축되며 무차별 암호 대입 공격으로부터 보호하기 위해 적절한 속도 제한을 보장합니다." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" -"인증 목적으로 토큰을 새로 고치는 작업을 처리합니다. 이 클래스는 인증 시스템" -"의 일부로 토큰 새로 고침 작업을 위한 기능을 제공하는 데 사용됩니다. 클라이언" -"트가 정의된 속도 제한 내에서 토큰 새로 고침을 요청할 수 있도록 합니다. 이 보" -"기는 연결된 직렬화기에 의존하여 토큰 새로 고침 입력의 유효성을 검사하고 적절" -"한 출력을 생성합니다." +"인증 목적으로 토큰을 새로 고치는 작업을 처리합니다. 이 클래스는 인증 시스템의 일부로 토큰 새로 고침 작업을 위한 기능을 제공하는 데 " +"사용됩니다. 클라이언트가 정의된 속도 제한 내에서 토큰 새로 고침을 요청할 수 있도록 합니다. 이 보기는 연결된 직렬화기에 의존하여 토큰" +" 새로 고침 입력의 유효성을 검사하고 적절한 출력을 생성합니다." #: engine/vibes_auth/views.py:67 msgid "" "Represents a view for verifying JSON Web Tokens (JWT) using specific " "serialization and validation logic. " -msgstr "" -"특정 직렬화 및 유효성 검사 로직을 사용하여 JSON 웹 토큰(JWT)을 확인하기 위한 " -"보기를 나타냅니다." +msgstr "특정 직렬화 및 유효성 검사 로직을 사용하여 JSON 웹 토큰(JWT)을 확인하기 위한 보기를 나타냅니다." #: engine/vibes_auth/views.py:80 msgid "the token is invalid" @@ -562,16 +556,10 @@ msgstr "토큰이 유효하지 않습니다." #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "사용자 보기 세트 구현.\n" -"생성, 검색, 업데이트, 삭제, 비밀번호 재설정, 아바타 업로드, 계정 활성화, 최근" -"에 본 항목 병합 등의 사용자 관련 데이터와 사용자 지정 작업을 관리하는 일련의 " -"작업을 제공합니다. 이 클래스는 강력한 API 처리를 위해 믹스인 및 " -"GenericViewSet을 확장합니다." +"생성, 검색, 업데이트, 삭제, 비밀번호 재설정, 아바타 업로드, 계정 활성화, 최근에 본 항목 병합 등의 사용자 관련 데이터와 사용자 지정 작업을 관리하는 일련의 작업을 제공합니다. 이 클래스는 강력한 API 처리를 위해 믹스인 및 GenericViewSet을 확장합니다." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo index 4b9a63e246c81d564edd3b2c3fb8afbb33ebd1cd..f17dc331e235cda27a69c6f212b0be1ea880b373 100644 GIT binary patch delta 2801 zcmYk-d2Ccw6vy#XpwL2rmM*kX$}3f%EUhinvQ(wT$||eK-ZEug+i9oMItv7ZjHm=9 zZloHG2>~%^Of*JE6WoxfQ4#6N!nS1~JAzlnQ=-Z>9-1bLR8j>wEXzd+xc@ zzuWse;{D@>y=b&uL^1K*P_x(Y=@ER<3P+liU=e2FTpW#!I11OLt~X-==Rq8fk7GU_ z!uB+?V>q4jOgbsUIXKKLZW}q!joYw~8zbn)#be9@Tz_kCG%rc2EIsn6?1sM73G=n4x54Xcn_+hN0GtX zF;vRmLuKML>cwBB&d;G<^aJX-e$>ow;65xOy&Lc))P(-PF1(3xb=<|mX@-wrCLTmx zKa6YeXzKc(sMKFab!6j7D`evoEJrQHYMh4qP!o6^wdN<0N!yQDhu6lFf6ZtXy=Vrr zQ4h>VWn=}GVl!%K_NP38y6;0|EOrJpflH`?Uq#Bu22e|r$%2y%t3fTnGMtC8BJ!`b zdWQ=d*(u~>=lRkLf5!uuK|VL*v#5@)paysYHIp1})__)~+>Uxt7@4dcL1pd()O$Wc zJ%2XNfgb!Rb>S~$&^DZsy#ptqGSr9~=yE)Wn=u0~p;G-DY6`>Z^U7N(ZjQ-8d4zK`mJys-FuO*T}ALK=y2CMKa|x zv6AyOsG8W1jKPkgit`L=raz-*RLad+I1RNVHK?LqidwQQsHJ%x9ef-0-m{g=Lu+}N z3(7#ooyiBYaSZ2^u?nkDFW!Mn+V)~6zKQBMpPOVgQckuCwe4cqh0kC+UPmpNpLNvs z+fz**x9SEi8gf3YViY_I;cK-FON4SQc+pNA<`qvh{?TMyo2XB~)BH2o{hRitbv2&grCSGv>nxUCGlpgL+x|5DM@TQYB_Fg8#z&`RTo;q z4noBnB{mTYh;_uhgsb-}?Ov)-)gC0&x(OBK1H{8b8$p?Pbpl=?DYdHT&BQWdu;p^_ zVCsaG^co5EcGcZjmAu3^>wgchT;7k34^>#Vwk4csO+!Q-v6#4@SW7e#gH68?YNLrT zp}JD*N#cF0>bDW2h@04*2=@>Lh><5gEi_V>8(5 z!IP9K-do!iPF4_+)Wz~u9B7NEEluM6uU1uO5~V~7QJlD#*)$~4mi6iIiIGU4E#$gR zS1b~BT3pBHM54adRwov5!xf3ixq0a&;b_1Y4DNPfJ$_$Qcj#|ZBaYvV`U1h;>cT^5 zJ-u~VGkVVz<|V!@tj|a+Dm_1s{uF8Xx3d)nNcZphi$-5qv(q3%$??Q)%Hd)W2)D-yda H2ZsF*EWjm7 delta 2650 zcmYk;drXye9LMo5H$eos9PmhL9z-EhxftRFEI?67RG?5HgFp@!+EHwr1tps-5*mTRB!{t+ldUg^ZGr{d7j_(`#U(j z_eOhQIyrL8C^nm`717aKiN?Orn3gMuoP`Qp`%hgKDT28MF19!M%{14YV3FK zUqCJSMN~smI2W&ACjNukf+b$F`>+NzfrF?$KZ4BF-oax0*vtBBM&Y!g8N{GoNIpQ5eDNG9uq&$uFr*3t8sG~kS zj4xq5rm~J|Xg_K|hfyOxfg0$P>s3@oH<8KNVj9y*6{BWcih92m^H)HvXiI*okhJD zI7dYd|A;yTS8$w$Zlm_{v@bNU&rmb^4H=8wz9f*7^jfQ*extTFVj|bSE6RniL3Dt>bdt&$Msv( z>9~q9_&aKgZ@c$Xv&}Ye?ZZr+e?JvxiBL&+5~FY&SKw=|KcH49o{d(68CZ<#P)k0D zY`?whet!|w-Y=+uTt~Hg3!_m#8q4Y5VyNiFLOg)g*ovQ`W|Yf5=(!TqKqpXp`326z zX;iNKjN9;UjKz&CtG28f)y@voz}t|;uxBx#r9Mj~7r#U$#lJ}3wjd{zoE4~KsC55 zFJuLhH`avm$+1OsMDuPMA|PSe1u}olY&(v0HVh<5SzD8UDYtxff;F>(#H=KOwackhc9x4s*+5Li_WONZ1EXs_DZ$mTMd4vpqp@jAgMD!y%m{AxBu9-tH~0DA%Cy>;s7-!\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Saldo" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Bestel" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Bestellingen" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Persoonlijke info" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Rechten" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Belangrijke data" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Extra info" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Geselecteerde threads sluiten" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Geselecteerde draden openen" @@ -54,80 +54,104 @@ msgstr "Geselecteerde draden openen" msgid "authentication" msgstr "Authenticatie" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Open" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Gesloten" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Gebruiker" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personeel" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Systeem" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Een tokenpaar verkrijgen" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Verkrijg een tokenpaar (refresh en access) voor verificatie." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Een tokenpaar vernieuwen" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Een tokenpaar verversen (refresh en access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Een token verifiëren" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Een token verifiëren (verversen of toegang)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "The token is valid" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Een nieuwe gebruiker maken" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "De gegevens van een gebruiker ophalen" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "De gegevens van een gebruiker bijwerken" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "De gegevens van een gebruiker gedeeltelijk bijwerken" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Een gebruiker verwijderen" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Het wachtwoord van een gebruiker opnieuw instellen door een e-mail met het " "wachtwoord opnieuw in te stellen" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Avatar uploaden voor een gebruiker afhandelen" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Wachtwoorden komen niet overeen" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Een gebruikersaccount activeren" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Activeringslink is ongeldig of account is al geactiveerd" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Laatst bekeken producten samenvoegen" @@ -175,20 +199,21 @@ msgstr "Account is al geactiveerd..." msgid "something went wrong: {e!s}" msgstr "Er ging iets mis: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token is invalid!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Groepen" @@ -196,7 +221,8 @@ msgstr "Groepen" msgid "wishlist" msgstr "Verlanglijst" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -207,79 +233,34 @@ msgstr "Attributen kunnen worden gebruikt om aangepaste gegevens op te slaan" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Taal is een van de {settings.LANGUAGES} met standaard {settings." -"LANGUAGE_CODE}" +"Taal is een van de {settings.LANGUAGES} met standaard " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adressen" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Open" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Gesloten" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Gebruiker" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personeel" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Systeem" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Voor anonieme threads" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Draadje chatten" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Gespreksonderwerpen" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Geef gebruiker of e-mail op voor anonieme thread." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "De toegewezen gebruiker moet een personeelsgebruiker zijn." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chatbericht" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chatberichten" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Voor anonieme chats is een geldig e-mailadres vereist." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Bericht moet 1..1028 tekens bevatten." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" "We zijn al op zoek naar de operator om je antwoord te geven, wacht even!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "De toegewezen gebruiker moet een personeelsgebruiker zijn." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -298,91 +279,119 @@ msgstr "" "model is ontworpen voor specifieke gebruikssituaties voor verbeterd " "gebruikersbeheer." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "E-mailadres gebruiker" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Telefoonnummer" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Telefoonnummer gebruiker" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Voornaam" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Achternaam" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Afbeelding gebruikersprofiel" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Is geverifieerd" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Verificatiestatus van de gebruiker" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Is actief" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Deselecteer dit in plaats van accounts te verwijderen" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Is geabonneerd" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Inschrijvingsstatus nieuwsbrief gebruiker" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Activeringstoken" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attributen" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Gebruiker" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Gebruikers" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Voor anonieme threads" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Draadje chatten" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Gespreksonderwerpen" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "gebruiker of e-mail opgeven voor anonieme thread." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "De toegewezen gebruiker moet een personeelsgebruiker zijn." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chatbericht" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chatberichten" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Groep" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Uitstekende penning" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Uitstaande tokens" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token op zwarte lijst" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Tokens op de zwarte lijst" @@ -445,12 +454,11 @@ msgstr "Hallo %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " 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:" #: engine/vibes_auth/templates/user_reset_password_email.html:95 msgid "reset password" @@ -494,8 +502,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " 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:" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -530,8 +538,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -540,16 +548,16 @@ msgstr "" "verversingstokens en gebruikersgegevens. Deze weergave beheert het proces " "van het afhandelen van authenticatie op basis van tokens, waarbij clients " "een paar JWT-tokens kunnen krijgen (toegang en verversen) met behulp van " -"verstrekte referenties. Het is gebouwd bovenop een basis token view en zorgt " -"voor een goede rate limiting om te beschermen tegen brute force aanvallen." +"verstrekte referenties. Het is gebouwd bovenop een basis token view en zorgt" +" voor een goede rate limiting om te beschermen tegen brute force aanvallen." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Ververst tokens voor authenticatiedoeleinden. Deze klasse wordt gebruikt om " "functionaliteit te bieden voor het verversen van tokens als onderdeel van " @@ -573,17 +581,10 @@ msgstr "Het token is ongeldig" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementatie van gebruikersviewset.\n" -"Biedt een set acties voor het beheren van gebruikersgerelateerde gegevens " -"zoals aanmaken, opvragen, bijwerken, verwijderen en aangepaste acties zoals " -"wachtwoord opnieuw instellen, avatar uploaden, account activeren en onlangs " -"bekeken items samenvoegen. Deze klasse breidt de mixins en GenericViewSet " -"uit voor robuuste API afhandeling." +"Biedt een set acties voor het beheren van gebruikersgerelateerde gegevens zoals aanmaken, opvragen, bijwerken, verwijderen en aangepaste acties zoals wachtwoord opnieuw instellen, avatar uploaden, account activeren en onlangs bekeken items samenvoegen. Deze klasse breidt de mixins en GenericViewSet uit voor robuuste API afhandeling." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/no_NO/LC_MESSAGES/django.mo index d01ce91a308c79769df52d63c09b56e4089d3232..2a1bf60ee119e748cc259a80980d431abfcca166 100644 GIT binary patch delta 2803 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Balanse" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Bestilling" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Bestillinger" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Personlig informasjon" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Tillatelser" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Viktige datoer" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Ytterligere informasjon" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Lukk utvalgte tråder" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Åpne utvalgte tråder" @@ -54,80 +54,104 @@ msgstr "Åpne utvalgte tråder" msgid "authentication" msgstr "Autentisering" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Åpne" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Stengt" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Bruker" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Staben" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Få et tokenpar" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Skaff et tokenpar (refresh og access) for autentisering." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Oppdater et tokenpar" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Oppdater et tokenpar (refresh og access)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Bekreft et token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Bekreft et token (oppdatering eller tilgang)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Tokenet er gyldig" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Opprett en ny bruker" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Hent informasjon om en bruker" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Oppdatere en brukers opplysninger" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "delvis oppdatere en brukers detaljer" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Slett en bruker" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Tilbakestill en brukers passord ved å sende en e-post om tilbakestilling av " "passord" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Håndtere opplasting av avatarer for en bruker" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Bekreft tilbakestilling av en brukers passord" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Passordene stemmer ikke overens" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Aktiver en brukers konto" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Aktiveringslenken er ugyldig eller kontoen er allerede aktivert" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Slå sammen nylig viste produkter lagret hos kunden" @@ -173,20 +197,21 @@ msgstr "Kontoen er allerede aktivert..." msgid "something went wrong: {e!s}" msgstr "Noe gikk galt: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Tokenet er ugyldig!" #: engine/vibes_auth/graphene/object_types.py:40 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 "" "Produktene som denne brukeren har sett på sist (maks. 48), i omvendt " "kronologisk rekkefølge." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupper" @@ -194,7 +219,8 @@ msgstr "Grupper" msgid "wishlist" msgstr "Ønskeliste" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -205,8 +231,8 @@ msgstr "Attributter kan brukes til å lagre egendefinerte data" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "Språket er en av {settings.LANGUAGES} med standard {settings.LANGUAGE_CODE}." @@ -214,68 +240,23 @@ msgstr "" msgid "address set" msgstr "Adresser" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Åpne" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Stengt" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Bruker" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Staben" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "For anonyme tråder" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Chat-tråd" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Chat-tråder" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Oppgi bruker eller e-post for anonym tråd." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Mottaker må være en ansatt bruker." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chat-melding" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chat-meldinger" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Gyldig e-post kreves for anonyme chatter." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Meldingen må bestå av 1..1028 tegn." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Vi leter etter operatøren som kan svare deg allerede, vent litt!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Mottaker må være en ansatt bruker." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -293,91 +274,119 @@ msgstr "" "aktivering for å verifisere kontoer. User-modellen er utformet for å " "håndtere spesifikke brukstilfeller for forbedret brukeradministrasjon." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-post" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Brukerens e-postadresse" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Telefonnummer" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Brukerens telefonnummer" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Fornavn" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Etternavn" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Bilde av brukerprofil" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Er verifisert" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Brukerens bekreftelsesstatus" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Er aktiv" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Fjern dette valget i stedet for å slette kontoer" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Er abonnert" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Status for brukerens abonnement på nyhetsbrev" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Aktiveringstoken" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Egenskaper" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Bruker" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Brukere" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "For anonyme tråder" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Chat-tråd" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Chat-tråder" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "oppgi bruker eller e-post for anonym tråd." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "mottakeren må være en personalbruker." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chat-melding" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chat-meldinger" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Gruppe" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Enestående symbol" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Outstanding tokens" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Svartelistet token" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Svartelistede tokens" @@ -441,8 +450,7 @@ msgstr "Hallo %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Vi har mottatt en forespørsel om å tilbakestille passordet ditt. Vennligst " @@ -526,26 +534,26 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Representerer en visning for å hente et par tilgangs- og oppdateringstokener " -"og brukerdata. Denne visningen administrerer prosessen med å håndtere " -"tokenbasert autentisering, der klienter kan hente et par JWT-tokens (tilgang " -"og oppdatering) ved hjelp av oppgitt legitimasjon. Den er bygget på toppen " -"av en grunnleggende token-visning og sørger for riktig hastighetsbegrensning " -"for å beskytte mot brute force-angrep." +"Representerer en visning for å hente et par tilgangs- og oppdateringstokener" +" og brukerdata. Denne visningen administrerer prosessen med å håndtere " +"tokenbasert autentisering, der klienter kan hente et par JWT-tokens (tilgang" +" og oppdatering) ved hjelp av oppgitt legitimasjon. Den er bygget på toppen " +"av en grunnleggende token-visning og sørger for riktig hastighetsbegrensning" +" for å beskytte mot brute force-angrep." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Håndterer oppdatering av tokens for autentiseringsformål. Denne klassen " "brukes til å tilby funksjonalitet for tokenoppdatering som en del av et " @@ -559,8 +567,8 @@ msgid "" "Represents a view for verifying JSON Web Tokens (JWT) using specific " "serialization and validation logic. " msgstr "" -"Representerer en visning for verifisering av JSON Web Tokens (JWT) ved hjelp " -"av spesifikk serialiserings- og valideringslogikk." +"Representerer en visning for verifisering av JSON Web Tokens (JWT) ved hjelp" +" av spesifikk serialiserings- og valideringslogikk." #: engine/vibes_auth/views.py:80 msgid "the token is invalid" @@ -569,17 +577,10 @@ msgstr "Tokenet er ugyldig" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementering av brukervisningssett.\n" -"Tilbyr et sett med handlinger som håndterer brukerrelaterte data som " -"oppretting, henting, oppdateringer, sletting og egendefinerte handlinger, " -"inkludert tilbakestilling av passord, opplasting av avatar, kontoaktivering " -"og sammenslåing av nylig viste elementer. Denne klassen utvider mixins og " -"GenericViewSet for robust API-håndtering." +"Tilbyr et sett med handlinger som håndterer brukerrelaterte data som oppretting, henting, oppdateringer, sletting og egendefinerte handlinger, inkludert tilbakestilling av passord, opplasting av avatar, kontoaktivering og sammenslåing av nylig viste elementer. Denne klassen utvider mixins og GenericViewSet for robust API-håndtering." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo index ecd5d05fe77137e398c8d383a8bf8b2d5cdb0dce..d1967ebc94a8a9ed00b65753523f8ccf14b05950 100644 GIT binary patch delta 2785 zcmYk;d2Ccw6vy#XC}j$T(gkQK&{vS9lmfDqr4}litb&M86zHR!(&;j-of(?ekf{nG z5<)bMK_LhV>OaPMGaypK^0Tu;Ds#`fk)fHk7o&ARLSNs8X!P@wfxEfOk+e{|s5QUBzPjV<`F8iV7J;E0~7* z!W>jaR$v}(L6zot&qJusokZqh-=Y?99X0VTWEpQFD2 zeUuA*@mH_oFJ#h|#Fia{xu^^+LQQlz?#7Mi!|SM2-$a!lbA%axHkTKjqB2xTPP1bv zx7|cNFM*As3`H}%3kMm)3Q?PD8EPWy@GJub@nP<#Q;#WFh1%8oQ4c(fdA-a!@zVse zpDB2&-e(n>Xgae~iE~h;8ig+;Q2$9>ETQA0aU3bUgVQmeWigg*_H0A-zlECUWz;78 z8y~~O{CLJzqE;9}m1-C2!3U7!+MB2abfQn^zl)2-bo`5>u!O?t{JW?xHlZ@og37>7 z)I?68GISI9vqW~|)-+u8renWln7P7A_hr+#tGqD`c zV1LXjWKvj&THz7YijSjedJeU@F5znY9ep^9!LZhg8?LqsDn-3i(%RPSBx&zC#_4 zD>x8u;au!SrMigx&&1WZ5qG0jdfoFM)P#Lg{A-}4 zbSUM=P!IYN9lYXs2Q|TA6khL-MGZ6$wW-Qb-;W>%#a_k&{18==tC)^A@EN>|T3}gp zMts*+<5)WOp?3Fi?c;2TB({Qs#Z>@z7Mty+*A|V=~|)EUqyt8GD78C zOUxtudVU%goV-}u&TE}_-GCfzTS+`iY$MoTu^%0Xm8TzSN2`R|kUcGfizmGsN*-$@ zG*+TVkZs~M)?dOU<+X+Kr|2P-*-px|a(WqUXOym(;iQyeTC2#K4u`Q)DX+$U#*cSBro%%>9>}>Tr zt`iEoRaH(Te{Df?MY~CFHR|F zKcAJ^@k3VFceE|fmr~&m)iea%ra&ar+P-q+n2xsmIY|>MTEBk%?7@maL$m9+wc&_c r7ie`WYFww%4YpKNJCU=eTEevr&A~ve+kSHLyX_0}iaW}u98CNll!PbH delta 2620 zcmYk;drZ}39LMo5*N}@`6$t|l3Pu(IA{bzC5h1NOP-Ku7Dz14jJHVziJw`KSi!Ng{ zlhv#?+FC8!X=9bHRcfu(h7zk*W7_8GkD@u(9}U-fe}3o3*0b~dy`JBX^LsAe=Xs7^ z+Pl~nm`{nEFv<|Inm89>_B#4*;zGH+%q$D9V7wm0nk7I2#$hJv`8r&Qr5KIdaRs(u zZy15MaetAQ*5D0{Gz(Y`Z|jSBxE?EUmKS=k6DyaS_3`{vqFEHiCWSgkLK?7itmS*F z@pkU_B!@b90js$`jW^>p)CA*G7$g>82L0P^DjL86EXNly6E7fb+OJ68b{#e2h*UE^ zmdJ%k*&5Wq3o#qpkulpaDifoqWWJ2bzzNqcF`52tfeLM#rJ2=0DypGYWY9K*O8GHV z1}0D)PrCP0sE*!4y%$8ycoq-g0`5Q`v(!Y+VLyJ40X1C9!f9q+WSMOz>UlRd$ZdFf`iVhd^l&!E-swlnB#I=qYf8>poz%LommK7;&Iw>B>7XaJAm zOW2Mp$fFwCj~dWX)W}bu20G{Z8>*v!kjdFv8dIjKP&2MUz2Ay@uh+dF4p3oGHimgP zh04gcsF7a6V|WE)u#YXQ)cR2=pTt}63)E@3j9P+v&a5`IAJyS;RAx@PzJq+#0v}P) zX1a(P$S-)FhW^H4?mx{jE5bifyEw}e>M$QGx!;1GaI+&g9cK0x3q8#9c4ngi&!Luf z9<@|gafI((!v>xI!F6VL@`p26ihm$&nTKi0I@I$n)QC@_Hs3Th;#WvpmQ)a$X&GwC z8c`kZLXu~l7=uS}D~@8W&i@P*o%8Fc7b00mWh4%jft9EMG@>$e2>IBnT&nSNEW~hr z1hf>zsMI&1+Uvq7^tt+74`3nv+hHo~8+#u|@oVhB78WuNgXqW4P%|sJBQ({iw99N{RXuOXE7IlL_W62MHw$()B&ZUjfx(eLYCcTkdOVvMY}nRKW@V^)PSCK z9YbaAHB7{JF$X_ER?&V&y&u5_QbsaS?-!#^#pWXNznn@l50u&tEW?A?j;B#Gi(?&R z7HWXSs5SNCljy^J_yg)VZ!HOBr~}oGAC=+nQ2qRlIT*Hq{Hv0?AvCf&)EAmi4fUcr z8bLMi24>^O$ST=Ss3nMEgQQ>z?!-LQ#70n?^A*g;Y1Ag3$1uE4>)%0?6OR#0zOJm#E&AQM`ghLtE_}*;xP)fT=C%rg z!{KZmWoN0ZrP4qs#fk32O{gX6A|l*pOxF3)((T=ZmP#d7=f9PTmr%M@lvW*=rShm- zc?fqCeZ+PmnHVIr!9HF93_Ow$AZP>@D>x^d;_Y#GKN-nXV@DMe`9wL?S5ju*^gw+fT^!4oP z>dNUK8m~xA3vP<73=i{;$7ZY#4#c004mPExM2$bU>iOWtjN>umi$zs$pY_B97YZt( O$6Jf0g5|}Nk^cdEmhkle diff --git a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po index 92eb21ff..08d7f5fa 100644 --- a/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Równowaga" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Zamówienie" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Zamówienia" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Informacje osobiste" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Uprawnienia" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Ważne daty" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Dodatkowe informacje" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Zamykanie wybranych wątków" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Otwieranie wybranych wątków" @@ -54,80 +54,105 @@ msgstr "Otwieranie wybranych wątków" msgid "authentication" msgstr "Uwierzytelnianie" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Otwarty" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Zamknięte" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Użytkownik" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personel" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Uzyskanie pary tokenów" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 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." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Odśwież parę tokenów" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Odświeżenie pary tokenów (odświeżenie i dostęp)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Weryfikacja tokena" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Weryfikacja tokena (odświeżenie lub dostęp)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Token jest ważny" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Tworzenie nowego użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Pobieranie danych użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Aktualizacja danych użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "częściowa aktualizacja danych użytkownika" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Usuwanie użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Zresetowanie hasła użytkownika poprzez wysłanie wiadomości e-mail " "resetującej hasło." -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Obsługa przesyłania awatara dla użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Hasła nie są zgodne" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Aktywacja konta użytkownika" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Link aktywacyjny jest nieprawidłowy lub konto zostało już aktywowane." -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Scalanie ostatnio oglądanych produktów przechowywanych przez klienta" @@ -175,20 +200,21 @@ msgstr "Konto zostało już aktywowane..." msgid "something went wrong: {e!s}" msgstr "Coś poszło nie tak: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token jest nieprawidłowy!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupy" @@ -196,7 +222,8 @@ msgstr "Grupy" msgid "wishlist" msgstr "Lista życzeń" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Awatar" @@ -207,78 +234,33 @@ msgstr "Atrybuty mogą być używane do przechowywania niestandardowych danych" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Język jest jednym z {settings.LANGUAGES} z domyślnym {settings." -"LANGUAGE_CODE}." +"Język jest jednym z {settings.LANGUAGES} z domyślnym " +"{settings.LANGUAGE_CODE}." #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adresy" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Otwarty" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Zamknięte" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Użytkownik" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personel" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Dla wątków anonimowych" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Wątek czatu" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Wątki czatu" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Podaj użytkownika lub adres e-mail dla anonimowego wątku." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Odbiorca musi być użytkownikiem personelu." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Wiadomość na czacie" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Wiadomości czatu" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "W przypadku czatów anonimowych wymagany jest prawidłowy adres e-mail." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Wiadomość musi zawierać od 1 do 1028 znaków." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Szukamy operatora, który już ci odpowie, zaczekaj!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Odbiorca musi być użytkownikiem personelu." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -297,91 +279,119 @@ msgstr "" "zaprojektowany do obsługi określonych przypadków użycia w celu ulepszonego " "zarządzania użytkownikami." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Adres e-mail użytkownika" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Numer telefonu" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Numer telefonu użytkownika" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Imię" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Nazwisko" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Obraz profilu użytkownika" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Czy zweryfikowano" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Status weryfikacji użytkownika" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Jest aktywny" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Odznacz to zamiast usuwać konta" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Jest subskrybowany" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Status subskrypcji newslettera użytkownika" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Token aktywacyjny" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Atrybuty" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Użytkownik" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Użytkownicy" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Dla wątków anonimowych" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Wątek czatu" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Wątki czatu" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "Podaj użytkownika lub adres e-mail dla anonimowego wątku." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "cesjonariusz musi być użytkownikiem personelu." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Wiadomość na czacie" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Wiadomości czatu" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Grupa" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Wyjątkowy token" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Zaległe tokeny" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token na czarnej liście" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Tokeny znajdujące się na czarnej liście" @@ -444,8 +454,7 @@ msgstr "Witaj %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Otrzymaliśmy prośbę o zresetowanie hasła. Zresetuj hasło, klikając poniższy " @@ -524,19 +533,19 @@ 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." #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"Reprezentuje widok pobierania pary tokenów dostępu i odświeżania oraz danych " -"użytkownika. Ten widok zarządza procesem obsługi uwierzytelniania opartego " +"Reprezentuje widok pobierania pary tokenów dostępu i odświeżania oraz danych" +" użytkownika. Ten widok zarządza procesem obsługi uwierzytelniania opartego " "na tokenach, w którym klienci mogą uzyskać parę tokenów JWT (dostęp i " "odświeżanie) przy użyciu dostarczonych poświadczeń. Jest on zbudowany w " "oparciu o podstawowy widok tokenu i zapewnia odpowiednie ograniczenie " @@ -544,11 +553,11 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Obsługuje odświeżanie tokenów do celów uwierzytelniania. Klasa ta służy do " "zapewnienia funkcjonalności dla operacji odświeżania tokenów w ramach " @@ -572,17 +581,10 @@ msgstr "Token jest nieprawidłowy" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementacja zestawu widoków użytkownika.\n" -"Zapewnia zestaw akcji, które zarządzają danymi związanymi z użytkownikiem, " -"takimi jak tworzenie, pobieranie, aktualizacje, usuwanie i niestandardowe " -"akcje, w tym resetowanie hasła, przesyłanie awatara, aktywacja konta i " -"scalanie ostatnio przeglądanych elementów. Ta klasa rozszerza mixiny i " -"GenericViewSet dla solidnej obsługi API." +"Zapewnia zestaw akcji, które zarządzają danymi związanymi z użytkownikiem, takimi jak tworzenie, pobieranie, aktualizacje, usuwanie i niestandardowe akcje, w tym resetowanie hasła, przesyłanie awatara, aktywacja konta i scalanie ostatnio przeglądanych elementów. Ta klasa rozszerza mixiny i GenericViewSet dla solidnej obsługi API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo index f88f6c144999b5d6f07e5268d56988c09ddd087f..3ad47cca510fb5f3511ed7352471a539b16a646c 100644 GIT binary patch delta 2757 zcmYk;d2Ccw6vy#Xy4XUYE#0P2+G(pW1)&>-vZ%#ck;Pg>fmWeR>9ifXSZ1aYHDn-2 zNYG%&1T=;sh6pigBn~dP5CX;+QIswIqYxn`;(`zp6M}%>-^^>mP0#z>_vX!A&b@cw zn16Rq`25(Uokm$t6cT3>&GzBTcX6S(Mw%620j6Uej>bkDg-f01ZJ5V>FQ(vT%*Ack zonW>XCv%@hBV{-plgz@lf{I>TiD!5*h#fe8jG3S3?`D`KV_s&w;X>q#R)!Dqo(J#c zz9%c*@M~Dl{pUCiZ=xpV8cU~Giv_qAbLrn+q%xBSuj6<;jkIZ3kiP9UYNi?4X8hTB zF3Ly+GAV1qDcFL=xCI%zy@kreAyhIyLuKH&;}y)Je=Eo_qYs;c^YDIDLmQF7+g?=4 zKR{*TD5~SHocmL#j($Xa?>uVew{Qa%kly9^Dr!Q1V;|neuo~`T;WWb+Fb%h&p6|dV z_=fZR8Y=ZSPz_l=X@yLjh~=oIXhsiiKuusjYRx}ECT&0AT)di3{xzeiw4xc*puR90 zm663*f^Dd!+2lBcdhakY7CV8Oz(v%+uOQpV{zENI8VgP`tQNHd3vm_>7Lb3f)%!fq z$c`X?cAASi{1dleD*0^1?Wl$>qXu{jHIpn})_|HESED)#Ad|HrROUWJ_46s}`zOOx z^u=GC2mc_0wiLGPJy?v&P$O!fi*PHpVk%xlrTP!l668!Urex)#{&th{{kvAcyMhJgFp|{nT^YkWY`WQ%k~~>0AHg9dL4C4 z^UFCg=)qF#LZx^cDwBIqr{!ZLNp=jCkqekc|2Bq&n#Thd-i@uOREIGIx1%=KPSoyx z)A1x~FWf+7Fq5<_#EDpi>rkoQhp{zBwRaM=NzY+2{o5tygUiUDUFD*b7SdY)XW$Ba z8?{$Pkfu$TgF1%0Pz~iwgrB|MAj;5xQoW;MU}xE8f!=Ws0kUQPZR zsodm&*07-_{z3~fXzNEcxCfQG_DY{H>$(^*o}uV z6HCLj@eXQGDO!Qb$VTK8*^`8dzN{rtqdFaH2rYs3i^}pivEPhU)U}K{zHP)3LK|E~ zowBO2eZgtf{^y@jViD0nRrWi?lwh&zims%EHtF@{juJBbjX zrIOYGLM=@5O<=X4ipFt0ybzVnw5n2*$G!-{7l1L(22_3!Rl1=3a=Z2My z6%rcTL)yq}3#TxD{dlm9v32%hkMq$mk5JJMOFuD}m`^-RJWgou43}i5G8zNK)6V^X zqtLNlNocd@66wl+F~Jdy?PUG3O(q73dSVtaToS41II?$Q|1(;Ksl;&MkXZBZjidI| zo#iQR7860|VfkZJ`kb2uj@rR4LOZvFXeSDzKc}r45$#I1|oCQ zr$kPBS4B^9ZW#-fVoQ2B4kdEU^Vx7Yu?H{c%d2G-D4pRYgUi+opI7}-+s RQ9@^=u4G1ZPUY65{{es<8F2sr delta 2627 zcmYk;drZ}39LMo5H$5PCP(&p_KtzgL+!RUyHP8~o&>+AxZYM4om(A(&)EZhW%SLQ2 zbLHCbk8;vZ<=kp(g#J~K4-q& zJMHy-7auxdv=L$zF%x2T8v7RWLAx1lb|2otNZp7qi-IUzf-6z?vvC;~<09OSOR*7q zf(Ts4^;I6qz`Gb~=Cd@O))%ud7c1~O4|HP(Rz#b5x&LmASr|sd23`=03}8uE&G%N} z{ao*j3%uY}+{E=1uE5_=3yh3sl9+?Zyx-dCXaWbZ3}3^Qco`YfzDM3|f1p+zl3>O^ zi{XPsSq5t2d6xtaJ9HS^EYYkA5>Nv*A(OTdRLYN` zGBAO9@hSIu67`}FP|x{ME544;;~m_CeXLRonZbVi27Ma1nvK)S8jx+aR@D72+=;{P z{mZD7e~lVw7MJ4>xCZZ`wje9XY%MmT7H}A~=f{z?+J{()my*c8Rus%AT7d`kKnyA) z>8PzJc5QI~-iN%)j-Vz!ftv6cq-^XwvS|Ahoub3_T;D})O=)sqB3qKlKYeTFLoXV_ zQG6X+a4C7zKnGA08b!_gBx<6wu0Nt)^f$6N%VaQRsuH#0D%A5$sONgz>q9;|Ov;X9 z7EYovas@ThYj_NAp$EN`uu?mSO8F^F!D-ZKxrupPZ{f_UsE1LR8beLsjC=nh)N{Ts z>8LvAQ8WJ)rx?gXB^7XeF)dKtKcTj0S$ZI2DOk#N8Ri9>4d7Qn{C2R>%Al9k==;B* z#{UzwfO~kB?=5EbJnysf*=7&$hdJDUi7b!BT0N3Y>qSlEC~C$RP{(o>AI3RcjafN? zRM(<1+KM_QBS=#01q{d2ScPXXQ|JFS9i=*&4b+TNP(_uAs^$XMHdHN)p;G$}Zo`kU z5cMOVR2QN4ybd*98>%=vFboIX`v)_mY%*UV6S3@U-iYdo^$oAV?_z+%1t>`b@jL|%$ z741UpX$xxL{irP&Mt0FgQRn>}>iMgvEuBYAIF$X={n!HXuT*7oLo=&DrE)huhA(3b zevA6v9A@G_r~y*>ax<3VGk5~EMgO9zJ+_FGfElPQ^P>LlL*`;{7Lk7qIKvI4>NaZN z-;o1g;SUDPK^0LQYGqwmhGVEyPh&h@!5+MUu~=Ii7{3{nnIou7Od^NC9@YLoMQE^n z1QU1matJF4HNBV<<}?kWwvpK5^a3k$yAH~TwyEU*H|ck~*VQ=a_Vs>eFWc~0_vQkc zDaGv^OAd*1Om(ytnlkqY(L!jO)Ko{Rp-v)%P-C&qkCys6vIFYSB6R+n=rj;I0csS# zb4;8IKAvEVK@{(~3LPSN?m6 z8bSrLndm2;CRB(zE^3j)b574J4fhi&*i@p9;DkDDHJ=BFbfSvbOC%6|gnr(45>_=d z`dz)8Q+kQ=r50`2o7o(k4Vn-4@G{q$X}ljA2$Bd@}vHeZTeO8rym Z`5u4ty7{p2wFRGy7Zk4W=NI;e{s*{(@*)5L diff --git a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index 47d588b3..63d1578f 100644 --- a/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Equilíbrio" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Pedido" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Pedidos" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Informações pessoais" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permissões" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Datas importantes" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Informações adicionais" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Fechar as linhas selecionadas" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Abrir linhas selecionadas" @@ -54,79 +54,103 @@ msgstr "Abrir linhas selecionadas" msgid "authentication" msgstr "Autenticação" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Aberto" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Fechado" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Usuário" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Equipe" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Sistema" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Obter um par de tokens" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Obter um par de tokens (atualização e acesso) para autenticação." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Atualizar um par de tokens" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Atualizar um par de tokens (atualizar e acessar)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verificar um token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verificar um token (atualização ou acesso)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "O token é válido" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Criar um novo usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Recuperar os detalhes de um usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Atualizar os detalhes de um usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "atualizar parcialmente os detalhes de um usuário" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Excluir um usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Redefinir a senha de um usuário enviando um e-mail de redefinição de senha" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Manipular o upload do avatar de um usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "As senhas não correspondem" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Ativar a conta de um usuário" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "O link de ativação é inválido ou a conta já está ativada" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Mesclar produtos recentemente visualizados armazenados pelo cliente" @@ -172,20 +196,21 @@ msgstr "A conta já foi ativada..." msgid "something went wrong: {e!s}" msgstr "Algo deu errado: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "O token é inválido!" #: engine/vibes_auth/graphene/object_types.py:40 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." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupos" @@ -193,7 +218,8 @@ msgstr "Grupos" msgid "wishlist" msgstr "Lista de desejos" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -204,8 +230,8 @@ msgstr "Os atributos podem ser usados para armazenar dados personalizados" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "O idioma é um dos {settings.LANGUAGES} com o padrão {settings.LANGUAGE_CODE}" @@ -213,68 +239,23 @@ msgstr "" msgid "address set" msgstr "Endereços" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Aberto" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Fechado" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Usuário" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Equipe" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Sistema" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Para tópicos anônimos" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Linha de bate-papo" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Tópicos de bate-papo" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Forneça o usuário ou e-mail para o tópico anônimo." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "O responsável deve ser um usuário da equipe." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Mensagem de bate-papo" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Mensagens de bate-papo" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "É necessário um e-mail válido para chats anônimos." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "A mensagem deve ter de 1 a 1028 caracteres." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Estamos procurando o operador para lhe responder, aguarde!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "O responsável deve ser um usuário da equipe." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -293,91 +274,119 @@ msgstr "" "modelo User foi projetado para lidar com casos de uso específicos para o " "gerenciamento aprimorado de usuários." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Endereço de e-mail do usuário" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Número de telefone" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Número de telefone do usuário" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Primeiro nome" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Sobrenome" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Imagem do perfil do usuário" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "É verificado" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Status de verificação do usuário" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Está ativo" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Desmarque essa opção em vez de excluir contas" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Está inscrito" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Status da assinatura do boletim informativo do usuário" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Token de ativação" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Atributos" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Usuário" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Usuários" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Para tópicos anônimos" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Linha de bate-papo" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Tópicos de bate-papo" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "forneça o usuário ou e-mail para o tópico anônimo." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "O responsável deve ser um usuário da equipe." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Mensagem de bate-papo" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Mensagens de bate-papo" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Grupo" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Token excepcional" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Tokens pendentes" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token na lista negra" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Tokens na lista negra" @@ -441,8 +450,7 @@ msgstr "Olá %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Recebemos uma solicitação para redefinir sua senha. Para redefinir sua " @@ -526,32 +534,32 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" "Representa uma visualização para obter um par de tokens de acesso e " "atualização e os dados do usuário. Essa visualização gerencia o processo de " -"manipulação da autenticação baseada em token, em que os clientes podem obter " -"um par de tokens JWT (acesso e atualização) usando as credenciais " +"manipulação da autenticação baseada em token, em que os clientes podem obter" +" um par de tokens JWT (acesso e atualização) usando as credenciais " "fornecidas. Ela é construída sobre uma visualização de token de base e " "garante a limitação de taxa adequada para proteger contra ataques de força " "bruta." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Trata da atualização de tokens para fins de autenticação. Essa classe é " "usada para fornecer funcionalidade para operações de atualização de tokens " -"como parte de um sistema de autenticação. Ela garante que os clientes possam " -"solicitar um token atualizado dentro dos limites de taxa definidos. A " +"como parte de um sistema de autenticação. Ela garante que os clientes possam" +" solicitar um token atualizado dentro dos limites de taxa definidos. A " "exibição depende do serializador associado para validar as entradas de " "atualização de token e produzir saídas apropriadas." @@ -560,8 +568,8 @@ msgid "" "Represents a view for verifying JSON Web Tokens (JWT) using specific " "serialization and validation logic. " msgstr "" -"Representa uma visualização para verificação de JSON Web Tokens (JWT) usando " -"lógica específica de serialização e validação." +"Representa uma visualização para verificação de JSON Web Tokens (JWT) usando" +" lógica específica de serialização e validação." #: engine/vibes_auth/views.py:80 msgid "the token is invalid" @@ -570,17 +578,10 @@ msgstr "O token é inválido" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementação do conjunto de visualizações do usuário.\n" -"Fornece um conjunto de ações que gerenciam dados relacionados ao usuário, " -"como criação, recuperação, atualizações, exclusão e ações personalizadas, " -"incluindo redefinição de senha, upload de avatar, ativação de conta e " -"mesclagem de itens visualizados recentemente. Essa classe estende os mixins " -"e o GenericViewSet para um tratamento robusto da API." +"Fornece um conjunto de ações que gerenciam dados relacionados ao usuário, como criação, recuperação, atualizações, exclusão e ações personalizadas, incluindo redefinição de senha, upload de avatar, ativação de conta e mesclagem de itens visualizados recentemente. Essa classe estende os mixins e o GenericViewSet para um tratamento robusto da API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo index d429168b0dd605eb96f9193c122905e09276c2a3..d90716ebf7a202a66e8d461dc9610bd1e6a5e559 100644 GIT binary patch delta 2766 zcmYk;Yiv_>7{~EvgUt>m+hCX0-8xWU8w18R888u;fZWDSZd1m}){Q|o=Gsc8j$)9I z;3bkuFoOlWzzZ)SSV<6-7;m5^W}u0XAPKxP3ZlFe!SAmv>ikN@yjr?ck$H+_@cQ-m=&Q1)3FvG#Q8W9S3B1?VJ_zZOvT-pgZpqx zlG#x#<2;Q{#$h!MH;dSM4s_#2{Fxhr*oq5BnRRge!wj<&%*{-6T!1`i<8U7LO~gr@ zZ_7$_{1(pP{BwK=|3fXzJ(@wW20geHa~R)V=3qJ(`Y|6bB7NFTWNf>KT4}}@Gd`Bj zmohR1S(G(kIc~sW+=I;Bj-fK~2`ZVNp)&Bb<4w$BeDh?RF@}}nT%3*SXcsbhJBmvA z$EZwvi5mDj=llX{pkGnXT}7?@F7}~^^sd8$s0ICnop=u;>bR4Q(+Xd}G~A22z8_cO z5$F2fsMP<9>d5j)D`et$EJba_3Y>_2s0AEH?fGeB(RKyv@KzrA*NQ6WMJuR6JunlM zk)>FIn^0TxlH&mCzE6?4*pH|MTt`j(CQ?Rr2emb6Y&glV8q^jn#u*s)kbmvf2`*@6 zXOWLxh}&EiXM(FUyM{45o#%-lxx zlSH8?W06b_l&S)x4=Y7g>jKow8}JGpwW0R5p8b&BsQU&`&mF@x$!1@nq5EOBi$f2y z(nJqAzK1H_kMR8@_Wv{o)49;XGBndeI2#9%WLQRNVnyXRjq^q5#TStRwgIfem~;IW zDx+ECUzr?-saS{Xmer&BX+oFY|NR_1#)W?5W0&|+s)kWHdN2#q(2Z3%)^RPW`1YX& zdK)+58LU7zX;LjMK>fWL)n6~FhIZj_# zJT-CNgo`=fi7xyewX%z->b{JbcmvhXU8L@;s*>#CDpYNSE6Kl7^BNa4^W&&JJ&9R( z4(H-!9FO^I+)SK@tFR9>(4gZr)P4V;_S(aK?Zj&A#29Me5@t0TXH=7atz;<|l!=3= zJw1ua#Ce>6$u)@ymZ3VRK^6Kk)N8sO_51;(ZtVoBs4t@3`L#S!CwS+oV23m+G2x=|f);X%LCZe9mBQ_B$31v}D*`ge*f#5Aw z{gX~&3DHVq6U-srb~xrb>UC68iq)D4)y@5FJtrzw)x#)aE73-Thz-OnVm0wN;n(;| z1FvknJ;!&zIo^)S$TH$tqMe`)<8KO>mr%{gHV(Bh96aTmPzv$JPQ){-SG_WE ziEq}g%BC)iA1w0`+lc$ylbon(y9oWzEF=~XtBCo;P)l(R^h)*+&p7AZjzTq}-w4%2 z4w0_>7ZVjk22n_q5n*Bup&}e=!#L1uL`}y3XS5bw#8BfcvlT-pjw;^!+tZvZC4$by z(&ZfJ)lgfMApUQ)UQ7Mzl@ObWg4l0qP06wL^e<8igTapWF2CQ~84iZLoBdv&HyHA@ zwRyuqf6wID*fH5DMLnSoUm(!y4R^QtLb^kLn-KK2`a`~sKy;dWUs89pF1Vy?YKtx|sgKoFW~clQih~&g delta 2623 zcmY+`e@vBC9LMo5Ab7<~zy(3V5|kebr2Leh6&J%oE3PQ1Xrjf>1T>J=sJv^=tQGcy zSemtJZM0P@-R8T9K$yjcPy;C#$P-OtA~EXO!phYPR; zd!h&|p#LKeEyZg%$1H4FJgqP0Vjni!T7eFh9>YRR^lPd#1qIn?E*5k{f%02Oo|zQ zERhcuWlK>LUxACU4Vklzpfd3cDw!{!GH}@QYfNT*o29|K%~H*Rkb-(qD>7*tMy329 zDg)!FfscCq3DiLEqn?YPR(u+tz**dceXLRonZ$lPgJHe6fsND3LdZ7THq`wtT#tLb z`zKH-pF+K88W-Ykn1}zOwjej%Y#Fwo7VsEq&qtB9+HtJIZ_>%XRus)!v;rUMfkaeB zvQb-6?iup_z7HA8_Ms*|j+*dWNZHtj$fE5FbcznE>0d)_&8iG{B8?g3pSEq`Ljw)r z0el|YZ~=MLi}s)EZ)dtO8hbQM{gB8`mmQ0R%!=PDL;xg;a8~Bavsa+H*#i`krC8;oDEqKcHqljpumLAE>?jF3a@_>U%la?t?`bq~CQEJBV-KOW1>@yj92SD5?hD!vri_;qGY=_%ncQ`CUpqJGFuq9*t&GK5{la5as*mF^boKuu&EwG|(G{mZzPermCs!gkck zdQjE98kz8Cb?KaPvYbnk)pa|u$!WQ%^qLM^_|*0==Krp4uh)QsUR&ck)u>9|?cKbNj$r|z zE#WjdRjz%!e&x`(lV~Fny_;328t5cqyn7_cS-rZds{u8*$avUVX@m%+R~M(o`2}=3 zd~Ed^8*w|)OROW5-o1n>T*p;u)i&u(&Z-}c3SSQ-~+UM#A2d};3zxS5\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Echilibru" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Comandă" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Ordine" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Informații personale" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Permisiuni" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Date importante" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Informații suplimentare" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Închideți firele selectate" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Deschideți firele selectate" @@ -54,81 +54,105 @@ msgstr "Deschideți firele selectate" msgid "authentication" msgstr "Autentificare" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Deschis" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Închis" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Utilizator" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personal" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Sistemul" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Obțineți o pereche de jetoane" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "" "Obțineți o pereche de jetoane (refresh și access) pentru autentificare." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Reîmprospătați o pereche de jetoane" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Actualizați o pereche de jetoane (actualizare și acces)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verificarea unui jeton" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verificarea unui jeton (reîmprospătare sau acces)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Jetonul este valid" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Creați un utilizator nou" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Recuperarea detaliilor unui utilizator" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Actualizarea detaliilor unui utilizator" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "actualizarea parțială a detaliilor unui utilizator" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Ștergeți un utilizator" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Resetați parola unui utilizator prin trimiterea unui e-mail de resetare a " "parolei" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Gestionarea încărcării avatarului pentru un utilizator" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Parolele nu se potrivesc" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Activați contul unui utilizator" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Linkul de activare este invalid sau contul este deja activat" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Fuzionați produsele recent vizualizate stocate de client" @@ -175,20 +199,21 @@ msgstr "Contul a fost deja activat..." msgid "something went wrong: {e!s}" msgstr "Ceva nu a mers bine: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token-ul nu este valabil!" #: engine/vibes_auth/graphene/object_types.py:40 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ă." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupuri" @@ -196,7 +221,8 @@ msgstr "Grupuri" msgid "wishlist" msgstr "Lista dorințelor" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -207,78 +233,33 @@ msgstr "Atributele pot fi utilizate pentru a stoca date personalizate" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Limba este una dintre {settings.LANGUAGES} cu implicit {settings." -"LANGUAGE_CODE}" +"Limba este una dintre {settings.LANGUAGES} cu implicit " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adrese" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Deschis" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Închis" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Utilizator" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personal" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Sistemul" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Pentru subiecte anonime" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Fir de chat" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Fire de chat" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Furnizați utilizatorul sau adresa de e-mail pentru firul anonim." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Destinatarul trebuie să fie un utilizator personal." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Mesaj de chat" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Mesaje de chat" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Pentru chat-urile anonime este necesar un e-mail valid." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Mesajul trebuie să aibă 1..1028 caractere." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Căutăm operatorul care să vă răspundă deja, așteptați!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Destinatarul trebuie să fie un utilizator personal." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -290,98 +271,126 @@ msgid "" msgstr "" "Reprezintă o entitate utilizator cu câmpuri și metode personalizate pentru " "funcționalitate extinsă. Această clasă extinde modelul AbstractUser și " -"integrează caracteristici suplimentare, cum ar fi autentificarea prin e-mail " -"personalizat, metode de validare, starea abonamentului, verificarea și " +"integrează caracteristici suplimentare, cum ar fi autentificarea prin e-mail" +" personalizat, metode de validare, starea abonamentului, verificarea și " "stocarea atributelor. De asemenea, oferă utilitare pentru gestionarea " "elementelor vizualizate recent și activare pe bază de token pentru " "verificarea conturilor. Modelul User este conceput pentru a gestiona cazuri " "de utilizare specifice pentru gestionarea îmbunătățită a utilizatorilor." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-mail" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Adresa de e-mail a utilizatorului" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Număr de telefon" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Numărul de telefon al utilizatorului" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Numele și prenumele" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Numele de familie" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Imagine profil utilizator" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Este verificat" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Statutul de verificare al utilizatorului" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Este activ" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Deselectați acest lucru în loc să ștergeți conturile" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Este abonat" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Starea abonării utilizatorului la buletinul informativ" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Jeton de activare" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Atribute" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Utilizator" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Utilizatori" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Pentru subiecte anonime" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Fir de chat" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Fire de chat" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "furnizați utilizatorul sau adresa de e-mail pentru firul anonim." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "cesionarul trebuie să fie un utilizator personal." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Mesaj de chat" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Mesaje de chat" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Grup" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Simbol excepțional" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Jetoane restante" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token pe lista neagră" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Jetoane pe lista neagră" @@ -446,8 +455,7 @@ msgstr "Bună ziua %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Am primit o cerere de resetare a parolei dumneavoastră. Vă rugăm să vă " @@ -463,8 +471,7 @@ 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:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -532,8 +539,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -548,11 +555,11 @@ msgstr "" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Gestionează actualizarea jetoanelor în scopul autentificării. Această clasă " "este utilizată pentru a oferi funcționalitate pentru operațiunile de " @@ -577,17 +584,10 @@ msgstr "Jetonul nu este valabil" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementarea setului de vizualizări ale utilizatorului.\n" -"Oferă un set de acțiuni care gestionează datele legate de utilizator, cum ar " -"fi crearea, recuperarea, actualizările, ștergerea și acțiunile " -"personalizate, inclusiv resetarea parolei, încărcarea avatarului, activarea " -"contului și îmbinarea elementelor vizualizate recent. Această clasă extinde " -"mixinele și GenericViewSet pentru o gestionare robustă a API." +"Oferă un set de acțiuni care gestionează datele legate de utilizator, cum ar fi crearea, recuperarea, actualizările, ștergerea și acțiunile personalizate, inclusiv resetarea parolei, încărcarea avatarului, activarea contului și îmbinarea elementelor vizualizate recent. Această clasă extinde mixinele și GenericViewSet pentru o gestionare robustă a API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo index b0abca360e5d7a6431159005cda4a965649370b4..f8e3c08fb0ce9bf372205ff4c0c58312b1bd94fb 100644 GIT binary patch delta 2843 zcmZA23rv+|9LMoL2nb3bHw6(rf_DWHByVV-p=m}c-p~{d8vggcP2+q17l8frqnVm;nRuP$8A!fA%jV+=N<`d`I) zc*yDh4VC)4s0&#?(h7ZW7>-0O#atYLn^6;Z54GkekxAS4Sctd#k$=r7o2zIB`KS{n zp)xWD2V(_lX|^~XL>+eu8H;_1n!ruez`KxbWPhWUCWZwk8CHN=g4s9`o6^X?*6I^F zG_nrlW0&~S4R7HNj3%E;aS!T3KcfbC4>gkn4%UE59V<~cYD6Y$2T_@8L*3^z>immd zDmw88r{i~I&=$p(9g2fc87e^y^a*Unr5KGjQK|j~wFJo-W_)ZiUwVqlaUtyvcC0pS zG8;tZqwedS?^LQ$Bi@MG{coc#d`$9A_zq{$j$k35#8T9N-b9`E0fsZhZ!ofl*_GjD zH|W34kGkGj)oh|Y2*|O z9~*jkjm5`kA4X-a3;9@bUT81Oz)ad@xEMELA3gsUsk}hPb)1MR@x3d|nC1E}KysLgx_wb|48F_!yVrYe|=^RW8CZ!qsQ$f>9!_&%oN1uVy(P$@2&YPJAtaUXV|9VjsKm|)?ecQe$X~`VTu7*BeOcb%AC(6548gU7Z#M|; zXgQQvK`^dhW-4$V!Tf?n`$A7mDG^REfBr@ZJzCX-mVx~iESntrI%>o!!$Mdkj&bVU zETOW7h$6J<))K1-522-G%LJbyR>W#_{{$+UvC2lGE?6^Lk6IEvO3xCj3B3n;5-Ki2 zn=gV`O3Ws@OA;0B6BR9&N&(TIU@HaR3qWE1S~ni);6|*%b;N(m<1{jf210AA9nI%R9R9!dGTPd2Zl{0bQ&j4m#w^Dy)UJ&o1`{iZ0j*bKR)n{%j%|<1 zaJy?)H`LU)>YLmi*UB1KmCNm^TD8j6Xt4?&;Oqnbi`Pa?pRof5PAHKN4v6w_$r=m;aQn zeBks}ci#D!9D0ugwgk5NPf~05cewl={-dh+kI}U?u-oN7&J{xEwfX$h(|qfvMfv_1 tm+Px9yc{0b=Bvocj;YD6XAB(b3*;olaq=k_mu&N&3GB*gEuP|u{ula=Wo!Td delta 2668 zcmYk;eQXp(7{~GFt_9lz`a%okXpxq_@FrEErS#SI5Cugk)uOy30;NzY_F6F*I75Yo zK#`wN@Hp&sX^e7uE;W)aKfZe3W2Q?U{+azhiY!O9e~X3oErYBmG|X>J2)$O9}3 zLtK}G_fcP&?l!O&YpH*TWAO%RfWt@9Nt}#9+P4)H)Pa|=4EJF+_9M@9cJ`Wnwofnfp;0IN*62(`nzXQ{dTVnPzp6fqGCQ(rN2J zrMwH3fnHR@eO~=As-gE$_eD`7zKGlKIzEFfj8X$RgPZUYM)cqi6Q_~YBhzflQ0Ld- zLTvZW_oGrCLp^8!$KcOcgtt*sP?%*l2^&xYcm*}*-N;z&Bdo%+S>#_M^79mpAPIFt zDk>v+sHrINtoQ!jg0yAZQ629^b@&jnZ0rMM&~_Z1MTh0oZ=t4UX3*`(oFMt9Y>W9) zLt)&Buj3LNMIQB_&8QCTMD_dts-pv*S5Xc9gAC3Jc$hL(g&J`k>i$O5ee1pY)(8bU zW!+eahfx{%3f0pK*o9Xx37c8MN^Kh|<$X8~KS#YSgV;!Y4)3g9+dj`@sD>|l{)*~w zc;8Vj?2-{P%q$+1g@J%CpiBt7wNgj zc{Oz3*QkMhhnM|kf8h?j|L2R{h8pf?8o1yMoQ*e;k5xRtW`Y~=QT!OW#ctykoc5sE z!}u;LgV&IcrA>F&LI~-*ExoC2po> zV<+_%REB=XnOIZmUe|$n)DNN-_bJr#`#mpW1MS-&1zk9Uy9cllcj44BcVjw&$Ebga zECcJDzG8rf&K3NLu)XOz2t51}%%5XayaoP+x@@*0J2C@jXM74DXK6qi!J ziJI$%O0(y18wT)4)JU!&%f$Xh4Irz^-CE0$>{=^oO&!7lJcpV18|wPRYVw~=p{Uxu zFoaK2--x~VDQ4lK8h4eqqSnS z)GyVMe+Fr#AvZOfQ9a*{O3`s-TFpAOxEU=)xPuVq|v3zm9S~QBLrRJHKF$U=g7o71p4$7BqjF%yMxxkwlCq z<`Kn&jtRtOB9CB^+e#vXXd(0_EhMZi9ByuEUAs1SQ%6rlMrL$YpwjQF?+FB_M#IBT z42>?x7&)Y;bIh)2Y4GiU@134ss;A|}yJMfkj>e9~cf?\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Баланс" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Заказ" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Заказы" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Личная информация" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Разрешения" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Важные даты" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Дополнительная информация" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Закрыть выбранные нити" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Открыть выбранные нити" @@ -54,82 +54,107 @@ msgstr "Открыть выбранные нити" msgid "authentication" msgstr "Аутентификация" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Открыть" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Закрытый" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Пользователь" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Персонал" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Система" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Получение пары токенов" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Получите пару токенов (refresh и access) для аутентификации." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Обновить пару токенов" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Обновление пары токенов (обновление и доступ)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Проверка токена" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Проверка токена (обновление или доступ)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Токен действителен" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Создайте нового пользователя" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Получение информации о пользователе" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Обновление данных пользователя" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "частично обновить данные пользователя" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Удалить пользователя" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Сброс пароля пользователя путем отправки электронного сообщения о сбросе " "пароля" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Обработка загрузки аватара для пользователя" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Пароли не совпадают" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Активация учетной записи пользователя" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Ссылка на активацию недействительна или аккаунт уже активирован" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" -msgstr "Объедините недавно просмотренные продукты, хранящиеся в памяти клиента" +msgstr "" +"Объедините недавно просмотренные продукты, хранящиеся в памяти клиента" #: engine/vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." @@ -175,20 +200,21 @@ msgstr "Аккаунт уже активирован..." msgid "something went wrong: {e!s}" msgstr "Что-то пошло не так: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Токен недействителен!" #: engine/vibes_auth/graphene/object_types.py:40 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), в обратном хронологическом порядке." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Группы" @@ -196,7 +222,8 @@ msgstr "Группы" msgid "wishlist" msgstr "Список желаний" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Аватар" @@ -207,8 +234,8 @@ msgstr "Атрибуты могут использоваться для хран #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "Язык - один из {settings.LANGUAGES}, по умолчанию {settings.LANGUAGE_CODE}." @@ -216,68 +243,23 @@ msgstr "" msgid "address set" msgstr "Адреса" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Открыть" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Закрытый" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Пользователь" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Персонал" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Система" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Для анонимных потоков" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Нить чата" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Нити чата" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Укажите пользователя или электронную почту для анонимной темы." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Получатель должен быть штатным пользователем." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Сообщение в чате" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Сообщения в чате" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Для анонимных чатов требуется действительный адрес электронной почты." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Сообщение должно содержать 1...1028 символов." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Мы ищем оператора, чтобы ответить вам, держитесь!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Получатель должен быть штатным пользователем." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -287,100 +269,128 @@ msgid "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." msgstr "" -"Представляет сущность User с настраиваемыми полями и методами для расширения " -"функциональности. Этот класс расширяет модель AbstractUser и включает в себя " -"дополнительные возможности, такие как пользовательский вход по электронной " -"почте, методы проверки, статус подписки, верификация и хранение атрибутов. " -"Он также предоставляет утилиты для управления недавно просмотренными " -"элементами и активации на основе токенов для проверки учетных записей. " -"Модель User предназначена для обработки конкретных случаев использования для " -"расширенного управления пользователями." +"Представляет сущность User с настраиваемыми полями и методами для расширения" +" функциональности. Этот класс расширяет модель AbstractUser и включает в " +"себя дополнительные возможности, такие как пользовательский вход по " +"электронной почте, методы проверки, статус подписки, верификация и хранение " +"атрибутов. Он также предоставляет утилиты для управления недавно " +"просмотренными элементами и активации на основе токенов для проверки учетных" +" записей. Модель User предназначена для обработки конкретных случаев " +"использования для расширенного управления пользователями." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Электронная почта" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Адрес электронной почты пользователя" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Номер телефона" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Номер телефона пользователя" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Имя" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Фамилия" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Изображение профиля пользователя" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Проверено" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Статус верификации пользователя" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Активен" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Снимите этот флажок вместо удаления учетных записей" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Подписан" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Статус подписки пользователя на рассылку новостей" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Активационный токен" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Атрибуты" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Пользователь" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Пользователи" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Для анонимных потоков" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Нить чата" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Нити чата" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "укажите пользователя или e-mail для анонимной темы." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "Назначенный должен быть штатным пользователем." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Сообщение в чате" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Сообщения в чате" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Группа" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Выдающийся жетон" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Выпущенные токены" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Токен в черном списке" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Чёрный список токенов" @@ -443,8 +453,7 @@ msgstr "Привет %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Мы получили запрос на сброс вашего пароля. Пожалуйста, сбросьте пароль, " @@ -460,8 +469,7 @@ 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" " в свой веб-браузер:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 @@ -528,8 +536,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -537,23 +545,23 @@ msgstr "" "Представляет собой представление для получения пары токенов доступа и " "обновления и данных пользователя. Это представление управляет процессом " "аутентификации на основе токенов, когда клиенты могут получить пару JWT-" -"токенов (доступ и обновление), используя предоставленные учетные данные. Оно " -"построено поверх базового представления токенов и обеспечивает надлежащее " +"токенов (доступ и обновление), используя предоставленные учетные данные. Оно" +" построено поверх базового представления токенов и обеспечивает надлежащее " "ограничение скорости для защиты от атак грубой силы." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Обрабатывает обновление токенов для целей аутентификации. Этот класс " "используется для обеспечения функциональности операций обновления токенов в " "рамках системы аутентификации. Он гарантирует, что клиенты могут запросить " -"обновленный токен в рамках установленных ограничений скорости. Представление " -"полагается на ассоциированный сериализатор для проверки входных данных " +"обновленный токен в рамках установленных ограничений скорости. Представление" +" полагается на ассоциированный сериализатор для проверки входных данных " "обновления маркера и создания соответствующих выходных данных." #: engine/vibes_auth/views.py:67 @@ -571,17 +579,10 @@ msgstr "Токен недействителен" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Реализация набора пользовательских представлений.\n" -"Предоставляет набор действий, которые управляют пользовательскими данными, " -"такими как создание, получение, обновление, удаление, а также " -"пользовательскими действиями, включая сброс пароля, загрузку аватара, " -"активацию учетной записи и объединение недавно просмотренных элементов. Этот " -"класс расширяет миксины и GenericViewSet для надежной работы с API." +"Предоставляет набор действий, которые управляют пользовательскими данными, такими как создание, получение, обновление, удаление, а также пользовательскими действиями, включая сброс пароля, загрузку аватара, активацию учетной записи и объединение недавно просмотренных элементов. Этот класс расширяет миксины и GenericViewSet для надежной работы с API." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/sv_SE/LC_MESSAGES/django.mo index 149d7c1fbd6e83ee742cb0f36fe9d0a5f4edd16c..dbd785d90ad382653178b80e4ffaf9393c842880 100644 GIT binary patch delta 2745 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Balans" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Beställning" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Beställningar" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Personlig information" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Behörigheter" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Viktiga datum" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Ytterligare information" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Stäng valda trådar" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Öppna valda trådar" @@ -54,80 +54,104 @@ msgstr "Öppna valda trådar" msgid "authentication" msgstr "Autentisering" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Öppna" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Stängt" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Användare" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personal" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "System" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Skaffa ett tokenpar" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Hämta ett tokenpar (refresh och access) för autentisering." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Uppdatera ett tokenpar" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Uppdatera ett tokenpar (uppdatering och åtkomst)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Verifiera en token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Verifiera en token (uppdatering eller åtkomst)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Token är giltig" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Skapa en ny användare" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Hämta uppgifter om en användare" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Uppdatera en användares uppgifter" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "delvis uppdatera en användares uppgifter" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Ta bort en användare" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Återställ en användares lösenord genom att skicka ett e-postmeddelande om " "återställt lösenord" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Hantera uppladdning av avatar för en användare" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Bekräfta återställning av en användares lösenord" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Lösenorden stämmer inte överens" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Aktivera en användares konto" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Aktiveringslänken är ogiltig eller kontot är redan aktiverat" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "Sammanfoga klientlagrade nyligen visade produkter" @@ -174,20 +198,21 @@ msgstr "Kontot har redan aktiverats..." msgid "something went wrong: {e!s}" msgstr "Något gick fel: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token är ogiltig!" #: engine/vibes_auth/graphene/object_types.py:40 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 den här användaren har tittat på senast (max 48), i omvänd " "kronologisk ordning." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Grupper" @@ -195,7 +220,8 @@ msgstr "Grupper" msgid "wishlist" msgstr "Önskelista" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -206,8 +232,8 @@ msgstr "Attribut kan användas för att lagra anpassade data" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" "Språk är en av {settings.LANGUAGES} med standard {settings.LANGUAGE_CODE}." @@ -215,68 +241,23 @@ msgstr "" msgid "address set" msgstr "Adresser" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Öppna" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Stängt" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Användare" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personal" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "System" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "För anonyma trådar" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Chattråd" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Chatt-trådar" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Ange användare eller e-post för anonym tråd." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Mottagaren måste vara en personalanvändare." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Chattmeddelande" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Chattmeddelanden" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Giltig e-postadress krävs för anonyma chattar." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Meddelandet måste innehålla 1..1028 tecken." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Vi söker efter en operatör som kan svara dig redan nu, så håll ut!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Mottagaren måste vara en personalanvändare." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -294,91 +275,119 @@ msgstr "" "aktivering för att verifiera konton. User-modellen är utformad för att " "hantera specifika användningsfall för förbättrad användarhantering." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-post" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Användarens e-postadress" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Telefonnummer" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Användarens telefonnummer" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Förnamn" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Efternamn" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Bild på användarprofil" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Är verifierad" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Användarens verifieringsstatus" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Är aktiv" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Avmarkera detta istället för att radera konton" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Är prenumererad" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Användarens status för prenumeration på nyhetsbrev" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Aktiveringstoken" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Attribut" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Användare" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Användare" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "För anonyma trådar" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Chattråd" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Chatt-trådar" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "ange användare eller e-post för anonym tråd." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "mottagaren måste vara en personalanvändare." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Chattmeddelande" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Chattmeddelanden" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Grupp" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Utestående symbol" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Utestående polletter" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Svartlistad token" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Svartlistade tokens" @@ -441,8 +450,7 @@ msgstr "Hej %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Vi har fått en begäran om att återställa ditt lösenord. Vänligen återställ " @@ -490,8 +498,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " by clicking the button below:" msgstr "" -"Tack för att du registrerat dig för %(project_name)s. Vänligen aktivera ditt " -"konto genom att klicka på knappen nedan:" +"Tack för att du registrerat dig för %(project_name)s. Vänligen aktivera ditt" +" konto genom att klicka på knappen nedan:" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -526,32 +534,32 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" "Representerar en vy för att hämta ett par access- och refresh-tokens och " "användardata. Den här vyn hanterar processen för hantering av tokenbaserad " -"autentisering där klienter kan hämta ett par JWT-tokens (access och refresh) " -"med hjälp av angivna referenser. Den är byggd ovanpå en bas-tokenvy och " +"autentisering där klienter kan hämta ett par JWT-tokens (access och refresh)" +" med hjälp av angivna referenser. Den är byggd ovanpå en bas-tokenvy och " "säkerställer korrekt hastighetsbegränsning för att skydda mot brute force-" "attacker." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Hanterar uppdatering av tokens för autentiseringsändamål. Denna klass " "används för att tillhandahålla funktionalitet för uppdatering av token som " -"en del av ett autentiseringssystem. Den säkerställer att klienter kan begära " -"en uppfräschad token inom definierade hastighetsgränser. Vyn förlitar sig på " -"den associerade serialiseraren för att validera inmatningar för " +"en del av ett autentiseringssystem. Den säkerställer att klienter kan begära" +" en uppfräschad token inom definierade hastighetsgränser. Vyn förlitar sig " +"på den associerade serialiseraren för att validera inmatningar för " "tokenuppdatering och producera lämpliga utmatningar." #: engine/vibes_auth/views.py:67 @@ -569,17 +577,10 @@ msgstr "Token är ogiltig" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Implementering av användarvyuppsättning.\n" -"Tillhandahåller en uppsättning åtgärder som hanterar användarrelaterade data " -"som skapande, hämtning, uppdateringar, borttagning och anpassade åtgärder " -"inklusive återställning av lösenord, uppladdning av avatar, kontoaktivering " -"och sammanslagning av nyligen visade objekt. Denna klass utökar mixins och " -"GenericViewSet för robust API-hantering." +"Tillhandahåller en uppsättning åtgärder som hanterar användarrelaterade data som skapande, hämtning, uppdateringar, borttagning och anpassade åtgärder inklusive återställning av lösenord, uppladdning av avatar, kontoaktivering och sammanslagning av nyligen visade objekt. Denna klass utökar mixins och GenericViewSet för robust API-hantering." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.mo index 5e3b39fc076b40ca95fe2f54d36efce66af955b4..27aa54a40251670b39cd5bd9445a5e54d9f4eb3c 100644 GIT binary patch delta 2795 zcmY+_dr(wW9KiA4`ao7!5LlIs*ZM$E5JWIvq^LX!%qNMM3afykV7dz$IkXiyC_Toy zI)!DLS=nQziM465a%yav8fTm|r^d0I)tQ`WY)I^%rib?Z-FtEB48Qw1=kC4tobx;9 zUiyzX-Z|z7UWp%aP$;{IWa8prkvH(!VH_xl!$nfjgD#wfBe4WW;7a>^4UVDRgi+Xm zqp=G&J4BA+6xvQ6G64&4h)7UYQ_&08;dfjZz&b385ozT7`>`TJam*;|!O6&tG65HI zT_$GJ-Wq2;_+>1j{VCpq|DaARF`iCw26}J{j;4Qkn#xR09Ks~LfIL(BkiO*(>P%x3 zMEH{=4w{i%WKyyOv#=V|a1Szec@s4gCsC9632Fw;*!E!@{foyfLLZWa3veFlgPuSJ zFGo>R-h-Nn&rv)6%5I-W?dS*8`>vqQ{5H0uhxAtAOQ;k24V&=}2KB+sES%18H#)Hs z_52IC9FN%N`%zQ>7wUs#ENO*NI0+}CF2yp;#CFsPyoI{vVPw+sBNpP#vE*N8G?l05 z4DwNLn1h;;#W)UYP?zRO+ry~W^&(@Dv#1lehC1**WE;ufs7vEy!AXY9KwW}zoQ z@~><40Vi~1r;$Ioz(G6w7588?`CNm~qdw>t)B)Z`ok<)Q>wuQn)}nUgM`r$qBmZ(PyCJyTB6vp>6nI^p%T=AR$wQt!DzgOn(7; z4ce#KvAStjutC%vsF@A!w<|rE&xwnudm!4&Y%m_L@=fqz9qmOEc~$WQYKo&6<-M4I zQyFPFUgr8onSKfbsLZimZ-1_J{a)0WA4LCP*8c>RW1L8$cYW|_JdVi)*8BejR?*Iy zK?m4@^YKI5emqG#k5N2?*Ksx$&a|%IiKA&B#|%7$242G?egAjPV&`+>MJ&P??$)(i zim~{ZZ5LM2K4g0fOK6wRvD}X*Xn&8j7@TVjAcDH2F@@IiGEg%&Q`__}#r6-Cs9(G~ zybsUeC3Mkf!|SMPRy&W)L~5VHX|y{@2V;>iYKCsvdW-ms(_Vs_fy<~9>PNlKv4BD9 z+T~JNiw*cHp1}=RyU?218GMAcbCC$kE^T-KUqfBX{9?;eq;ILV?Z!&lmr(ao4(V#f zc4TgHqlEmk+>%*pjc6_E8g<$29(S4bw;mWm?eHe%VaWq@ zg1hi*+*od9EW5($Z(T)D^6Ycw{CSJaO*j#K#MZk%S{3$^ zj3>4cx@*~UQcA2Kbgc)lRhrUf5D?O%za0s8i&5)MF>>eT8B5EeLf;hEIHG$y fBH{NUz59&U)7?gF`h4STe!5XrniZ-nJ?#7!Tb)CQ delta 2665 zcmYk;3rv+|9LMoL2qt(C{8u0mow&sy!dmaUPDvYD~jb zxFw3fTc{6kQ!b8Tj9I|4xm#b%!vZYBL2hWl%~&?Utd;gx6U|~VKFRGM33-5J;9|Zv z2@9z=O>{fhhvn4Y!yEAmYJ$FG28lD!Pye=_f(Gy?F2Mbmh3AlG+Az|${ehbCm=rVq zSt1`y%5qTypM_I#9WrL?My!Dp=LaYPv8jFV;i&7MEbEE&tpIjUQFUNvsxt0)`)6<5Le<( zul*cq$-hNC=mKWqPdFX_L8Txs!|Y~Ug_^)FRL*;lx!U`<5YJ|?{+dxVPtgp

9Y- ztw;_k74tl6y}!31ec6+!f%l>Y{2H=t>|JEib_$(Mhb7cUQK^~lcL!4GXZy*Py9u$3*WrR_j1`4OCqr%|URf)A3XoU9O@Zt5LtqA zG0;FkIX{5+;9(r%9dHRZQ~#30-H)@Uxl7xF^QpgteK>$K8F4qG|B?IpScb_Ay)TSffwS1b_rAwtI{(!SLmiCZ>sT|-J?~ero_a$O9bgC-;gDwzqxg{eMy$j1 z1#XVpP~Sg+X?Py<@iMZAmR!t+#93Ib^M8_pa`!7HVtR?|bgZX7-*Z1!Qvcbru+&|F z4%|R{R+-!JX#Tb@!${l96 zQqN@>7=x`r&2+!#Dcnc>GHT|Jl)D4yL4EHiDs^9BBSu%S{x4H#qOb`^Q8R2>Y_=WW zK+ETh zY$eJGU7R*2#jBi}`%$I&Ya`?m%CB~5A;G?LUatwLqp2LuCMFZ?HQPeyBF%Omajz=g z#ZQ3qo1vpNhalDeUz@#BBeFHz^?wLCLC$|RI5E!Ac>vRi@q{iP@vu`e%f?N_IASWn zW_NZs*iFO^B8R9TnurvljmRKY5?0aK+1j$LxjDPND_EM68Y+%2i;k)d#`_CGoxV@U zhE}8`#|C$2J{v0Xr~6XFPesDVBjIo)9E^lNhi*sj& gs`Cyf2M-qeLoXCp`GUjw{?M|@Ls6j(OTUQw7lA}0xc~qF diff --git a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po index 0543652a..5ae0c550 100644 --- a/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/th_TH/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "สมดุล" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "คำสั่ง" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "คำสั่ง" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "ข้อมูลส่วนตัว" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "สิทธิ์การใช้งาน" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "วันที่สำคัญ" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "ข้อมูลเพิ่มเติม" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "ปิดกระทู้ที่เลือก" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "เปิดกระทู้ที่เลือก" @@ -54,78 +54,102 @@ msgstr "เปิดกระทู้ที่เลือก" msgid "authentication" msgstr "การยืนยันตัวตน" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "เปิด" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "ปิด" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "ผู้ใช้" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "พนักงาน" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "ระบบ" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "รับคู่โทเค็น" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "รับคู่โทเค็น (รีเฟรชและเข้าถึง) สำหรับการยืนยันตัวตน" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "รีเฟรชคู่โทเค็น" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "รีเฟรชคู่โทเค็น (รีเฟรชและเข้าถึง)" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "ตรวจสอบโทเค็น" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "ตรวจสอบโทเค็น (รีเฟรชหรือเข้าถึง)" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "โทเค็นนี้ใช้ได้" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "สร้างผู้ใช้ใหม่" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "ดึงข้อมูลรายละเอียดของผู้ใช้" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "อัปเดตข้อมูลผู้ใช้" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "อัปเดตข้อมูลของผู้ใช้บางส่วน" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "ลบผู้ใช้" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "รีเซ็ตรหัสผ่านของผู้ใช้โดยการส่งอีเมลรีเซ็ตรหัสผ่าน" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "จัดการการอัปโหลดอวาตาร์สำหรับผู้ใช้" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "ยืนยันการรีเซ็ตรหัสผ่านของผู้ใช้" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "รหัสผ่านไม่ตรงกัน" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "เปิดใช้งานบัญชีผู้ใช้" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "ลิงก์การเปิดใช้งานไม่ถูกต้องหรือบัญชีได้รับการเปิดใช้งานแล้ว" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "รวมสินค้าที่ลูกค้าดูล่าสุดซึ่งเก็บไว้ในระบบของลูกค้า" @@ -171,18 +195,20 @@ msgstr "บัญชีได้รับการเปิดใช้งาน msgid "something went wrong: {e!s}" msgstr "เกิดข้อผิดพลาด: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "โทเคนไม่ถูกต้อง!" #: engine/vibes_auth/graphene/object_types.py:40 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" -msgstr "สินค้าที่ผู้ใช้รายนี้ดูล่าสุด (สูงสุด 48 รายการ) เรียงตามลำดับเวลาล่าสุด" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" +msgstr "" +"สินค้าที่ผู้ใช้รายนี้ดูล่าสุด (สูงสุด 48 รายการ) เรียงตามลำดับเวลาล่าสุด" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "กลุ่ม" @@ -190,7 +216,8 @@ msgstr "กลุ่ม" msgid "wishlist" msgstr "รายการสิ่งที่ต้องการ" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "อวตาร" @@ -201,76 +228,33 @@ msgstr "คุณลักษณะอาจใช้เพื่อเก็บ #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" -msgstr "ภาษาเป็นหนึ่งใน {settings.LANGUAGES} ที่มีค่าเริ่มต้น {settings.LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" +msgstr "" +"ภาษาเป็นหนึ่งใน {settings.LANGUAGES} ที่มีค่าเริ่มต้น " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "ที่อยู่" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "เปิด" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "ปิด" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "ผู้ใช้" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "พนักงาน" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "ระบบ" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "สำหรับกระทู้ที่ไม่ระบุชื่อ" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "หัวข้อสนทนา" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "หัวข้อสนทนา" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "กรุณาให้ข้อมูลผู้ใช้หรืออีเมลสำหรับกระทู้แบบไม่ระบุตัวตน" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "ผู้รับมอบหมายต้องเป็นผู้ใช้ที่เป็นพนักงานเท่านั้น" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "ข้อความแชท" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "ข้อความแชท" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "จำเป็นต้องมีอีเมลที่ถูกต้องสำหรับการแชทแบบไม่ระบุตัวตน" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "ข้อความต้องมีความยาว 1..1028 ตัวอักษร" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "เรากำลังค้นหาผู้ดำเนินการเพื่อตอบคุณอยู่ กรุณารอสักครู่!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "ผู้รับมอบหมายต้องเป็นผู้ใช้ที่เป็นพนักงานเท่านั้น" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -280,98 +264,127 @@ msgid "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." msgstr "" -"แทนที่เอนทิตีผู้ใช้ที่มีฟิลด์และเมธอดที่ปรับแต่งได้สำหรับฟังก์ชันการทำงานที่ขยายออกไป " -"คลาสนี้สืบทอดมาจากโมเดล AbstractUser และรวมคุณสมบัติเพิ่มเติม เช่น " -"การเข้าสู่ระบบด้วยอีเมลที่กำหนดเอง วิธีการตรวจสอบความถูกต้อง สถานะการสมัครสมาชิก การยืนยัน " -"และการจัดเก็บแอตทริบิวต์ " -"นอกจากนี้ยังมียูทิลิตี้สำหรับจัดการรายการที่ดูล่าสุดและการเปิดใช้งานแบบใช้โทเค็นเพื่อยืนยันบัญชี " +"แทนที่เอนทิตีผู้ใช้ที่มีฟิลด์และเมธอดที่ปรับแต่งได้สำหรับฟังก์ชันการทำงานที่ขยายออกไป" +" คลาสนี้สืบทอดมาจากโมเดล AbstractUser และรวมคุณสมบัติเพิ่มเติม เช่น " +"การเข้าสู่ระบบด้วยอีเมลที่กำหนดเอง วิธีการตรวจสอบความถูกต้อง " +"สถานะการสมัครสมาชิก การยืนยัน และการจัดเก็บแอตทริบิวต์ " +"นอกจากนี้ยังมียูทิลิตี้สำหรับจัดการรายการที่ดูล่าสุดและการเปิดใช้งานแบบใช้โทเค็นเพื่อยืนยันบัญชี" +" " "โมเดลผู้ใช้ได้รับการออกแบบมาเพื่อจัดการกรณีการใช้งานเฉพาะสำหรับการจัดการผู้ใช้ที่ดียิ่งขึ้น" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "อีเมล" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "ที่อยู่อีเมลของผู้ใช้" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "หมายเลขโทรศัพท์" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "หมายเลขโทรศัพท์ผู้ใช้" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "ชื่อ" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "นามสกุล" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "รูปภาพโปรไฟล์ผู้ใช้" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "ได้รับการยืนยันแล้ว" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "สถานะการยืนยันของผู้ใช้" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "กำลังใช้งานอยู่" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "ยกเลิกการเลือกสิ่งนี้แทนการลบบัญชี" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "สมัครสมาชิกแล้ว" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "สถานะการสมัครสมาชิกจดหมายข่าวของผู้ใช้" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "โทเค็นการเปิดใช้งาน" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "คุณลักษณะ" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "ผู้ใช้" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "ผู้ใช้" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "สำหรับกระทู้ที่ไม่ระบุชื่อ" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "หัวข้อสนทนา" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "หัวข้อสนทนา" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "ให้ผู้ใช้หรืออีเมลสำหรับกระทู้ไม่ระบุตัวตน" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "ผู้รับมอบหมายต้องเป็นผู้ใช้ที่เป็นพนักงานเท่านั้น" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "ข้อความแชท" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "ข้อความแชท" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "กลุ่ม" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "โทเค็นที่ยังไม่ได้ใช้" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "โทเค็นที่ยังไม่ได้ใช้" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "โทเค็นที่ถูกขึ้นบัญชีดำ" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "โทเค็นที่ถูกขึ้นบัญชีดำ" @@ -434,11 +447,11 @@ msgstr "สวัสดีครับ/ค่ะ %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" -"เราได้รับคำขอให้คุณรีเซ็ตรหัสผ่านของคุณ กรุณาทำการรีเซ็ตรหัสผ่านของคุณโดยคลิกที่ปุ่มด้านล่าง:" +"เราได้รับคำขอให้คุณรีเซ็ตรหัสผ่านของคุณ " +"กรุณาทำการรีเซ็ตรหัสผ่านของคุณโดยคลิกที่ปุ่มด้านล่าง:" #: engine/vibes_auth/templates/user_reset_password_email.html:95 msgid "reset password" @@ -449,7 +462,9 @@ msgstr "รีเซ็ตรหัสผ่าน" msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" -msgstr "หากปุ่มด้านบนไม่ทำงาน โปรดคัดลอกและวาง URL ต่อไปนี้ลงในเว็บเบราว์เซอร์ของคุณ:" +msgstr "" +"หากปุ่มด้านบนไม่ทำงาน โปรดคัดลอกและวาง URL " +"ต่อไปนี้ลงในเว็บเบราว์เซอร์ของคุณ:" #: engine/vibes_auth/templates/user_reset_password_email.html:100 msgid "" @@ -478,7 +493,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " by clicking the button below:" msgstr "" -"ขอบคุณที่ลงทะเบียนสำหรับ %(project_name)s กรุณาเปิดใช้งานบัญชีของคุณโดยคลิกที่ปุ่มด้านล่าง:" +"ขอบคุณที่ลงทะเบียนสำหรับ %(project_name)s " +"กรุณาเปิดใช้งานบัญชีของคุณโดยคลิกที่ปุ่มด้านล่าง:" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -506,34 +522,37 @@ msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." msgstr "" -"รูปแบบหมายเลขโทรศัพท์ไม่ถูกต้อง. หมายเลขต้องถูกป้อนในรูปแบบ: \"+999999999\". " -"อนุญาตให้ใช้ได้ถึง 15 หลัก." +"รูปแบบหมายเลขโทรศัพท์ไม่ถูกต้อง. หมายเลขต้องถูกป้อนในรูปแบบ: \"+999999999\"." +" อนุญาตให้ใช้ได้ถึง 15 หลัก." #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"แสดงมุมมองสำหรับการรับคู่ของโทเค็นการเข้าถึงและโทเค็นการรีเฟรช รวมถึงข้อมูลของผู้ใช้ " -"มุมมองนี้จัดการกระบวนการตรวจสอบสิทธิ์ที่ใช้โทเค็น โดยลูกค้าสามารถรับคู่ของโทเค็น JWT " -"(โทเค็นการเข้าถึงและโทเค็นการรีเฟรช) โดยใช้ข้อมูลประจำตัวที่ให้มา " -"มุมมองนี้สร้างขึ้นบนมุมมองโทเค็นพื้นฐานและรับประกันการจำกัดอัตราที่เหมาะสมเพื่อป้องกันการโจมตีแบบ " -"brute force" +"แสดงมุมมองสำหรับการรับคู่ของโทเค็นการเข้าถึงและโทเค็นการรีเฟรช " +"รวมถึงข้อมูลของผู้ใช้ มุมมองนี้จัดการกระบวนการตรวจสอบสิทธิ์ที่ใช้โทเค็น " +"โดยลูกค้าสามารถรับคู่ของโทเค็น JWT (โทเค็นการเข้าถึงและโทเค็นการรีเฟรช) " +"โดยใช้ข้อมูลประจำตัวที่ให้มา " +"มุมมองนี้สร้างขึ้นบนมุมมองโทเค็นพื้นฐานและรับประกันการจำกัดอัตราที่เหมาะสมเพื่อป้องกันการโจมตีแบบ" +" brute force" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "จัดการการรีเฟรชโทเค็นเพื่อวัตถุประสงค์ในการยืนยันตัวตน " -"คลาสนี้ใช้เพื่อให้บริการฟังก์ชันสำหรับการรีเฟรชโทเค็นเป็นส่วนหนึ่งของระบบยืนยันตัวตน " -"มันทำให้แน่ใจว่าลูกค้าสามารถขอโทเค็นที่รีเฟรชแล้วได้ภายในขีดจำกัดอัตราที่กำหนดไว้ " +"คลาสนี้ใช้เพื่อให้บริการฟังก์ชันสำหรับการรีเฟรชโทเค็นเป็นส่วนหนึ่งของระบบยืนยันตัวตน" +" " +"มันทำให้แน่ใจว่าลูกค้าสามารถขอโทเค็นที่รีเฟรชแล้วได้ภายในขีดจำกัดอัตราที่กำหนดไว้" +" " "หน้าจอนี้พึ่งพาตัวจัดลำดับที่เกี่ยวข้องเพื่อตรวจสอบความถูกต้องของข้อมูลการรีเฟรชโทเค็นและสร้างผลลัพธ์ที่เหมาะสม" #: engine/vibes_auth/views.py:67 @@ -551,15 +570,14 @@ msgstr "โทเค็นไม่ถูกต้อง" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" -"การใช้งานชุดมุมมองผู้ใช้ ให้ชุดของการดำเนินการที่จัดการข้อมูลที่เกี่ยวข้องกับผู้ใช้ เช่น การสร้าง " -"การดึงข้อมูล การอัปเดต การลบ และการดำเนินการที่กำหนดเอง รวมถึงการรีเซ็ตรหัสผ่าน " -"การอัปโหลดอวาตาร์ การเปิดใช้งานบัญชี และการรวมรายการที่ดูล่าสุด คลาสนี้ขยายส่วนผสมและ " -"GenericViewSet เพื่อการจัดการ API ที่มีความแข็งแกร่ง" +"การใช้งานชุดมุมมองผู้ใช้ " +"ให้ชุดของการดำเนินการที่จัดการข้อมูลที่เกี่ยวข้องกับผู้ใช้ เช่น การสร้าง " +"การดึงข้อมูล การอัปเดต การลบ และการดำเนินการที่กำหนดเอง " +"รวมถึงการรีเซ็ตรหัสผ่าน การอัปโหลดอวาตาร์ การเปิดใช้งานบัญชี " +"และการรวมรายการที่ดูล่าสุด คลาสนี้ขยายส่วนผสมและ GenericViewSet " +"เพื่อการจัดการ API ที่มีความแข็งแกร่ง" #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/tr_TR/LC_MESSAGES/django.mo index f94278cdf8bd1e9fe6f452ce39760b14500b00f0..4c34d110d8e95849b44bddc31e6fc10fafc44854 100644 GIT binary patch delta 2768 zcmYk-eN0t#9LMo5h;&hWKragTz(r9Z5)?&6&Co;x4JCX4e88(*@#?)-J1dk&kw-S2sw^YfhF!}s_5 z;rWfnLa~d3QeHC3HexvOT`#k@@Y(ygP_p`%jl^tB$7$FPE3q%ux%Evrgy#^ZVh3j8 zUfhsmb`bC9IgLg}<77-Ri&;H4dT|wg%ZpKL#`*otg47=#VAdOl40IYEj(ljNaSrbl z-~&8w%5WNf1uJ+yjyZT6HL?6C~1X(I2H?0OR*RWa0hAvZ==@y7&2-55oh8bL&?8pG@e#8gGs0l zrlT^l5c9AJwKPw;9zebK5i%D08a08-sDXDQ+sOVyElnB=PBN?vwFK2zj_ujxUu$)Q z3XSXp^0RYX)Zy>A8$IN+5%-}Qx{4a$9n?%Rcv%Cgab1Jzs1=#49YAI7D5{^2QQv

{k4R4BArJvSTn8m7z-1Ko{U1Y(x)UMy2{U)Dn0{nDMh2Ty%;Wu#D#u>{xyO zH>$s0Y!nS3mdTBFdjT>TD@X0tC8(LM#1Cm`E0*Xz)B(mM@$)1$ zBQHHi{j1DE11)59dcPF4ROJ{>V*M+*nM6f=oZ}VOVN7cj^^1_ctre%>3pgIXLMCmu zuo}IE&cK>5F(C9%zu)zcTmLR9Bd4*C&i`$0W>Dc_!SZn~Dn&umh_|DbU>9n4KjV57 znXFw#eV4*ctHeT72b)m?KZI)UOH^hrU>aV+6#BQT?mu*61PjQj_XjHa0M!}YcNJ%*1^q#cmyl(8kS=*3$ER} z0a+E>iTca;4p!l5REjeuIBS}NdVefx@619iZ5`@V?LlSi4bZYq_qO;~XsEpL28jRpFd=u5sKd3cNFLjRH7}P0Pj2#%k)%YhWW3@DriGfMv{}FDs zQ!x-vA}7$!BR{*rMZ0~>WM_s|sF^H9Wnwd`qkV4uVblyyAxX4fu|E!FL+Esk#jQ9S zRUeOW!?M~J$Ud^`s0MS`>YO55N~jDXrV&$#>BKr>E}`X9S?-Ydo1vLLOlT>Zh+1Mc zp`uA@U^PTCq5Wrbhy_G5;U#p;RJJ)JmPohCj0z_WGJkfcnqih7*`5k8=&V_nWbRc$84eS_t-A;s}BHh(3gNbR$ts^pwHeEO8%L z@WFAG*b)f@eBt(J zn{REv=l4b1{Oi~I+M|Ki;`pe+-rgfy+k*a3=m}r@mS%sO-q62|i~5=aZT?`WvovdO z(w5Gd=|!Dqv%K*$S#_RxV_uOb$=^9|WLbQ7;j+}uITO9PYlESdU?|WUj0Am~PQDin g2O_?fuH%t)flw$A4s`xd@*U( z$3|&ex#d5#%-!Ysqh=4r*5)5R#2<~8B5U-Q(^|7OYrQ|e`{R$!{PH^I=e@sk&i8!J z{lY)fANVCTdeUg4#0ugv3lH;T$IDfyXQn5-}dLP|w$5I+oxP+=|Pv z8G9oLT*vq_U&_V17;P4?Y`(1z=3^mN;#I!TgL|-YsaYS-KS(l*K~Hjcf@I_cmVvc= zZUsKTxHBa@!35SY{tWNM+o%mDq_RjXz)a@14mw)Et5}BbU=~gz@3b4p-1Y}*$5CE0 z{#g=#*p%g>7QO*jVH>h$+mFh`+o)t7M`d8j^*c;qe!EGBcblb|`M`^MQ46wY8%3pj z9F>7d)Wj#;@oCgVpP;@MLhbk}zK%Ds75(f|8@Yf3_#+1N;#v+)J8MLa+1gRhyRixP zxzDFjDZhkz(F`ufUvUloi#me*472;O8MT1}s53u`?A6X<6@H&V{-l84EqP~!X z%193CC`w!#-T(I^bJ;=E!Y5G+{tzh}JA-W6zC@?!u$=K-)X|h?h8I$oN&e~EF8*ku z5gfx~*oMoFIa3y|=x-Hjn6XQDWtiFE$HQ`~@0#2fe`V6vG z3w%vS)j5mW={%m}MStOg`e1hW?5?4XC@LqsU=Nlu&c%vIvW4G7a16wd@hRBZ`A!CTI+P|BiEmBH6Ki5o2up_)I^QA9>ZvLL)L zAI36nbKUJe_oHsj7*^tO%+vk9NJlBUjm{1^$QZ^RR5d5NRwJ9Ve$2xOti!XYl;1%u zcs)M`dfzrwW;-zsdr&no==Ebyk;g6mOu4X(wq&KtF1s zuesv@Zf87!ns^p9;XEp%zag)-_zh;&ScZWbI-_*T@f@mpZy~2(u@nGhU`6;OHlR}b zF2>_2)aO4%)y_0>acmZqsXtLgmr)eHuIo_W_n|UWUqt@ZY3G45Fo+a|9l;%V9`%Cs z;_%rPAX&CrRMijQAv}T|nDkIMLxaeVo4tuo;1nj~9CDHDcho#fHo@MZVm zB1)B3T|sa;oa?6_tHq{U@Ho*%B)JbaqcYb;M7ht{yz`@_;lsqBIy8^&e+!*PLTOi1 zg{rC-+p})x8Ppl;W^5%=h<$`AJdVgG)F>I}wmgmfL=B;)JD*B4Yv8te-T!U|s)2HX zV|C8!FFQFp!5uJpW@DsYKO@#SIM*4aN zySlOmMuQdJw9sZxWn@HS(34ph8cFzSNvOe_8WTLU{H@TY%%0c?Uofk\n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Denge" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Sipariş" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Siparişler" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Kişisel Bilgiler" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "İzinler" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Önemli tarihler" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Ek Bilgi" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Seçili konuları kapatın" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Seçili konuları açın" @@ -54,79 +54,103 @@ msgstr "Seçili konuları açın" msgid "authentication" msgstr "Kimlik Doğrulama" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Açık" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Kapalı" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Kullanıcı" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Personel" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Sistem" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Bir belirteç çifti elde edin" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Kimlik doğrulama için bir belirteç çifti (yenileme ve erişim) alın." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Belirteç çiftini yenileyin" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Bir token çiftini yenileyin (yenileme ve erişim)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Bir belirteci doğrulayın" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Bir belirteci doğrulayın (yenileme veya erişim)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Belirteç geçerlidir" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Yeni bir kullanıcı oluşturun" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Bir kullanıcının ayrıntılarını alma" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Kullanıcı bilgilerini güncelleme" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "Bir kullanıcının bilgilerini kısmen güncelleme" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Kullanıcı silme" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "" "Parola sıfırlama e-postası göndererek bir kullanıcının parolasını sıfırlama" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Bir kullanıcı için avatar yükleme işlemini gerçekleştirin" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Bir kullanıcının parola sıfırlamasını onaylama" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Parolalar eşleşmiyor" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Bir kullanıcının hesabını etkinleştirme" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Etkinleştirme bağlantısı geçersiz veya hesap zaten etkinleştirilmiş" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "İstemcide depolanan son görüntülenen ürünleri birleştirme" @@ -172,20 +196,21 @@ msgstr "Hesap zaten etkinleştirildi..." msgid "something went wrong: {e!s}" msgstr "Bir şeyler ters gitti: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Jeton geçersiz!" #: engine/vibes_auth/graphene/object_types.py:40 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 "" "Bu kullanıcının en son görüntülediği ürünler (en fazla 48), ters kronolojik " "sırayla." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Gruplar" @@ -193,7 +218,8 @@ msgstr "Gruplar" msgid "wishlist" msgstr "İstek Listesi" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -204,77 +230,33 @@ msgstr "Öznitelikler özel verileri saklamak için kullanılabilir" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Dil, varsayılan {settings.LANGUAGE_CODE} ile {settings.LANGUAGES}'dan biridir" +"Dil, varsayılan {settings.LANGUAGE_CODE} ile {settings.LANGUAGES}'dan " +"biridir" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Adresler" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Açık" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Kapalı" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Kullanıcı" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Personel" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Sistem" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Anonim konular için" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Sohbet başlığı" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Sohbet konuları" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "Anonim konu için kullanıcı veya e-posta sağlayın." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Atanan kişi bir personel kullanıcısı olmalıdır." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Sohbet mesajı" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Sohbet mesajları" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Anonim sohbetler için geçerli e-posta gereklidir." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Mesaj 1..1028 karakter olmalıdır." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "Size cevap verecek operatörü arıyoruz, bekleyin!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Atanan kişi bir personel kullanıcısı olmalıdır." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -287,97 +269,125 @@ msgstr "" "Genişletilmiş işlevsellik için özelleştirilmiş alanlara ve yöntemlere sahip " "bir Kullanıcı varlığını temsil eder. Bu sınıf AbstractUser modelini " "genişletir ve özel e-posta girişi, doğrulama yöntemleri, abonelik durumu, " -"doğrulama ve öznitelik depolama gibi ek özellikleri entegre eder. Ayrıca son " -"görüntülenen öğeleri yönetmek için yardımcı programlar ve hesapları " +"doğrulama ve öznitelik depolama gibi ek özellikleri entegre eder. Ayrıca son" +" görüntülenen öğeleri yönetmek için yardımcı programlar ve hesapları " "doğrulamak için token tabanlı aktivasyon sağlar. User modeli, gelişmiş " "kullanıcı yönetimi için belirli kullanım durumlarını ele almak üzere " "tasarlanmıştır." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "E-posta" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Kullanıcının e-posta adresi" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Telefon Numarası" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Kullanıcı telefon numarası" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "İlk isim" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Soyadı" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Kullanıcı profili resmi" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Doğrulandı" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Kullanıcının doğrulama durumu" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Aktif" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Hesapları silmek yerine bunun seçimini kaldırın" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Abone olundu" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Kullanıcının haber bülteni abonelik durumu" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Etkinleştirme belirteci" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Nitelikler" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Kullanıcı" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Kullanıcılar" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Anonim konular için" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Sohbet başlığı" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Sohbet konuları" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "anonim konu için kullanıcı veya e-posta sağlayın." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "atanan kişi bir personel kullanıcısı olmalıdır." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Sohbet mesajı" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Sohbet mesajları" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Grup" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Olağanüstü belirteç" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Ödenmemiş jetonlar" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Kara listeye alınmış belirteç" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Kara listeye alınmış belirteçler" @@ -440,8 +450,7 @@ msgstr "Merhaba %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Şifrenizi sıfırlamak için bir talep aldık. Lütfen aşağıdaki butona " @@ -525,8 +534,8 @@ msgstr "" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." @@ -535,21 +544,21 @@ msgstr "" "bir görünümü temsil eder. Bu görünüm, istemcilerin sağlanan kimlik " "bilgilerini kullanarak bir çift JWT belirteci (erişim ve yenileme) " "alabildiği belirteç tabanlı kimlik doğrulama işlemini yönetir. Temel bir " -"token görünümünün üzerine inşa edilmiştir ve kaba kuvvet saldırılarına karşı " -"koruma sağlamak için uygun hız sınırlaması sağlar." +"token görünümünün üzerine inşa edilmiştir ve kaba kuvvet saldırılarına karşı" +" koruma sağlamak için uygun hız sınırlaması sağlar." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" "Kimlik doğrulama amacıyla belirteçlerin yenilenmesini işler. Bu sınıf, bir " "kimlik doğrulama sisteminin parçası olarak belirteç yenileme işlemleri için " -"işlevsellik sağlamak üzere kullanılır. İstemcilerin tanımlanan hız sınırları " -"içinde yenilenmiş bir belirteç talep edebilmesini sağlar. Görünüm, token " +"işlevsellik sağlamak üzere kullanılır. İstemcilerin tanımlanan hız sınırları" +" içinde yenilenmiş bir belirteç talep edebilmesini sağlar. Görünüm, token " "yenileme girdilerini doğrulamak ve uygun çıktıları üretmek için ilişkili " "serileştiriciye dayanır." @@ -568,16 +577,10 @@ msgstr "Belirteç geçersiz" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Kullanıcı görünümü kümesi uygulaması.\n" -"Oluşturma, alma, güncelleme, silme gibi kullanıcıyla ilgili verileri ve " -"parola sıfırlama, avatar yükleme, hesap etkinleştirme ve son görüntülenen " -"öğeleri birleştirme gibi özel eylemleri yöneten bir dizi eylem sağlar. Bu " -"sınıf, sağlam API kullanımı için mixin'leri ve GenericViewSet'i genişletir." +"Oluşturma, alma, güncelleme, silme gibi kullanıcıyla ilgili verileri ve parola sıfırlama, avatar yükleme, hesap etkinleştirme ve son görüntülenen öğeleri birleştirme gibi özel eylemleri yöneten bir dizi eylem sağlar. Bu sınıf, sağlam API kullanımı için mixin'leri ve GenericViewSet'i genişletir." #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.mo index 3bdec51ac9713cf22a3fc4766e34e95837b44bf4..389c15b4fe7c1cc88cd72b10a5523cbc1617b9aa 100644 GIT binary patch delta 2768 zcmYk+e@szzY%glIw?En>jag zHoJ3a&FO5Wf9Tx0x}~Nob@@l>^2b(dWMONq*(`Idwn}<`?maZ0-S2sw=iGar^E}_@ zd(O?^_ub(e8Hu}$wt*N$TpwumK5iexf#w}zmWMt}!ReTal{gevxYyUijBWHILB8r0Uj?z$KCyOYRV>~qutZlWfB8!03E2emaGHk@SGRMZw!;SB8dk$>&g zF)nCkXOWLx<)9n>f?IGf`K-eosDXY)P4FISCF%TF6RLJyi@H%4vRK=T%G?RmeNLhN ze>u#F{@CkYxQk5Mk}25-aWpDJm8gj>!mU_`gYhOR)wfVvkeO@7$7XTRQ&fvp^v_bU z8rMUC$O6XJfFb+|G>#gE*vT{n~Z%J#L483uk0Wym6teZYyQF#%wS`c zp}AOxe&l24IK&=b)K>MOZk$PF^09mlRalLwdj9ut@+=n)p$15t5TEfRR3^&Zeg*2r zOI=?>P2ebMg4b{n-a}=miXS_;9hK^%sIB}IRSOr@=l=GE`^8l(qyIJP1(Q0F3dQlb z5D%b==@uTwfs^9>Bd!-vEAGKGyn{`cKw5P}Kc->;HO|Wzb~t&PlW7>mX1s+{u!aNo zvMpGSColtl$C;Q^8c*#U97=x)>ib&P0M4KvMrGHY&l@~Ke7FJ9n{~=Cl zxu6?dMh)~6YUZia<3+OohtUtAs(mxYiW8|(LIXFc)YRx*_=_3Hil>*))V(PJ$l-b4nj}C0%ATQ{PsI?&wc**JRY-|YW7y52&&}nQ6HM9mIQ@q;}IwR#N z#gQxC%;=ZiF`j5mL9ZuLnYTDvHvY%t!iwHgM?0O476>`*y{GqtoK8B2I-F3;`Qsga YC)65AE6$GiN-sqI$ghv~lqM(t2b$?85&!@I delta 2625 zcmYk+e@vBC9LMo5f|nnH$Pb0@P~_M2xM8D&iMho2ShK^}9nXa_o@jO-UdLqJNHR--6r6^0Q1=UQ7M5WE*WgTS z!p;~1AE5mM56#DW7-tr-T%Ohs7h(}s;usHf;C8H>Zq~*9BdKOnF=>Y1!3^XDmW4I^ zZZ0mSy(P`>pdVM#{tRd19n=Jq(-|Z#!XW)y8x;-URV>GYI0r8v@3b38-*y)@O+lu1U1kr&ReLCCXvb60$!#}RiS2Fje5Qr^<1ZG?~PDlP&R-I z@fa#2-=Ri&8TaFLOu#O-uu|KLO8F?x!?UQ^xjGJP%3bh&Q^L!7WX7oMsvCCYZ!#{D9-#6vcAx6I#aOPTYE%LGBTy$K= zP)l|b)$t^1QwF$bkCftOti~dp{|~54%lcRg4K8v zbFqMjlco{;ih^t6;}5j2G|;ta{MjOnvw*8)~L| zP{;8Aw&N(O!x++Dy88dbO+wQKuvIev)A_!BB) zw=f;=Is>JChJv_+`zuhJFpTV9JBaak0yXf{rQ~0guiX!SL5=J$+=j(v{@M?s*8BuA zIlF|~^)d8v2y<{BobFx1t7e3H6@axC~Rv$v?|$_4GO&_h26Op*G=h zWMA4v)Nz?a{eE7BKhOr$b8n)S;1GU@1S%Y9<79b7gHl;RZ1igWOkLGu6IX3yEy4dwhilYeudAznZ%uTTUv@YDLu;m; zuC-Sd*x+6o!7Chft0Qy_HG35%?rmmm#8};+uv*@qmgHIfSX(WQWL*cl3 z$Hr@LX?2ySv5n{=bnMayt*v%?BB6Cv(f$Y%PZ2K?D+!fKLYuWo4Obd;{&fPhwk(OU z@4WS0jRk~`&!a>wp_8Far=!_PsH`KNC7w~kmD!j{u*bYpwcgzq+g)9MKu@Z!{J%sz zPRt-y5k15Ugf@_lnTn3xD_+e%!`rAQ5IICWQ9`KX6T1j);%Z_GkwJ75S;Pjyszaf! zj-Bo8xjo^b!J=p=`HMhweMb7!p|`T%jxGsSBo4h+);5%1m>!Mf WUrda?zxemS(3#Tn(Vxqv2L1(B$oez@ diff --git a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po index 321b88e8..88648e35 100644 --- a/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/vi_VN/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "Cân bằng" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "Đặt hàng" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "Đơn hàng" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "Thông tin cá nhân" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "Quyền" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "Các ngày quan trọng" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "Thông tin bổ sung" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "Đóng các chủ đề đã chọn" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "Mở các chủ đề đã chọn" @@ -54,78 +54,102 @@ msgstr "Mở các chủ đề đã chọn" msgid "authentication" msgstr "Xác thực" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "Mở" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "Đóng" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "Người dùng" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "Nhân viên" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "Hệ thống" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "Nhận cặp token" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "Nhận cặp token (refresh và access) để xác thực." -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "Cập nhật cặp token" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "Cập nhật cặp token (cập nhật và truy cập)." -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "Xác minh token" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "Xác minh token (cập nhật hoặc truy cập)." -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "Token này hợp lệ" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "Tạo một người dùng mới" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "Lấy thông tin chi tiết của người dùng" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "Cập nhật thông tin của người dùng" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "Cập nhật một phần thông tin của người dùng" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "Xóa người dùng" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "Đặt lại mật khẩu của người dùng bằng cách gửi email đặt lại mật khẩu." -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "Xử lý việc tải lên avatar cho người dùng" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "Xác nhận việc đặt lại mật khẩu của người dùng" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "Mật khẩu không khớp." -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "Kích hoạt tài khoản của người dùng" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "Liên kết kích hoạt không hợp lệ hoặc tài khoản đã được kích hoạt." -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "" "Ghép các sản phẩm đã xem gần đây được lưu trữ trên thiết bị của khách hàng" @@ -133,8 +157,8 @@ msgstr "" #: engine/vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -"Mã UUID được mã hóa bằng B64 của người dùng đã giới thiệu người dùng mới cho " -"chúng tôi." +"Mã UUID được mã hóa bằng B64 của người dùng đã giới thiệu người dùng mới cho" +" chúng tôi." #: engine/vibes_auth/graphene/mutations.py:61 msgid "password too weak" @@ -174,20 +198,21 @@ msgstr "Tài khoản đã được kích hoạt..." msgid "something went wrong: {e!s}" msgstr "Có sự cố xảy ra: {e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "Token không hợp lệ!" #: engine/vibes_auth/graphene/object_types.py:40 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 "" "Các sản phẩm mà người dùng này đã xem gần đây nhất (tối đa 48), theo thứ tự " "thời gian ngược." #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "Nhóm" @@ -195,7 +220,8 @@ msgstr "Nhóm" msgid "wishlist" msgstr "Danh sách mong muốn" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "Avatar" @@ -206,81 +232,35 @@ msgstr "Các thuộc tính có thể được sử dụng để lưu trữ dữ #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "" -"Ngôn ngữ là một trong những {settings.LANGUAGES} với mặc định {settings." -"LANGUAGE_CODE}" +"Ngôn ngữ là một trong những {settings.LANGUAGES} với mặc định " +"{settings.LANGUAGE_CODE}" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "Địa chỉ" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "Mở" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "Đóng" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "Người dùng" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "Nhân viên" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "Hệ thống" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "Đối với các chủ đề ẩn danh" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "Dòng trò chuyện" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "Các chuỗi trò chuyện" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "" -"Cung cấp tên người dùng hoặc địa chỉ email cho chuỗi thảo luận ẩn danh." - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "Người được giao nhiệm vụ phải là người dùng nhân viên." - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "Tin nhắn trò chuyện" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "Tin nhắn trò chuyện" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "Địa chỉ email hợp lệ là bắt buộc cho các cuộc trò chuyện ẩn danh." -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "Thông điệp phải có độ dài từ 1 đến 1028 ký tự." -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "" "Chúng tôi đang tìm kiếm nhân viên tổng đài để trả lời cho bạn, xin vui lòng " "chờ một lát!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "Người được giao nhiệm vụ phải là người dùng nhân viên." + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -294,95 +274,124 @@ msgstr "" "mở rộng chức năng. Lớp này kế thừa từ mô hình AbstractUser và tích hợp các " "tính năng bổ sung như đăng nhập bằng email tùy chỉnh, phương thức xác thực, " "trạng thái đăng ký, xác minh và lưu trữ thuộc tính. Nó cũng cung cấp các " -"công cụ để quản lý các mục đã xem gần đây và kích hoạt dựa trên token để xác " -"minh tài khoản. Mô hình Người dùng được thiết kế để xử lý các trường hợp sử " -"dụng cụ thể nhằm nâng cao quản lý người dùng." +"công cụ để quản lý các mục đã xem gần đây và kích hoạt dựa trên token để xác" +" minh tài khoản. Mô hình Người dùng được thiết kế để xử lý các trường hợp sử" +" dụng cụ thể nhằm nâng cao quản lý người dùng." -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "Email" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "Địa chỉ email của người dùng" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "Số điện thoại" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "Số điện thoại của người dùng" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "Họ" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "Họ" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "Hình ảnh hồ sơ người dùng" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "Đã được xác minh" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "Trạng thái xác minh của người dùng" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "Đang hoạt động" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "Hủy chọn tùy chọn này thay vì xóa tài khoản." -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "Đã đăng ký" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "Tình trạng đăng ký bản tin của người dùng" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "Mã kích hoạt" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "Thuộc tính" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "Người dùng" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "Người dùng" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "Đối với các chủ đề ẩn danh" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "Dòng trò chuyện" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "Các chuỗi trò chuyện" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "" +"Cung cấp tên người dùng hoặc địa chỉ email cho chuỗi thảo luận ẩn danh." + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "Người được giao nhiệm vụ phải là người dùng nhân viên." + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "Tin nhắn trò chuyện" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "Tin nhắn trò chuyện" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "Nhóm" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "Token xuất sắc" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "Token xuất sắc" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "Token bị đưa vào danh sách đen" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "Các token bị đưa vào danh sách đen" @@ -445,8 +454,7 @@ msgstr "Xin chào %(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "" "Chúng tôi đã nhận được yêu cầu đặt lại mật khẩu của bạn. Vui lòng đặt lại " @@ -492,8 +500,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account\n" " by clicking the button below:" msgstr "" -"Cảm ơn bạn đã đăng ký cho %(project_name)s. Vui lòng kích hoạt tài khoản của " -"bạn bằng cách nhấp vào nút bên dưới:" +"Cảm ơn bạn đã đăng ký cho %(project_name)s. Vui lòng kích hoạt tài khoản của" +" bạn bằng cách nhấp vào nút bên dưới:" #: engine/vibes_auth/templates/user_verification_email.html:96 msgid "" @@ -521,38 +529,38 @@ msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." msgstr "" -"Định dạng số điện thoại không hợp lệ. Số điện thoại phải được nhập theo định " -"dạng: \"+999999999\". Cho phép tối đa 15 chữ số." +"Định dạng số điện thoại không hợp lệ. Số điện thoại phải được nhập theo định" +" dạng: \"+999999999\". Cho phép tối đa 15 chữ số." #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" "Đại diện cho một giao diện để lấy cặp token truy cập và token làm mới cùng " "với dữ liệu người dùng. Giao diện này quản lý quá trình xác thực dựa trên " -"token, cho phép các client lấy cặp token JWT (truy cập và làm mới) bằng cách " -"sử dụng thông tin đăng nhập được cung cấp. Nó được xây dựng dựa trên một " +"token, cho phép các client lấy cặp token JWT (truy cập và làm mới) bằng cách" +" sử dụng thông tin đăng nhập được cung cấp. Nó được xây dựng dựa trên một " "giao diện token cơ sở và đảm bảo giới hạn tốc độ thích hợp để bảo vệ khỏi " "các cuộc tấn công dò mật khẩu." #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" -"Xử lý việc làm mới token cho mục đích xác thực. Lớp này được sử dụng để cung " -"cấp chức năng cho các hoạt động làm mới token như một phần của hệ thống xác " -"thực. Nó đảm bảo rằng các client có thể yêu cầu token đã được làm mới trong " -"giới hạn tỷ lệ được định nghĩa. Giao diện người dùng dựa vào trình " -"serializer liên quan để xác thực các đầu vào làm mới token và tạo ra các đầu " -"ra phù hợp." +"Xử lý việc làm mới token cho mục đích xác thực. Lớp này được sử dụng để cung" +" cấp chức năng cho các hoạt động làm mới token như một phần của hệ thống xác" +" thực. Nó đảm bảo rằng các client có thể yêu cầu token đã được làm mới trong" +" giới hạn tỷ lệ được định nghĩa. Giao diện người dùng dựa vào trình " +"serializer liên quan để xác thực các đầu vào làm mới token và tạo ra các đầu" +" ra phù hợp." #: engine/vibes_auth/views.py:67 msgid "" @@ -569,15 +577,12 @@ msgstr "Token không hợp lệ" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "Thực hiện bộ xem người dùng. Cung cấp một tập hợp các hành động quản lý dữ " "liệu liên quan đến người dùng như tạo, truy xuất, cập nhật, xóa và các hành " -"động tùy chỉnh bao gồm đặt lại mật khẩu, tải lên avatar, kích hoạt tài khoản " -"và hợp nhất các mục đã xem gần đây. Lớp này mở rộng các mixin và " +"động tùy chỉnh bao gồm đặt lại mật khẩu, tải lên avatar, kích hoạt tài khoản" +" và hợp nhất các mục đã xem gần đây. Lớp này mở rộng các mixin và " "GenericViewSet để xử lý API một cách mạnh mẽ." #: engine/vibes_auth/viewsets.py:99 diff --git a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo index a41583e3058617252ddec8f7f7989af57d094f50..507486ea6dceb49b1aa4c6739122244a39e10135 100644 GIT binary patch delta 2762 zcmY+`eN5F=9LMo5DpyeyP{d0jUL+q7e9rKJ3@yOaNYg@1lxsYQf)V$UYvr!^Jo8}< z%Vs%rEp@Gp>e@6db!)4(nu%8aQ#Ku;mQl?$SEly<+dsThxwus0T9FP!h%mthL^8uZ`>?2p@U zMU2^g97#QnPBQTU>}D3Sg&gR_QasOz0W8O&K4#Ulzn5SZiz$iGj?<6}EfZ&O-U!U0 zzA7o&@f(;={S&+oZ=)vW?aQDz5mRv`_Gf(C$U!a*dvPG1L;AE1WNf>OnrT8mGd?zu zFJ)v5GAS#@Y+QtcaT9Xy_6{l&M^MQ;fy%&V&JIjsd`nF>V+_m2={OD5(K_VjZ9gjI zAEGjG8a43euHK3o=mP4xi>R63!L^u5dP{H*YC^wbE#AeDI<95mG{cuL4!5A%U&VRY z?ArfCrT!MGBO5?kArXgR7HTQx;s{)en!rKSnjb?ZZ9iZh{xN|3Yeu8!MKhRyx?l<_ zBXckVm!X!X(YX(G-p9zj*jK0tTt?k^2eOUqU)0jXvEU@bCZd*L7EZ>7RPwL2YN0`Q zb`ts6IleUDb=-tK$me3*iR$PY>IUziW|G9ox}joc8ET+p9=7aI9E{3P0qRC);}%?uJ@7Ir)xV;aAbF4(ADhZoB~Qm998Uc-J60LF z>io+Y>cWoE4++SAur$~e>bx-Oy5qQ>^Uh)}&L2Y1{t64P z{(nN9f8BWlr^m4V|8SsGpxdzr2}&PH7~33Vf-u07yf zhaTE@p!(U3%E+Ned&uk?4%ET-sMOtx{J=ioEIkcA^x#N*5XU)Jpq_$eXA6#^ehRgO zzqxh~Y156SI5ScGjg^dVxvpUvYQ_b~zA``V!IyCvCTB%E3gQatjjsL+#!2K6ZvLJvM)%QaY4M22MrIxD@lS7S-{)&JW!0 z$51o=5_R2or~z-HGSf3B`g>*$>#q*S(x8s=-48|11*nwzQRnSKvTDt!rT7Bl@s6_> zCu;yN>Mb%3KfsVP~ zTV1`))o-JgGI31wx*XKN6R;TbU42)G10Dc-%Xu2LByGr3WKR()x`|0dE-{68mUxsP zqmfeL%%DeTbDrB@rYR5z4mS3l9?&8eeZeHg2T6z;}&1eh%6A_Bio8QALoH z$e&U$AJLQOMl2>~5uHV^*afaK-Z>HVR6RuKJrXUWT_qZ9^dFTVCPw`vO6KWu>nnP*FcRJfvT8Y_dJKU zcV2Ap-%Jc2HcB6nPK<|{ox=86d{CyM%@*P6RoQKu8 zCxpO9&z-H8Ukz8VaGF^avdmVGI^TlZu-Bcx zgi84&s-YXW0B>Us{)bwE>=d)*SdE&%8>lruj?C3Q!!rCXh5Tzqp|qkIM4@g-KxHHg zwG;);D))Um(wDu38u&13z@x~vv9rje?Mw7F9j>N+54AL_QiB7jOeOyu+jc(GQ4bE_ z39Q3;}oKyNsIMRoKKGC5mHW6D$+YQ{d){WYlj_PBb#p92PE$1xkn zP#Kv(jr1xW!CM%GZERtswi}i55zN4Eu!W~!3YSq|%QLG?>~p^9Jm!2Kwdwt*IZ*1q za9@0l88mbS)zRP8>tV=W%w`T;D$sKsW_alV`d*8tu_wLj|o7=2uK z7Ri|3?kpu;T#!yLN}&&#thJ+3b`&4O5m�YIq8D-yf&}C6W%EU+yeKbzFgJXT7V} zqwd><8G8PYx-Z61yZ=*H{~T9Qzv#S++Vy$lSC*kNunDz<{qFn_Y9Obb=P;7`1?RZ) zGN#eLUFCp%W7GHnMw9nO97Q!0vVskR@u>Q1sDU0r&1}%sM{xu7GpG*#a^6Q>7fyQF z9+ra4#R||**bYAQ20M&O<$27)?@=@T4a@LfRKrDFEZ3mEuS5;32Gvm$DkFXF{2=PO z5!8KW-1+mlapy^Dm;km@jAxhLe@p*Vks7* z2GEPT{}A$Lr}D|aMtqr?Ms^c*;ce7~cTwNRuMF0+Q1uejCf$s>uMO2<7jD7*u0DZm zbo9zrQs(G8*AQ7}6?e2S=b=d@%GmhDtDsKN(N za@^|b71-^L)xY=a^b+oKCuh(MS#m2O*h5~*l$DvH$7n54M<{D5#RRVoYbL@7l>$QV z5|uSXr+4K2i21FCiq?=fu2)!k?+xgxw!oqJ5yHt5(I84SN1tsA!E=6HgHAA$yj{A>xQ9iAsVc^Io;

-X^X5vNS1yx+p zqpZ!T4g5HR>WI*47wd}21CqRsWHcVw1{O+*y2h|tbw zUwLIQpIw9=Umwv(BoXa|ewelq=IiNcYwc`q&g|$LDoIKX6vvc?hExs3q~->CVlPAn qwk9P;3>{o>I8d1S;jE#iy!^mq=8qA9$()FYp}%wY22SL4hy4%Uh3x_W diff --git a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index 52df73e5..d79a7ac5 100644 --- a/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/engine/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -13,40 +13,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: engine/vibes_auth/admin.py:40 engine/vibes_auth/admin.py:41 +#: engine/vibes_auth/admin.py:47 engine/vibes_auth/admin.py:48 #: engine/vibes_auth/graphene/object_types.py:46 msgid "balance" msgstr "平衡" -#: engine/vibes_auth/admin.py:49 +#: engine/vibes_auth/admin.py:56 msgid "order" msgstr "订购" -#: engine/vibes_auth/admin.py:50 engine/vibes_auth/graphene/object_types.py:44 +#: engine/vibes_auth/admin.py:57 engine/vibes_auth/graphene/object_types.py:44 msgid "orders" msgstr "订单" -#: engine/vibes_auth/admin.py:60 +#: engine/vibes_auth/admin.py:67 msgid "personal info" msgstr "个人信息" -#: engine/vibes_auth/admin.py:64 engine/vibes_auth/graphene/object_types.py:43 +#: engine/vibes_auth/admin.py:71 engine/vibes_auth/graphene/object_types.py:43 msgid "permissions" msgstr "权限" -#: engine/vibes_auth/admin.py:77 +#: engine/vibes_auth/admin.py:84 msgid "important dates" msgstr "重要日期" -#: engine/vibes_auth/admin.py:78 +#: engine/vibes_auth/admin.py:85 msgid "additional info" msgstr "其他信息" -#: engine/vibes_auth/admin.py:145 +#: engine/vibes_auth/admin.py:152 msgid "Close selected threads" msgstr "关闭选定的线程" -#: engine/vibes_auth/admin.py:149 +#: engine/vibes_auth/admin.py:156 msgid "Open selected threads" msgstr "打开选定的线程" @@ -54,78 +54,102 @@ msgstr "打开选定的线程" msgid "authentication" msgstr "认证" -#: engine/vibes_auth/docs/drf/views.py:15 +#: engine/vibes_auth/choices.py:6 +msgid "Open" +msgstr "开放" + +#: engine/vibes_auth/choices.py:7 +msgid "Closed" +msgstr "关闭" + +#: engine/vibes_auth/choices.py:11 +msgid "User" +msgstr "用户" + +#: engine/vibes_auth/choices.py:12 +msgid "Staff" +msgstr "工作人员" + +#: engine/vibes_auth/choices.py:13 +msgid "System" +msgstr "系统" + +#: engine/vibes_auth/docs/drf/views.py:18 msgid "obtain a token pair" msgstr "获取令牌对" -#: engine/vibes_auth/docs/drf/views.py:16 +#: engine/vibes_auth/docs/drf/views.py:19 msgid "obtain a token pair (refresh and access) for authentication." msgstr "获取用于身份验证的令牌对(刷新和访问)。" -#: engine/vibes_auth/docs/drf/views.py:35 +#: engine/vibes_auth/docs/drf/views.py:41 msgid "refresh a token pair" msgstr "刷新令牌对" -#: engine/vibes_auth/docs/drf/views.py:36 +#: engine/vibes_auth/docs/drf/views.py:42 msgid "refresh a token pair (refresh and access)." msgstr "刷新令牌对(刷新和访问)。" -#: engine/vibes_auth/docs/drf/views.py:55 +#: engine/vibes_auth/docs/drf/views.py:64 msgid "verify a token" msgstr "验证令牌" -#: engine/vibes_auth/docs/drf/views.py:56 +#: engine/vibes_auth/docs/drf/views.py:65 msgid "Verify a token (refresh or access)." msgstr "验证令牌(刷新或访问)。" -#: engine/vibes_auth/docs/drf/views.py:62 engine/vibes_auth/views.py:78 +#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:78 msgid "the token is valid" msgstr "令牌有效" -#: engine/vibes_auth/docs/drf/viewsets.py:16 +#: engine/vibes_auth/docs/drf/viewsets.py:19 msgid "create a new user" msgstr "创建新用户" -#: engine/vibes_auth/docs/drf/viewsets.py:21 +#: engine/vibes_auth/docs/drf/viewsets.py:27 msgid "retrieve a user's details" msgstr "读取用户详细信息" -#: engine/vibes_auth/docs/drf/viewsets.py:25 +#: engine/vibes_auth/docs/drf/viewsets.py:34 msgid "update a user's details" msgstr "更新用户信息" -#: engine/vibes_auth/docs/drf/viewsets.py:30 +#: engine/vibes_auth/docs/drf/viewsets.py:42 +msgid "partially update a user's details" +msgstr "部分更新用户的详细信息" + +#: engine/vibes_auth/docs/drf/viewsets.py:50 msgid "delete a user" msgstr "删除用户" -#: engine/vibes_auth/docs/drf/viewsets.py:34 +#: engine/vibes_auth/docs/drf/viewsets.py:57 msgid "reset a user's password by sending a reset password email" msgstr "通过发送重置密码电子邮件重置用户密码" -#: engine/vibes_auth/docs/drf/viewsets.py:39 +#: engine/vibes_auth/docs/drf/viewsets.py:65 msgid "handle avatar upload for a user" msgstr "处理用户的头像上传" -#: engine/vibes_auth/docs/drf/viewsets.py:54 +#: engine/vibes_auth/docs/drf/viewsets.py:83 msgid "confirm a user's password reset" msgstr "确认用户密码重置" -#: engine/vibes_auth/docs/drf/viewsets.py:58 +#: engine/vibes_auth/docs/drf/viewsets.py:87 #: engine/vibes_auth/graphene/mutations.py:320 #: engine/vibes_auth/serializers.py:97 engine/vibes_auth/serializers.py:101 #: engine/vibes_auth/viewsets.py:84 msgid "passwords do not match" msgstr "密码不匹配" -#: engine/vibes_auth/docs/drf/viewsets.py:63 +#: engine/vibes_auth/docs/drf/viewsets.py:95 msgid "activate a user's account" msgstr "激活用户帐户" -#: engine/vibes_auth/docs/drf/viewsets.py:67 +#: engine/vibes_auth/docs/drf/viewsets.py:99 msgid "activation link is invalid or account already activated" msgstr "激活链接无效或账户已激活" -#: engine/vibes_auth/docs/drf/viewsets.py:72 +#: engine/vibes_auth/docs/drf/viewsets.py:107 msgid "merge client-stored recently viewed products" msgstr "合并客户存储的最近查看的产品" @@ -171,18 +195,19 @@ msgstr "帐户已激活..." msgid "something went wrong: {e!s}" msgstr "出了问题:{e!s}" -#: engine/vibes_auth/graphene/mutations.py:327 engine/vibes_auth/viewsets.py:95 +#: engine/vibes_auth/graphene/mutations.py:327 +#: engine/vibes_auth/viewsets.py:95 msgid "token is invalid!" msgstr "令牌无效!" #: engine/vibes_auth/graphene/object_types.py:40 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 个),按倒序排列。" #: engine/vibes_auth/graphene/object_types.py:42 -#: engine/vibes_auth/models.py:123 +#: engine/vibes_auth/models.py:176 msgid "groups" msgstr "组别" @@ -190,7 +215,8 @@ msgstr "组别" msgid "wishlist" msgstr "愿望清单" -#: engine/vibes_auth/graphene/object_types.py:47 engine/vibes_auth/models.py:59 +#: engine/vibes_auth/graphene/object_types.py:47 +#: engine/vibes_auth/models.py:68 msgid "avatar" msgstr "阿凡达" @@ -201,76 +227,31 @@ msgstr "属性可用于存储自定义数据" #: engine/vibes_auth/graphene/object_types.py:50 #, python-brace-format msgid "" -"language is one of the {settings.LANGUAGES} with default {settings." -"LANGUAGE_CODE}" +"language is one of the {settings.LANGUAGES} with default " +"{settings.LANGUAGE_CODE}" msgstr "语言是{settings.LANGUAGES}之一,默认为{settings.LANGUAGE_CODE}。" #: engine/vibes_auth/graphene/object_types.py:52 msgid "address set" msgstr "地址" -#: engine/vibes_auth/messaging/models.py:24 -msgid "Open" -msgstr "开放" - -#: engine/vibes_auth/messaging/models.py:25 -msgid "Closed" -msgstr "关闭" - -#: engine/vibes_auth/messaging/models.py:29 -msgid "User" -msgstr "用户" - -#: engine/vibes_auth/messaging/models.py:30 -msgid "Staff" -msgstr "工作人员" - -#: engine/vibes_auth/messaging/models.py:31 -msgid "System" -msgstr "系统" - -#: engine/vibes_auth/messaging/models.py:36 -msgid "For anonymous threads" -msgstr "匿名主题" - -#: engine/vibes_auth/messaging/models.py:50 -msgid "Chat thread" -msgstr "聊天主题" - -#: engine/vibes_auth/messaging/models.py:51 -msgid "Chat threads" -msgstr "聊天主题" - -#: engine/vibes_auth/messaging/models.py:56 -msgid "Provide user or email for anonymous thread." -msgstr "为匿名主题提供用户或电子邮件。" - -#: engine/vibes_auth/messaging/models.py:58 -#: engine/vibes_auth/messaging/services.py:132 -msgid "Assignee must be a staff user." -msgstr "受让人必须是工作人员用户。" - -#: engine/vibes_auth/messaging/models.py:74 -msgid "Chat message" -msgstr "聊天信息" - -#: engine/vibes_auth/messaging/models.py:75 -msgid "Chat messages" -msgstr "聊天信息" - -#: engine/vibes_auth/messaging/services.py:47 +#: engine/vibes_auth/messaging/services.py:48 msgid "Valid email is required for anonymous chats." msgstr "匿名聊天需要有效的电子邮件。" -#: engine/vibes_auth/messaging/services.py:55 +#: engine/vibes_auth/messaging/services.py:56 msgid "Message must be 1..1028 characters." msgstr "信息必须为 1...1028 个字符。" -#: engine/vibes_auth/messaging/services.py:89 +#: engine/vibes_auth/messaging/services.py:90 msgid "We're searching for the operator to answer you already, hold by!" msgstr "我们正在寻找接线员,请稍候!" -#: engine/vibes_auth/models.py:31 +#: engine/vibes_auth/messaging/services.py:133 +msgid "Assignee must be a staff user." +msgstr "受让人必须是工作人员用户。" + +#: engine/vibes_auth/models.py:40 msgid "" "Represents a User entity with customized fields and methods for extended " "functionality. This class extends the AbstractUser model and integrates " @@ -280,96 +261,122 @@ msgid "" "verifying accounts. The User model is designed to handle specific use cases " "for enhanced user management." msgstr "" -"代表具有自定义字段和方法以扩展功能的用户实体。该类扩展了 AbstractUser 模型," -"并集成了其他功能,如自定义电子邮件登录、验证方法、订阅状态、验证和属性存储。" -"它还为管理最近查看的项目和基于令牌的激活提供了实用工具,以便验证账户。用户模" -"型旨在处理增强用户管理的特定用例。" +"代表具有自定义字段和方法以扩展功能的用户实体。该类扩展了 AbstractUser " +"模型,并集成了其他功能,如自定义电子邮件登录、验证方法、订阅状态、验证和属性存储。它还为管理最近查看的项目和基于令牌的激活提供了实用工具,以便验证账户。用户模型旨在处理增强用户管理的特定用例。" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "email" msgstr "电子邮件" -#: engine/vibes_auth/models.py:42 +#: engine/vibes_auth/models.py:51 msgid "user email address" msgstr "用户电子邮件地址" -#: engine/vibes_auth/models.py:44 +#: engine/vibes_auth/models.py:53 msgid "phone_number" msgstr "电话号码" -#: engine/vibes_auth/models.py:49 +#: engine/vibes_auth/models.py:58 msgid "user phone number" msgstr "用户电话号码" -#: engine/vibes_auth/models.py:55 +#: engine/vibes_auth/models.py:64 msgid "first_name" msgstr "姓名" -#: engine/vibes_auth/models.py:56 +#: engine/vibes_auth/models.py:65 msgid "last_name" msgstr "姓氏" -#: engine/vibes_auth/models.py:62 +#: engine/vibes_auth/models.py:71 msgid "user profile image" msgstr "用户配置文件图像" -#: engine/vibes_auth/models.py:67 +#: engine/vibes_auth/models.py:76 msgid "is verified" msgstr "已核实" -#: engine/vibes_auth/models.py:68 +#: engine/vibes_auth/models.py:77 msgid "user verification status" msgstr "用户验证状态" -#: engine/vibes_auth/models.py:71 +#: engine/vibes_auth/models.py:80 msgid "is_active" msgstr "处于活动状态" -#: engine/vibes_auth/models.py:73 +#: engine/vibes_auth/models.py:82 msgid "unselect this instead of deleting accounts" msgstr "取消选择此选项,而不是删除账户" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "is_subscribed" msgstr "已订阅" -#: engine/vibes_auth/models.py:76 +#: engine/vibes_auth/models.py:85 msgid "user's newsletter subscription status" msgstr "用户的通讯订阅状态" -#: engine/vibes_auth/models.py:79 +#: engine/vibes_auth/models.py:88 msgid "activation token" msgstr "激活令牌" -#: engine/vibes_auth/models.py:83 +#: engine/vibes_auth/models.py:92 msgid "attributes" msgstr "属性" -#: engine/vibes_auth/models.py:115 +#: engine/vibes_auth/models.py:124 msgid "user" msgstr "用户" -#: engine/vibes_auth/models.py:116 +#: engine/vibes_auth/models.py:125 msgid "users" msgstr "用户" -#: engine/vibes_auth/models.py:122 +#: engine/vibes_auth/models.py:130 +msgid "For anonymous threads" +msgstr "匿名主题" + +#: engine/vibes_auth/models.py:144 +msgid "Chat thread" +msgstr "聊天主题" + +#: engine/vibes_auth/models.py:145 +msgid "Chat threads" +msgstr "聊天主题" + +#: engine/vibes_auth/models.py:150 +msgid "provide user or email for anonymous thread." +msgstr "为匿名主题提供用户或电子邮件。" + +#: engine/vibes_auth/models.py:152 +msgid "assignee must be a staff user." +msgstr "受让人必须是工作人员用户。" + +#: engine/vibes_auth/models.py:168 +msgid "Chat message" +msgstr "聊天信息" + +#: engine/vibes_auth/models.py:169 +msgid "Chat messages" +msgstr "聊天信息" + +#: engine/vibes_auth/models.py:175 msgid "group" msgstr "组别" -#: engine/vibes_auth/models.py:129 +#: engine/vibes_auth/models.py:182 msgid "outstanding token" msgstr "出色的代币" -#: engine/vibes_auth/models.py:130 +#: engine/vibes_auth/models.py:183 msgid "outstanding tokens" msgstr "未兑代币" -#: engine/vibes_auth/models.py:136 +#: engine/vibes_auth/models.py:189 msgid "blacklisted token" msgstr "黑名单令牌" -#: engine/vibes_auth/models.py:137 +#: engine/vibes_auth/models.py:190 msgid "blacklisted tokens" msgstr "黑名单令牌" @@ -432,8 +439,7 @@ msgstr "你好%(user_first_name)s," #: engine/vibes_auth/templates/user_reset_password_email.html:92 msgid "" -"we have received a request to reset your password. please reset your " -"password\n" +"we have received a request to reset your password. please reset your password\n" " by clicking the button below:" msgstr "我们收到了重置密码的请求。请点击下面的按钮重置密码:" @@ -507,32 +513,28 @@ 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 位数字。" #: engine/vibes_auth/views.py:30 msgid "" -"Represents a view for getting a pair of access and refresh tokens and user's " -"data. This view manages the process of handling token-based authentication " +"Represents a view for getting a pair of access and refresh tokens and user's" +" data. This view manages the process of handling token-based authentication " "where clients can get a pair of JWT tokens (access and refresh) using " "provided credentials. It is built on top of a base token view and ensures " "proper rate limiting to protect against brute force attacks." msgstr "" -"代表用于获取一对访问和刷新令牌以及用户数据的视图。该视图管理处理基于令牌的身" -"份验证的流程,客户端可使用提供的凭据获取一对 JWT 令牌(访问和刷新)。它建立在" -"基本令牌视图之上,并确保适当的速率限制,以防止暴力攻击。" +"代表用于获取一对访问和刷新令牌以及用户数据的视图。该视图管理处理基于令牌的身份验证的流程,客户端可使用提供的凭据获取一对 JWT " +"令牌(访问和刷新)。它建立在基本令牌视图之上,并确保适当的速率限制,以防止暴力攻击。" #: engine/vibes_auth/views.py:48 msgid "" -"Handles refreshing of tokens for authentication purposes. This class is used " -"to provide functionality for token refresh operations as part of an " -"authentication system. It ensures that clients can request a refreshed token " -"within defined rate limits. The view relies on the associated serializer to " -"validate token refresh inputs and produce appropriate outputs." +"Handles refreshing of tokens for authentication purposes. This class is used" +" to provide functionality for token refresh operations as part of an " +"authentication system. It ensures that clients can request a refreshed token" +" within defined rate limits. The view relies on the associated serializer to" +" validate token refresh inputs and produce appropriate outputs." msgstr "" -"处理刷新令牌以进行身份验证。该类用于为作为身份验证系统一部分的令牌刷新操作提" -"供功能。它能确保客户端在规定的速率限制内请求刷新令牌。视图依赖于相关的序列化" -"器来验证令牌刷新输入并产生适当的输出。" +"处理刷新令牌以进行身份验证。该类用于为作为身份验证系统一部分的令牌刷新操作提供功能。它能确保客户端在规定的速率限制内请求刷新令牌。视图依赖于相关的序列化器来验证令牌刷新输入并产生适当的输出。" #: engine/vibes_auth/views.py:67 msgid "" @@ -547,15 +549,10 @@ msgstr "令牌无效" #: engine/vibes_auth/viewsets.py:45 msgid "" "User view set implementation.\n" -"Provides a set of actions that manage user-related data such as creation, " -"retrieval, updates, deletion, and custom actions including password reset, " -"avatar upload, account activation, and recently viewed items merging. This " -"class extends the mixins and GenericViewSet for robust API handling." +"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling." msgstr "" "用户视图集实施。\n" -"该类提供了一组操作,用于管理用户相关数据,如创建、检索、更新、删除以及自定义" -"操作,包括密码重置、上传头像、激活账户和合并最近查看的项目。该类对 mixins 和 " -"GenericViewSet 进行了扩展,以实现强大的 API 处理功能。" +"该类提供了一组操作,用于管理用户相关数据,如创建、检索、更新、删除以及自定义操作,包括密码重置、上传头像、激活账户和合并最近查看的项目。该类对 mixins 和 GenericViewSet 进行了扩展,以实现强大的 API 处理功能。" #: engine/vibes_auth/viewsets.py:99 msgid "password reset successfully" diff --git a/engine/vibes_auth/messaging/consumers.py b/engine/vibes_auth/messaging/consumers.py index c16756a9..8d4c4488 100644 --- a/engine/vibes_auth/messaging/consumers.py +++ b/engine/vibes_auth/messaging/consumers.py @@ -3,6 +3,13 @@ from __future__ import annotations from typing import Any from channels.generic.websocket import AsyncJsonWebsocketConsumer +from drf_spectacular_websocket.decorators import extend_ws_schema + +from engine.vibes_auth.docs.drf.messaging import ( + STAFF_INBOX_CONSUMER_SCHEMA, + THREAD_CONSUMER_SCHEMA, + USER_MESSAGE_CONSUMER_SCHEMA, +) MAX_MESSAGE_LENGTH = 1028 @@ -11,6 +18,7 @@ class UserMessageConsumer(AsyncJsonWebsocketConsumer): async def connect(self) -> None: # noqa: D401 await self.accept() + @extend_ws_schema(**USER_MESSAGE_CONSUMER_SCHEMA) async def receive_json(self, content: dict[str, Any], **kwargs) -> None: action = content.get("action") if action == "ping": @@ -31,6 +39,7 @@ class StaffInboxConsumer(AsyncJsonWebsocketConsumer): return await self.accept() + @extend_ws_schema(**STAFF_INBOX_CONSUMER_SCHEMA) async def receive_json(self, content: dict[str, Any], **kwargs) -> None: await self.send_json({"ok": True}) @@ -46,5 +55,6 @@ class ThreadConsumer(AsyncJsonWebsocketConsumer): self.thread_id = self.scope["url_route"]["kwargs"].get("thread_id") await self.accept() + @extend_ws_schema(**THREAD_CONSUMER_SCHEMA) async def receive_json(self, content: dict[str, Any], **kwargs) -> None: await self.send_json({"thread": getattr(self, "thread_id", None), "ok": True}) diff --git a/engine/vibes_auth/messaging/routing.py b/engine/vibes_auth/messaging/routing.py deleted file mode 100644 index 38175694..00000000 --- a/engine/vibes_auth/messaging/routing.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.urls import re_path - -from engine.vibes_auth.messaging.consumers import StaffInboxConsumer, ThreadConsumer, UserMessageConsumer - -websocket_urlpatterns = [ - re_path(r"^ws/chat/message$", UserMessageConsumer.as_asgi()), - re_path(r"^ws/chat/staff/$", StaffInboxConsumer.as_asgi()), - re_path(r"^ws/chat/thread/(?P[0-9a-fA-F-]{36})/$", ThreadConsumer.as_asgi()), -] diff --git a/engine/vibes_auth/messaging/serializers.py b/engine/vibes_auth/messaging/serializers.py new file mode 100644 index 00000000..dcbf928a --- /dev/null +++ b/engine/vibes_auth/messaging/serializers.py @@ -0,0 +1,15 @@ +from rest_framework.fields import CharField, BooleanField +from rest_framework.serializers import Serializer + + +class PingPongSerializer(Serializer): + text = CharField(required=True) + + +class OkSerializer(Serializer): + ok = BooleanField(required=True) + + +class ThreadSerializer(Serializer): + thread = CharField(required=True) + ok = BooleanField(required=True) diff --git a/engine/vibes_auth/messaging/services.py b/engine/vibes_auth/messaging/services.py index a78c4b54..e4926448 100644 --- a/engine/vibes_auth/messaging/services.py +++ b/engine/vibes_auth/messaging/services.py @@ -10,7 +10,8 @@ from django.db.models import Count from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from engine.vibes_auth.messaging.models import ChatMessage, ChatThread, SenderType, ThreadStatus +from engine.vibes_auth.choices import SenderType, ThreadStatus +from engine.vibes_auth.models import ChatMessage, ChatThread from engine.vibes_auth.models import User THREAD_GROUP_PREFIX = "thread:" diff --git a/engine/vibes_auth/messaging/urls.py b/engine/vibes_auth/messaging/urls.py new file mode 100644 index 00000000..428d18c3 --- /dev/null +++ b/engine/vibes_auth/messaging/urls.py @@ -0,0 +1,14 @@ +from django.conf import settings +from django.urls import re_path + +from engine.vibes_auth.messaging.consumers import StaffInboxConsumer, ThreadConsumer, UserMessageConsumer + +messaging_urlpatters = ( + [ + re_path(r"^ws/chat/message$", UserMessageConsumer.as_asgi()), + re_path(r"^ws/chat/staff/$", StaffInboxConsumer.as_asgi()), + re_path(r"^ws/chat/thread/(?P[0-9a-fA-F-]{36})/$", ThreadConsumer.as_asgi()), + ] + if settings.ALLOW_MESSAGING + else [] +) diff --git a/engine/vibes_auth/urls.py b/engine/vibes_auth/urls.py index 09c8c832..9cae352f 100644 --- a/engine/vibes_auth/urls.py +++ b/engine/vibes_auth/urls.py @@ -1,6 +1,7 @@ from django.urls import include, path from rest_framework.routers import DefaultRouter +from engine.vibes_auth.messaging.urls import messaging_urlpatters from engine.vibes_auth.views import TokenObtainPairView, TokenRefreshView, TokenVerifyView from engine.vibes_auth.viewsets import UserViewSet @@ -14,4 +15,5 @@ urlpatterns = [ path(r"refresh/", TokenRefreshView.as_view(), name="token_refresh"), path(r"verify/", TokenVerifyView.as_view(), name="token_verify"), path(r"", include(auth_router.urls)), + *messaging_urlpatters, ] diff --git a/evibes/asgi.py b/evibes/asgi.py index 89ce9d5d..73f5b7e4 100644 --- a/evibes/asgi.py +++ b/evibes/asgi.py @@ -19,13 +19,13 @@ from engine.vibes_auth.messaging.auth import JWTAuthMiddlewareStack # noqa: E40 http_application = get_asgi_application() -websocket_urlpatterns: List = [] +messaging_urlpatters: List = [] with suppress(ModuleNotFoundError): - from engine.vibes_auth.messaging.routing import websocket_urlpatterns + from engine.vibes_auth.messaging.urls import messaging_urlpatters application = ProtocolTypeRouter( { "http": http_application, - "websocket": JWTAuthMiddlewareStack(URLRouter(websocket_urlpatterns)), + "websocket": JWTAuthMiddlewareStack(URLRouter(messaging_urlpatters)), } ) diff --git a/evibes/locale/ar_AR/LC_MESSAGES/django.po b/evibes/locale/ar_AR/LC_MESSAGES/django.po index 6dded0ec..01088164 100644 --- a/evibes/locale/ar_AR/LC_MESSAGES/django.po +++ b/evibes/locale/ar_AR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,34 +200,49 @@ msgstr "" "\n" "مرحباً بك في وثائق eVibes.\n" "\n" -"eVibes عبارة عن منصة تجارة إلكترونية قوية تتيح لك إطلاق وإدارة متجر إلكتروني من أي نوع بنقرات قليلة.\n" +"eVibes عبارة عن منصة تجارة إلكترونية قوية تتيح لك إطلاق وإدارة متجر إلكتروني " +"من أي نوع بنقرات قليلة.\n" "\n" "## الميزات الرئيسية\n" -"- ** كتالوج المنتجات:** إدارة تفاصيل المنتج والتسعير والمخزون والتوافر عبر فئات متعددة.\n" -"- **إدارة الطلبات:** معالجة الطلبات وتتبع التنفيذ والتعامل مع طلبات العملاء بكفاءة.\n" -"- **المصادقة والتفويض:** مصادقة شاملة للمستخدمين باستخدام رموز JWT المميزة والأذونات المستندة إلى الأدوار.\n" +"- ** كتالوج المنتجات:** إدارة تفاصيل المنتج والتسعير والمخزون والتوافر عبر " +"فئات متعددة.\n" +"- **إدارة الطلبات:** معالجة الطلبات وتتبع التنفيذ والتعامل مع طلبات العملاء " +"بكفاءة.\n" +"- **المصادقة والتفويض:** مصادقة شاملة للمستخدمين باستخدام رموز JWT المميزة " +"والأذونات المستندة إلى الأدوار.\n" "- ** معالجة المدفوعات:** دمج بوابات دفع متعددة وإدارة المعاملات بشكل آمن.\n" -"- ** إدارة المدونة والمحتوى:** إنشاء وإدارة منشورات المدونة والمحتوى التسويقي لمتجرك.\n" -"- ** عمليات B2B:** نقاط نهاية مخصصة للمعاملات بين الشركات وإدارة البيع بالجملة.\n" -"- **دعم متعدد اللغات:** خدمة العملاء في جميع أنحاء العالم مع إمكانات التدويل الكاملة (i18n).\n" -"- **تكامل مخصص:** بنية واجهة برمجة تطبيقات قابلة للتوسيع للتكامل مع المنصات والخدمات الخارجية.\n" -"- **التحليلات والتقارير:** إنشاء تقارير مفصلة عن المبيعات والمخزون وسلوك العملاء.\n" -"- ** تحديثات في الوقت الفعلي:** احصل على بيانات مباشرة عن مستويات المخزون وحالات الطلبات وتغييرات الأسعار.\n" +"- ** إدارة المدونة والمحتوى:** إنشاء وإدارة منشورات المدونة والمحتوى " +"التسويقي لمتجرك.\n" +"- ** عمليات B2B:** نقاط نهاية مخصصة للمعاملات بين الشركات وإدارة البيع " +"بالجملة.\n" +"- **دعم متعدد اللغات:** خدمة العملاء في جميع أنحاء العالم مع إمكانات التدويل " +"الكاملة (i18n).\n" +"- **تكامل مخصص:** بنية واجهة برمجة تطبيقات قابلة للتوسيع للتكامل مع المنصات " +"والخدمات الخارجية.\n" +"- **التحليلات والتقارير:** إنشاء تقارير مفصلة عن المبيعات والمخزون وسلوك " +"العملاء.\n" +"- ** تحديثات في الوقت الفعلي:** احصل على بيانات مباشرة عن مستويات المخزون " +"وحالات الطلبات وتغييرات الأسعار.\n" "\n" "## واجهات برمجة التطبيقات المتاحة\n" "- **واجهة برمجة تطبيقات REST:** واجهة REST كاملة (هذه الوثائق)\n" -"- ** واجهة برمجة تطبيقات GraphiQL:** متوفرة على '/graphql/' مع واجهة GraphiQL للاستعلامات التفاعلية\n" +"- ** واجهة برمجة تطبيقات GraphiQL:** متوفرة على '/graphql/' مع واجهة " +"GraphiQL للاستعلامات التفاعلية\n" "\n" "## المصادقة\n" -"- يتم التعامل مع المصادقة عبر رموز JWT المميزة. قم بتضمين الرمز المميز في رأس \"X-EVIBES-AUTH\" لطلباتك بصيغة \"حامل \".\n" +"- يتم التعامل مع المصادقة عبر رموز JWT المميزة. قم بتضمين الرمز المميز في " +"رأس \"X-EVIBES-AUTH\" لطلباتك بصيغة \"حامل \".\n" "{\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}{\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "}- يتم تدوير رموز التحديث تلقائيًا وإبطالها بعد الاستخدام لتعزيز الأمان.\n" "\n" "## التدويل (i18n)\n" -"- قم بتعيين رأس \"قبول اللغة\" لتحديد لغتك المفضلة (على سبيل المثال، \"قبول اللغة: en-US\").\n" +"- قم بتعيين رأس \"قبول اللغة\" لتحديد لغتك المفضلة (على سبيل المثال، \"قبول " +"اللغة: en-US\").\n" "- يمكن استرداد اللغات المتاحة من نقطة النهاية \"/ التطبيق/اللغات/\".\n" "- جميع المحتويات التي تواجه المستخدم تدعم لغات متعددة خارج الصندوق.\n" "\n" diff --git a/evibes/locale/cs_CZ/LC_MESSAGES/django.po b/evibes/locale/cs_CZ/LC_MESSAGES/django.po index 01dc87d3..bcf91c26 100644 --- a/evibes/locale/cs_CZ/LC_MESSAGES/django.po +++ b/evibes/locale/cs_CZ/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,44 +200,64 @@ msgstr "" "\n" "Vítejte v dokumentaci systému eVibes.\n" "\n" -"eVibes je výkonná platforma pro elektronické obchodování, která umožňuje spustit a spravovat internetový obchod jakéhokoli druhu na několik kliknutí.\n" +"eVibes je výkonná platforma pro elektronické obchodování, která umožňuje " +"spustit a spravovat internetový obchod jakéhokoli druhu na několik " +"kliknutí.\n" "\n" "## Klíčové funkce\n" -"- **Katalog produktů:** Správa podrobností o produktech, cen, skladových zásob a dostupnosti v několika kategoriích.\n" -"- **Správa objednávek:** Zpracovávejte objednávky, sledujte jejich plnění a efektivně vyřizujte požadavky zákazníků.\n" -"- **Ověřování a autorizace:** Komplexní ověřování uživatelů pomocí tokenů JWT a oprávnění na základě rolí.\n" -"- **Zpracování plateb:** Integrace více platebních bran a bezpečná správa transakcí.\n" -"- **Správa blogu a obsahu:** Vytváření a správa příspěvků na blogu a marketingového obsahu pro váš obchod.\n" -"- **Provoz B2B:** Vyhrazené koncové body pro transakce mezi podniky a správu velkoobchodu.\n" -"- **Vícejazyčná podpora:** Obsluhujte zákazníky po celém světě díky plným možnostem internacionalizace (i18n).\n" -"- **Vlastní integrace:** Rozšiřitelná architektura API pro integraci s externími platformami a službami.\n" -"- **Analytika a reporting:** Generování podrobných reportů o prodeji, zásobách a chování zákazníků.\n" -"- **Aktualizace v reálném čase:** Získávejte živé údaje o stavu zásob, stavu objednávek a změnách cen.\n" +"- **Katalog produktů:** Správa podrobností o produktech, cen, skladových " +"zásob a dostupnosti v několika kategoriích.\n" +"- **Správa objednávek:** Zpracovávejte objednávky, sledujte jejich plnění a " +"efektivně vyřizujte požadavky zákazníků.\n" +"- **Ověřování a autorizace:** Komplexní ověřování uživatelů pomocí tokenů " +"JWT a oprávnění na základě rolí.\n" +"- **Zpracování plateb:** Integrace více platebních bran a bezpečná správa " +"transakcí.\n" +"- **Správa blogu a obsahu:** Vytváření a správa příspěvků na blogu a " +"marketingového obsahu pro váš obchod.\n" +"- **Provoz B2B:** Vyhrazené koncové body pro transakce mezi podniky a správu " +"velkoobchodu.\n" +"- **Vícejazyčná podpora:** Obsluhujte zákazníky po celém světě díky plným " +"možnostem internacionalizace (i18n).\n" +"- **Vlastní integrace:** Rozšiřitelná architektura API pro integraci s " +"externími platformami a službami.\n" +"- **Analytika a reporting:** Generování podrobných reportů o prodeji, " +"zásobách a chování zákazníků.\n" +"- **Aktualizace v reálném čase:** Získávejte živé údaje o stavu zásob, stavu " +"objednávek a změnách cen.\n" "\n" "## Dostupná rozhraní API\n" "- **REST API:** Plné rozhraní RESTful (tato dokumentace).\n" -"- **GraphQL API:** K dispozici na adrese `/graphql/` s rozhraním GraphiQL pro interaktivní dotazy.\n" +"- **GraphQL API:** K dispozici na adrese `/graphql/` s rozhraním GraphiQL " +"pro interaktivní dotazy.\n" "\n" "## Ověřování\n" -"- Ověřování se provádí pomocí tokenů JWT. Token zahrňte do hlavičky `X-EVIBES-AUTH` svých požadavků ve formátu `Bearer `.\n" +"- Ověřování se provádí pomocí tokenů JWT. Token zahrňte do hlavičky `X-" +"EVIBES-AUTH` svých požadavků ve formátu `Bearer `.\n" "- Životnost přístupového tokenu je {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}. {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Životnost tokenu pro obnovení je {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hodin.\n" -"- Tokeny pro obnovení jsou po použití automaticky rotovány a zneplatněny z důvodu vyšší bezpečnosti.\n" +"- Tokeny pro obnovení jsou po použití automaticky rotovány a zneplatněny z " +"důvodu vyšší bezpečnosti.\n" "\n" "## Internacionalizace (i18n)\n" -"- Nastavte hlavičku `Accept-Language` tak, aby určovala preferovaný jazyk (např. `Accept-Language: en-US`).\n" +"- Nastavte hlavičku `Accept-Language` tak, aby určovala preferovaný jazyk " +"(např. `Accept-Language: en-US`).\n" "- Dostupné jazyky lze získat z koncového bodu `/app/languages/`.\n" -"- Veškerý obsah směřující k uživateli podporuje více jazyků hned po vybalení z krabice.\n" +"- Veškerý obsah směřující k uživateli podporuje více jazyků hned po vybalení " +"z krabice.\n" "\n" "## Formáty odpovědí\n" "Rozhraní API podporuje více formátů odpovědí:\n" "- **JSON** (výchozí, formátováno camelCase).\n" "- **XML** (přidejte `?format=xml` nebo nastavte `Accept: application/xml`).\n" -"- **YAML** (přidejte `?format=yaml` nebo nastavte `Accept: application/x-yaml`)\n" +"- **YAML** (přidejte `?format=yaml` nebo nastavte `Accept: application/x-" +"yaml`)\n" "\n" "## Stav a monitorování\n" "- Kontroly stavu: `/health/`\n" diff --git a/evibes/locale/da_DK/LC_MESSAGES/django.po b/evibes/locale/da_DK/LC_MESSAGES/django.po index ab84ce24..127907d6 100644 --- a/evibes/locale/da_DK/LC_MESSAGES/django.po +++ b/evibes/locale/da_DK/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,36 +200,53 @@ msgstr "" "\n" "Velkommen til eVibes' dokumentation.\n" "\n" -"eVibes er en stærk e-handelsplatform, der giver dig mulighed for at starte og administrere en onlinebutik af enhver art med blot nogle få klik.\n" +"eVibes er en stærk e-handelsplatform, der giver dig mulighed for at starte " +"og administrere en onlinebutik af enhver art med blot nogle få klik.\n" "\n" "## Nøglefunktioner\n" -"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgængelighed på tværs af flere kategorier.\n" -"- Ordrehåndtering:** Behandl ordrer, spor opfyldelse og håndter kundeanmodninger effektivt.\n" -"- Godkendelse og autorisation:** Omfattende brugergodkendelse med JWT-tokens og rollebaserede tilladelser.\n" -"- **Betalingsbehandling:** Integrer flere betalingsgateways og håndter transaktioner sikkert.\n" -"- Blog- og indholdsstyring: ** Opret og administrer blogindlæg og markedsføringsindhold til din butik.\n" -"- **B2B Operations:** Dedikerede slutpunkter til business-to-business-transaktioner og engrosadministration.\n" -"- Flersproget support:** Betjen kunder over hele verden med fuld internationalisering (i18n).\n" -"- Brugerdefinerede integrationer:** Udvidelig API-arkitektur til integration med eksterne platforme og tjenester.\n" -"- Analyse og rapportering:** Generer detaljerede rapporter om salg, lagerbeholdning og kundeadfærd.\n" -"- Opdateringer i realtid:** Få live-data om lagerniveauer, ordrestatus og prisændringer.\n" +"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og " +"tilgængelighed på tværs af flere kategorier.\n" +"- Ordrehåndtering:** Behandl ordrer, spor opfyldelse og håndter " +"kundeanmodninger effektivt.\n" +"- Godkendelse og autorisation:** Omfattende brugergodkendelse med JWT-tokens " +"og rollebaserede tilladelser.\n" +"- **Betalingsbehandling:** Integrer flere betalingsgateways og håndter " +"transaktioner sikkert.\n" +"- Blog- og indholdsstyring: ** Opret og administrer blogindlæg og " +"markedsføringsindhold til din butik.\n" +"- **B2B Operations:** Dedikerede slutpunkter til business-to-business-" +"transaktioner og engrosadministration.\n" +"- Flersproget support:** Betjen kunder over hele verden med fuld " +"internationalisering (i18n).\n" +"- Brugerdefinerede integrationer:** Udvidelig API-arkitektur til integration " +"med eksterne platforme og tjenester.\n" +"- Analyse og rapportering:** Generer detaljerede rapporter om salg, " +"lagerbeholdning og kundeadfærd.\n" +"- Opdateringer i realtid:** Få live-data om lagerniveauer, ordrestatus og " +"prisændringer.\n" "\n" "## Tilgængelige API'er\n" "- **REST API:** Fuld RESTful-grænseflade (denne dokumentation)\n" -"- GraphQL API:** Tilgængelig på `/graphql/` med GraphiQL-grænseflade til interaktive forespørgsler\n" +"- GraphQL API:** Tilgængelig på `/graphql/` med GraphiQL-grænseflade til " +"interaktive forespørgsler\n" "\n" "## Autentificering\n" -"- Autentificering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-headeren i dine anmodninger i formatet `Bearer `.\n" +"- Autentificering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-" +"AUTH`-headeren i dine anmodninger i formatet `Bearer `.\n" "- Adgangstokenets levetid er {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Opdateringstokenets levetid er {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} timer.\n" -"- Refresh-tokens bliver automatisk roteret og ugyldiggjort efter brug for at øge sikkerheden.\n" +"- Refresh-tokens bliver automatisk roteret og ugyldiggjort efter brug for at " +"øge sikkerheden.\n" "\n" "## Internationalisering (i18n)\n" -"- Indstil headeren `Accept-Language` til at angive dit foretrukne sprog (f.eks. `Accept-Language: en-US`).\n" +"- Indstil headeren `Accept-Language` til at angive dit foretrukne sprog (f." +"eks. `Accept-Language: en-US`).\n" "- Tilgængelige sprog kan hentes fra `/app/languages/` endpoint.\n" "- Alt brugervendt indhold understøtter flere sprog fra starten.\n" "\n" @@ -220,7 +254,8 @@ msgstr "" "API'en understøtter flere svarformater:\n" "- **JSON** (standard, camelCase-formateret)\n" "- XML** (tilføj `?format=xml` eller indstil `Accept: application/xml`)\n" -"- **YAML** (tilføj `?format=yaml` eller indstil `Accept: application/x-yaml`)\n" +"- **YAML** (tilføj `?format=yaml` eller indstil `Accept: application/x-" +"yaml`)\n" "\n" "## Sundhed og overvågning\n" "- Sundhedstjek: `/health/`\n" diff --git a/evibes/locale/de_DE/LC_MESSAGES/django.po b/evibes/locale/de_DE/LC_MESSAGES/django.po index 3cb7b8a3..f8093089 100644 --- a/evibes/locale/de_DE/LC_MESSAGES/django.po +++ b/evibes/locale/de_DE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -135,36 +135,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -184,44 +201,66 @@ msgstr "" "\n" "Willkommen bei der eVibes-Dokumentation.\n" "\n" -"eVibes ist eine leistungsstarke E-Commerce-Plattform, die es Ihnen ermöglicht, mit nur wenigen Klicks einen Online-Shop jeglicher Art zu eröffnen und zu verwalten.\n" +"eVibes ist eine leistungsstarke E-Commerce-Plattform, die es Ihnen " +"ermöglicht, mit nur wenigen Klicks einen Online-Shop jeglicher Art zu " +"eröffnen und zu verwalten.\n" "\n" "## Hauptmerkmale\n" -"- **Produktkatalog:** Verwalten Sie Produktdetails, Preise, Bestand und Verfügbarkeit über mehrere Kategorien hinweg.\n" -"- **Auftragsverwaltung:** Verarbeiten Sie Aufträge, verfolgen Sie die Ausführung und bearbeiten Sie Kundenanfragen effizient.\n" -"- **Authentifizierung & Autorisierung:** Umfassende Benutzerauthentifizierung mit JWT-Tokens und rollenbasierten Berechtigungen.\n" -"- **Zahlungsabwicklung:** Integrieren Sie mehrere Zahlungsgateways und verwalten Sie Transaktionen auf sichere Weise.\n" -"- **Blog & Content Management:** Erstellen und verwalten Sie Blogbeiträge und Marketinginhalte für Ihren Shop.\n" -"- **B2B-Betrieb:** Dedizierte Endpunkte für Business-to-Business-Transaktionen und Großhandelsmanagement.\n" -"- **Mehrsprachige Unterstützung:** Bedienen Sie Kunden auf der ganzen Welt mit vollständigen Internationalisierungsfunktionen (i18n).\n" -"- **Benutzerdefinierte Integrationen:** Erweiterbare API-Architektur für die Integration mit externen Plattformen und Diensten.\n" -"- **Analytik & Reporting:** Generieren Sie detaillierte Berichte über Verkäufe, Bestände und Kundenverhalten.\n" -"- **Echtzeit-Updates:** Erhalten Sie Live-Daten zu Lagerbeständen, Bestellstatus und Preisänderungen.\n" +"- **Produktkatalog:** Verwalten Sie Produktdetails, Preise, Bestand und " +"Verfügbarkeit über mehrere Kategorien hinweg.\n" +"- **Auftragsverwaltung:** Verarbeiten Sie Aufträge, verfolgen Sie die " +"Ausführung und bearbeiten Sie Kundenanfragen effizient.\n" +"- **Authentifizierung & Autorisierung:** Umfassende " +"Benutzerauthentifizierung mit JWT-Tokens und rollenbasierten " +"Berechtigungen.\n" +"- **Zahlungsabwicklung:** Integrieren Sie mehrere Zahlungsgateways und " +"verwalten Sie Transaktionen auf sichere Weise.\n" +"- **Blog & Content Management:** Erstellen und verwalten Sie Blogbeiträge " +"und Marketinginhalte für Ihren Shop.\n" +"- **B2B-Betrieb:** Dedizierte Endpunkte für Business-to-Business-" +"Transaktionen und Großhandelsmanagement.\n" +"- **Mehrsprachige Unterstützung:** Bedienen Sie Kunden auf der ganzen Welt " +"mit vollständigen Internationalisierungsfunktionen (i18n).\n" +"- **Benutzerdefinierte Integrationen:** Erweiterbare API-Architektur für die " +"Integration mit externen Plattformen und Diensten.\n" +"- **Analytik & Reporting:** Generieren Sie detaillierte Berichte über " +"Verkäufe, Bestände und Kundenverhalten.\n" +"- **Echtzeit-Updates:** Erhalten Sie Live-Daten zu Lagerbeständen, " +"Bestellstatus und Preisänderungen.\n" "\n" "## Verfügbare APIs\n" "- **REST API:** Vollständige RESTful-Schnittstelle (diese Dokumentation)\n" -"- **GraphQL API:** Verfügbar unter `/graphql/` mit GraphiQL-Schnittstelle für interaktive Abfragen\n" +"- **GraphQL API:** Verfügbar unter `/graphql/` mit GraphiQL-Schnittstelle " +"für interaktive Abfragen\n" "\n" "## Authentifizierung\n" -"- Die Authentifizierung erfolgt über JWT-Tokens. Fügen Sie das Token in den `X-EVIBES-AUTH`-Header Ihrer Anfragen im Format `Bearer ` ein.\n" +"- Die Authentifizierung erfolgt über JWT-Tokens. Fügen Sie das Token in den " +"`X-EVIBES-AUTH`-Header Ihrer Anfragen im Format `Bearer ` ein.\n" "- Die Lebensdauer des Zugangstokens beträgt {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Die Lebensdauer von Auffrischungstoken beträgt {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} Stunden.\n" -"- Refresh-Tokens werden automatisch rotiert und nach der Verwendung ungültig gemacht, um die Sicherheit zu erhöhen.\n" +"- Refresh-Tokens werden automatisch rotiert und nach der Verwendung ungültig " +"gemacht, um die Sicherheit zu erhöhen.\n" "\n" "## Internationalisierung (i18n)\n" -"- Setzen Sie den `Accept-Language`-Header, um Ihre bevorzugte Sprache anzugeben (z.B. `Accept-Language: en-US`).\n" -"- Die verfügbaren Sprachen können über den Endpunkt `/app/languages/` abgerufen werden.\n" +"- Setzen Sie den `Accept-Language`-Header, um Ihre bevorzugte Sprache " +"anzugeben (z.B. `Accept-Language: en-US`).\n" +"- Die verfügbaren Sprachen können über den Endpunkt `/app/languages/` " +"abgerufen werden.\n" "- Alle benutzerseitigen Inhalte unterstützen von Haus aus mehrere Sprachen.\n" "\n" "## Antwortformate\n" "Die API unterstützt mehrere Antwortformate:\n" "- **JSON** (Standard, camelCase-formatiert)\n" -"- XML** (fügen Sie `?format=xml` hinzu oder setzen Sie `Accept: application/xml`)\n" -"- **YAML** (fügen Sie `?format=yaml` hinzu oder legen Sie `Accept: application/x-yaml` fest)\n" +"- XML** (fügen Sie `?format=xml` hinzu oder setzen Sie `Accept: application/" +"xml`)\n" +"- **YAML** (fügen Sie `?format=yaml` hinzu oder legen Sie `Accept: " +"application/x-yaml` fest)\n" "\n" "## Gesundheit & Überwachung\n" "- Gesundheitsprüfungen: `/health/`\n" diff --git a/evibes/locale/en_GB/LC_MESSAGES/django.po b/evibes/locale/en_GB/LC_MESSAGES/django.po index d65f8a9f..865c7634 100644 --- a/evibes/locale/en_GB/LC_MESSAGES/django.po +++ b/evibes/locale/en_GB/LC_MESSAGES/django.po @@ -2,12 +2,12 @@ # Copyright (C) 2025 EGOR GORBUNOV # This file is distributed under the same license as the EVIBES package. # EGOR GORBUNOV , 2025. -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,36 +204,53 @@ msgstr "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" diff --git a/evibes/locale/en_US/LC_MESSAGES/django.po b/evibes/locale/en_US/LC_MESSAGES/django.po index 4b0b935b..515d399a 100644 --- a/evibes/locale/en_US/LC_MESSAGES/django.po +++ b/evibes/locale/en_US/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,36 +200,53 @@ msgstr "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks.\n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks.\n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" diff --git a/evibes/locale/es_ES/LC_MESSAGES/django.po b/evibes/locale/es_ES/LC_MESSAGES/django.po index 80fb04a8..0fff2418 100644 --- a/evibes/locale/es_ES/LC_MESSAGES/django.po +++ b/evibes/locale/es_ES/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,38 +200,59 @@ msgstr "" "\n" "Bienvenido a la documentación de eVibes.\n" "\n" -"eVibes es una potente plataforma de comercio electrónico que le permite lanzar y gestionar una tienda en línea de cualquier tipo en tan sólo unos clics.\n" +"eVibes es una potente plataforma de comercio electrónico que le permite " +"lanzar y gestionar una tienda en línea de cualquier tipo en tan sólo unos " +"clics.\n" "\n" "## Características principales\n" -"- **Catálogo de productos:** Gestione los detalles de los productos, precios, inventario y disponibilidad en múltiples categorías.\n" -"- **Gestión de Pedidos:** Procesar pedidos, seguimiento de cumplimiento, y manejar las solicitudes de los clientes de manera eficiente.\n" -"- Autenticación y autorización:Autenticación de usuario integral con tokens JWT y permisos basados en roles.\n" -"- **Procesamiento de pagos:** Integre múltiples pasarelas de pago y gestione las transacciones de forma segura.\n" -"- **Blog y gestión de contenidos:** Crear y gestionar entradas de blog y contenido de marketing para su tienda.\n" -"- **Operaciones B2B:** Puntos finales dedicados para transacciones de empresa a empresa y gestión de ventas al por mayor.\n" -"- Soporte multilingüe:** Sirve a clientes de todo el mundo con capacidades de internacionalización completa (i18n).\n" -"- Integraciones personalizadas:** Arquitectura API extensible para la integración con plataformas y servicios externos.\n" -"- Análisis e informes:** Generación de informes detallados sobre ventas, inventario y comportamiento de los clientes.\n" -"- Actualizaciones en tiempo real:** Obtenga datos en tiempo real sobre los niveles de inventario, el estado de los pedidos y los cambios de precios.\n" +"- **Catálogo de productos:** Gestione los detalles de los productos, " +"precios, inventario y disponibilidad en múltiples categorías.\n" +"- **Gestión de Pedidos:** Procesar pedidos, seguimiento de cumplimiento, y " +"manejar las solicitudes de los clientes de manera eficiente.\n" +"- Autenticación y autorización:Autenticación de usuario integral con tokens " +"JWT y permisos basados en roles.\n" +"- **Procesamiento de pagos:** Integre múltiples pasarelas de pago y gestione " +"las transacciones de forma segura.\n" +"- **Blog y gestión de contenidos:** Crear y gestionar entradas de blog y " +"contenido de marketing para su tienda.\n" +"- **Operaciones B2B:** Puntos finales dedicados para transacciones de " +"empresa a empresa y gestión de ventas al por mayor.\n" +"- Soporte multilingüe:** Sirve a clientes de todo el mundo con capacidades " +"de internacionalización completa (i18n).\n" +"- Integraciones personalizadas:** Arquitectura API extensible para la " +"integración con plataformas y servicios externos.\n" +"- Análisis e informes:** Generación de informes detallados sobre ventas, " +"inventario y comportamiento de los clientes.\n" +"- Actualizaciones en tiempo real:** Obtenga datos en tiempo real sobre los " +"niveles de inventario, el estado de los pedidos y los cambios de precios.\n" "\n" "## API disponibles\n" "- API REST:** Interfaz RESTful completa (esta documentación)\n" -"- API GraphQL:** Disponible en `/graphql/` con interfaz GraphiQL para consultas interactivas\n" +"- API GraphQL:** Disponible en `/graphql/` con interfaz GraphiQL para " +"consultas interactivas\n" "\n" "## Autenticación\n" -"- La autenticación se gestiona mediante tokens JWT. Incluya el token en la cabecera `X-EVIBES-AUTH` de sus peticiones con el formato `Bearer `.\n" +"- La autenticación se gestiona mediante tokens JWT. Incluya el token en la " +"cabecera `X-EVIBES-AUTH` de sus peticiones con el formato `Bearer " +"`.\n" "- La duración del token de acceso es {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- La duración del token de actualización es de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} horas.\n" -"- Los tokens de actualización se rotan automáticamente y se invalidan después de su uso para mejorar la seguridad.\n" +"- Los tokens de actualización se rotan automáticamente y se invalidan " +"después de su uso para mejorar la seguridad.\n" "\n" "## Internacionalización (i18n)\n" -"- Establezca la cabecera `Accept-Language` para especificar su idioma preferido (por ejemplo, `Accept-Language: en-US`).\n" -"- Los idiomas disponibles pueden recuperarse desde el punto final `/app/languages/`.\n" -"- Todos los contenidos orientados al usuario son compatibles con varios idiomas.\n" +"- Establezca la cabecera `Accept-Language` para especificar su idioma " +"preferido (por ejemplo, `Accept-Language: en-US`).\n" +"- Los idiomas disponibles pueden recuperarse desde el punto final `/app/" +"languages/`.\n" +"- Todos los contenidos orientados al usuario son compatibles con varios " +"idiomas.\n" "\n" "## Formatos de respuesta\n" "La API admite varios formatos de respuesta:\n" diff --git a/evibes/locale/fa_IR/LC_MESSAGES/django.po b/evibes/locale/fa_IR/LC_MESSAGES/django.po index ee79ff15..515fb327 100644 --- a/evibes/locale/fa_IR/LC_MESSAGES/django.po +++ b/evibes/locale/fa_IR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/evibes/locale/fr_FR/LC_MESSAGES/django.po b/evibes/locale/fr_FR/LC_MESSAGES/django.po index da195b7f..ba5c0628 100644 --- a/evibes/locale/fr_FR/LC_MESSAGES/django.po +++ b/evibes/locale/fr_FR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -78,8 +78,8 @@ msgstr "" #: evibes/settings/constance.py:40 msgid "How many days we store messages from authenticated users" msgstr "" -"Pendant combien de jours les messages des utilisateurs authentifiés sont-ils" -" conservés ?" +"Pendant combien de jours les messages des utilisateurs authentifiés sont-ils " +"conservés ?" #: evibes/settings/constance.py:41 msgid "Disable buy functionality" @@ -138,36 +138,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -187,48 +204,69 @@ msgstr "" "\n" "Bienvenue dans la documentation d'eVibes.\n" "\n" -"eVibes est une puissante plateforme de commerce électronique qui vous permet de lancer et de gérer une boutique en ligne de tout type en quelques clics.\n" +"eVibes est une puissante plateforme de commerce électronique qui vous permet " +"de lancer et de gérer une boutique en ligne de tout type en quelques clics.\n" "\n" "## Fonctionnalités principales\n" -"- Catalogue de produits:** Gérer les détails des produits, les prix, l'inventaire et la disponibilité à travers plusieurs catégories.\n" -"- Gestion des commandes:** Traiter les commandes, suivre l'exécution et traiter les demandes des clients de manière efficace.\n" -"- Authentification et autorisation:** Authentification complète des utilisateurs avec des jetons JWT et des autorisations basées sur les rôles.\n" -"- Traitement des paiements:** Intégration de plusieurs passerelles de paiement et gestion sécurisée des transactions.\n" -"- Gestion de blog et de contenu:** Créez et gérez des articles de blog et du contenu marketing pour votre boutique.\n" -"- Opérations B2B:** Points d'accès dédiés aux transactions interentreprises et à la gestion des ventes en gros.\n" -"- Support multilingue:** Servez vos clients dans le monde entier grâce à des capacités d'internationalisation complètes (i18n).\n" -"- Intégrations personnalisées:** Architecture API extensible pour l'intégration avec des plates-formes et des services externes.\n" -"- Analyses et rapports:** Générer des rapports détaillés sur les ventes, les stocks et le comportement des clients.\n" -"- Mises à jour en temps réel:** Obtenez des données en direct sur les niveaux de stock, les statuts des commandes et les changements de prix.\n" +"- Catalogue de produits:** Gérer les détails des produits, les prix, " +"l'inventaire et la disponibilité à travers plusieurs catégories.\n" +"- Gestion des commandes:** Traiter les commandes, suivre l'exécution et " +"traiter les demandes des clients de manière efficace.\n" +"- Authentification et autorisation:** Authentification complète des " +"utilisateurs avec des jetons JWT et des autorisations basées sur les rôles.\n" +"- Traitement des paiements:** Intégration de plusieurs passerelles de " +"paiement et gestion sécurisée des transactions.\n" +"- Gestion de blog et de contenu:** Créez et gérez des articles de blog et du " +"contenu marketing pour votre boutique.\n" +"- Opérations B2B:** Points d'accès dédiés aux transactions interentreprises " +"et à la gestion des ventes en gros.\n" +"- Support multilingue:** Servez vos clients dans le monde entier grâce à des " +"capacités d'internationalisation complètes (i18n).\n" +"- Intégrations personnalisées:** Architecture API extensible pour " +"l'intégration avec des plates-formes et des services externes.\n" +"- Analyses et rapports:** Générer des rapports détaillés sur les ventes, les " +"stocks et le comportement des clients.\n" +"- Mises à jour en temps réel:** Obtenez des données en direct sur les " +"niveaux de stock, les statuts des commandes et les changements de prix.\n" "\n" "## API disponibles\n" "- API REST:** Interface RESTful complète (cette documentation)\n" -"- API GraphQL:** Disponible sur `/graphql/` avec l'interface GraphiQL pour les requêtes interactives.\n" +"- API GraphQL:** Disponible sur `/graphql/` avec l'interface GraphiQL pour " +"les requêtes interactives.\n" "\n" "## Authentification\n" -"- L'authentification est gérée par des jetons JWT. Incluez le jeton dans l'en-tête `X-EVIBES-AUTH` de vos requêtes au format `Bearer `.\n" +"- L'authentification est gérée par des jetons JWT. Incluez le jeton dans " +"l'en-tête `X-EVIBES-AUTH` de vos requêtes au format `Bearer `.\n" "- La durée de vie du jeton d'accès est de {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- La durée de vie du jeton de rafraîchissement est de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} heures.\n" -"- Les jetons de rafraîchissement font l'objet d'une rotation automatique et sont invalidés après utilisation pour une meilleure sécurité.\n" +"- Les jetons de rafraîchissement font l'objet d'une rotation automatique et " +"sont invalidés après utilisation pour une meilleure sécurité.\n" "\n" "## Internationalisation (i18n)\n" -"- Définissez l'en-tête `Accept-Language` pour spécifier votre langue préférée (par exemple, `Accept-Language : en-US`).\n" -"- Les langues disponibles peuvent être récupérées à partir du point de terminaison `/app/languages/`.\n" -"- Tous les contenus destinés à l'utilisateur supportent d'emblée plusieurs langues.\n" +"- Définissez l'en-tête `Accept-Language` pour spécifier votre langue " +"préférée (par exemple, `Accept-Language : en-US`).\n" +"- Les langues disponibles peuvent être récupérées à partir du point de " +"terminaison `/app/languages/`.\n" +"- Tous les contenus destinés à l'utilisateur supportent d'emblée plusieurs " +"langues.\n" "\n" "## Formats de réponse\n" "L'API prend en charge plusieurs formats de réponse :\n" "- **JSON** (par défaut, formaté en camelCase)\n" "- **XML** (ajoutez `?format=xml` ou définissez `Accept : application/xml`)\n" -"- **YAML** (ajouter `?format=yaml` ou définir `Accept : application/x-yaml`)\n" +"- **YAML** (ajouter `?format=yaml` ou définir `Accept : application/x-" +"yaml`)\n" "\n" "## Santé et surveillance\n" "- Contrôles de santé : `/health/`\n" -"- Métriques Prometheus (protégées par l'authentification de base) : `/prometheus/`\n" +"- Métriques Prometheus (protégées par l'authentification de base) : `/" +"prometheus/`\n" "\n" "## Version\n" "Version actuelle de l'API : {EVIBES_VERSION}\n" diff --git a/evibes/locale/he_IL/LC_MESSAGES/django.po b/evibes/locale/he_IL/LC_MESSAGES/django.po index 03a271cc..2db4d533 100644 --- a/evibes/locale/he_IL/LC_MESSAGES/django.po +++ b/evibes/locale/he_IL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -181,18 +198,42 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" "\n" -"ברוכים הבאים לתיעוד של eVibes. eVibes היא פלטפורמת מסחר אלקטרוני עוצמתית המאפשרת להקים ולנהל חנות מקוונת מכל סוג בכמה לחיצות בלבד. ## תכונות עיקריות - **קטלוג מוצרים:** ניהול פרטי מוצרים, מחירים, מלאי וזמינות בקטגוריות מרובות. - **ניהול הזמנות:** עיבוד הזמנות, מעקב אחר ביצוען וטיפול יעיל בבקשות לקוחות.\n" -"- **אימות ואישור:** אימות משתמשים מקיף באמצעות אסימוני JWT והרשאות מבוססות תפקידים. - **עיבוד תשלומים:** שלבו מספר שערי תשלום ונהלו עסקאות בצורה מאובטחת. - **ניהול בלוג ותוכן:** צרו ונהלו פוסטים בבלוג ותוכן שיווקי לחנות שלכם. - **פעולות B2B:** נקודות קצה ייעודיות לעסקאות בין עסקים וניהול סיטונאי.\n" -"- **תמיכה בריבוי שפות:** שירות ללקוחות ברחבי העולם עם יכולות בינלאומיות מלאות (i18n). - **אינטגרציות מותאמות אישית:** ארכיטקטורת API ניתנת להרחבה לשילוב עם פלטפורמות ושירותים חיצוניים. - **ניתוחים ודיווחים:** יצירת דוחות מפורטים על מכירות, מלאי והתנהגות לקוחות. - **עדכונים בזמן אמת:** קבלת נתונים בזמן אמת על רמות המלאי, סטטוס ההזמנות ושינויים במחירים.\n" +"ברוכים הבאים לתיעוד של eVibes. eVibes היא פלטפורמת מסחר אלקטרוני עוצמתית " +"המאפשרת להקים ולנהל חנות מקוונת מכל סוג בכמה לחיצות בלבד. ## תכונות עיקריות " +"- **קטלוג מוצרים:** ניהול פרטי מוצרים, מחירים, מלאי וזמינות בקטגוריות " +"מרובות. - **ניהול הזמנות:** עיבוד הזמנות, מעקב אחר ביצוען וטיפול יעיל בבקשות " +"לקוחות.\n" +"- **אימות ואישור:** אימות משתמשים מקיף באמצעות אסימוני JWT והרשאות מבוססות " +"תפקידים. - **עיבוד תשלומים:** שלבו מספר שערי תשלום ונהלו עסקאות בצורה " +"מאובטחת. - **ניהול בלוג ותוכן:** צרו ונהלו פוסטים בבלוג ותוכן שיווקי לחנות " +"שלכם. - **פעולות B2B:** נקודות קצה ייעודיות לעסקאות בין עסקים וניהול " +"סיטונאי.\n" +"- **תמיכה בריבוי שפות:** שירות ללקוחות ברחבי העולם עם יכולות בינלאומיות " +"מלאות (i18n). - **אינטגרציות מותאמות אישית:** ארכיטקטורת API ניתנת להרחבה " +"לשילוב עם פלטפורמות ושירותים חיצוניים. - **ניתוחים ודיווחים:** יצירת דוחות " +"מפורטים על מכירות, מלאי והתנהגות לקוחות. - **עדכונים בזמן אמת:** קבלת נתונים " +"בזמן אמת על רמות המלאי, סטטוס ההזמנות ושינויים במחירים.\n" "\n" -"## ממשקי API זמינים - **REST API:** ממשק RESTful מלא (תיעוד זה) - **GraphQL API:** זמין ב-`/graphql/` עם ממשק GraphiQL לשאילתות אינטראקטיביות ## אימות - האימות מתבצע באמצעות אסימוני JWT. כלול את האסימון בכותרת `X-EVIBES-AUTH` של בקשותיך בפורמט `Bearer `.\n" +"## ממשקי API זמינים - **REST API:** ממשק RESTful מלא (תיעוד זה) - **GraphQL " +"API:** זמין ב-`/graphql/` עם ממשק GraphiQL לשאילתות אינטראקטיביות ## אימות - " +"האימות מתבצע באמצעות אסימוני JWT. כלול את האסימון בכותרת `X-EVIBES-AUTH` של " +"בקשותיך בפורמט `Bearer `.\n" "- אורך חיי אסימון הגישה הוא {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}. - אורך חיי אסימון הרענון הוא {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" -"} שעות. - אסימוני הרענון מסתובבים באופן אוטומטי ומבוטלים לאחר השימוש לשם אבטחה משופרת. ## בינלאומיות (i18n) - הגדר את הכותרת `Accept-Language` כדי לציין את השפה המועדפת עליך (לדוגמה, `Accept-Language: en-US`).\n" -"- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/app/languages/`. - כל התוכן המוצג למשתמש תומך במספר שפות באופן מובנה. ## פורמטים של תגובה ה-API תומך במספר פורמטים של תגובה: - **JSON** (ברירת מחדל, בפורמט camelCase) - **XML** (הוסף `?format=xml` או הגדר `Accept: application/xml`)\n" -"- **YAML** (הוסף `?format=yaml` או הגדר `Accept: application/x-yaml`) ## תקינות וניטור - בדיקות תקינות: `/health/` - מדדי Prometheus (מוגנים באמצעות אימות בסיסי): `/prometheus/` ## גרסה גרסת ה-API הנוכחית: {EVIBES_VERSION}\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" +"} שעות. - אסימוני הרענון מסתובבים באופן אוטומטי ומבוטלים לאחר השימוש לשם " +"אבטחה משופרת. ## בינלאומיות (i18n) - הגדר את הכותרת `Accept-Language` כדי " +"לציין את השפה המועדפת עליך (לדוגמה, `Accept-Language: en-US`).\n" +"- ניתן לאחזר את השפות הזמינות מנקודת הקצה `/app/languages/`. - כל התוכן " +"המוצג למשתמש תומך במספר שפות באופן מובנה. ## פורמטים של תגובה ה-API תומך " +"במספר פורמטים של תגובה: - **JSON** (ברירת מחדל, בפורמט camelCase) - **XML** " +"(הוסף `?format=xml` או הגדר `Accept: application/xml`)\n" +"- **YAML** (הוסף `?format=yaml` או הגדר `Accept: application/x-yaml`) ## " +"תקינות וניטור - בדיקות תקינות: `/health/` - מדדי Prometheus (מוגנים באמצעות " +"אימות בסיסי): `/prometheus/` ## גרסה גרסת ה-API הנוכחית: {EVIBES_VERSION}\n" #: evibes/settings/jazzmin.py:20 msgid "Home" diff --git a/evibes/locale/hi_IN/LC_MESSAGES/django.po b/evibes/locale/hi_IN/LC_MESSAGES/django.po index 878bf6e4..71a48e20 100644 --- a/evibes/locale/hi_IN/LC_MESSAGES/django.po +++ b/evibes/locale/hi_IN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/evibes/locale/hr_HR/LC_MESSAGES/django.po b/evibes/locale/hr_HR/LC_MESSAGES/django.po index ee79ff15..515fb327 100644 --- a/evibes/locale/hr_HR/LC_MESSAGES/django.po +++ b/evibes/locale/hr_HR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/evibes/locale/id_ID/LC_MESSAGES/django.po b/evibes/locale/id_ID/LC_MESSAGES/django.po index 4c0f5eaf..b45f71f0 100644 --- a/evibes/locale/id_ID/LC_MESSAGES/django.po +++ b/evibes/locale/id_ID/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,44 +200,64 @@ msgstr "" "\n" "Selamat datang di dokumentasi eVibes.\n" "\n" -"eVibes adalah platform e-commerce yang kuat yang memungkinkan Anda untuk meluncurkan dan mengelola toko online dalam bentuk apa pun hanya dengan beberapa klik.\n" +"eVibes adalah platform e-commerce yang kuat yang memungkinkan Anda untuk " +"meluncurkan dan mengelola toko online dalam bentuk apa pun hanya dengan " +"beberapa klik.\n" "\n" "## Fitur Utama\n" -"- Katalog Produk:** Kelola detail produk, harga, inventaris, dan ketersediaan di berbagai kategori.\n" -"- Manajemen Pesanan:** Memproses pesanan, melacak pemenuhan pesanan, dan menangani permintaan pelanggan secara efisien.\n" -"- Autentikasi & Otorisasi:** Autentikasi pengguna yang komprehensif dengan token JWT dan izin berbasis peran.\n" -"- Pemrosesan Pembayaran:** Mengintegrasikan beberapa gateway pembayaran dan mengelola transaksi dengan aman.\n" -"- Manajemen Blog & Konten:** Buat dan kelola posting blog dan konten pemasaran untuk toko Anda.\n" -"- ** Operasi B2B:** Titik akhir khusus untuk transaksi bisnis-ke-bisnis dan manajemen grosir.\n" -"- Dukungan Multi-bahasa:** Melayani pelanggan di seluruh dunia dengan kemampuan internasionalisasi penuh (i18n).\n" -"- Integrasi Khusus:** Arsitektur API yang dapat diperluas untuk berintegrasi dengan platform dan layanan eksternal.\n" -"- Analisis & Pelaporan:** Menghasilkan laporan terperinci tentang penjualan, inventaris, dan perilaku pelanggan.\n" -"- **Pembaruan Waktu Nyata:** Dapatkan data langsung tentang tingkat inventaris, status pesanan, dan perubahan harga.\n" +"- Katalog Produk:** Kelola detail produk, harga, inventaris, dan " +"ketersediaan di berbagai kategori.\n" +"- Manajemen Pesanan:** Memproses pesanan, melacak pemenuhan pesanan, dan " +"menangani permintaan pelanggan secara efisien.\n" +"- Autentikasi & Otorisasi:** Autentikasi pengguna yang komprehensif dengan " +"token JWT dan izin berbasis peran.\n" +"- Pemrosesan Pembayaran:** Mengintegrasikan beberapa gateway pembayaran dan " +"mengelola transaksi dengan aman.\n" +"- Manajemen Blog & Konten:** Buat dan kelola posting blog dan konten " +"pemasaran untuk toko Anda.\n" +"- ** Operasi B2B:** Titik akhir khusus untuk transaksi bisnis-ke-bisnis dan " +"manajemen grosir.\n" +"- Dukungan Multi-bahasa:** Melayani pelanggan di seluruh dunia dengan " +"kemampuan internasionalisasi penuh (i18n).\n" +"- Integrasi Khusus:** Arsitektur API yang dapat diperluas untuk berintegrasi " +"dengan platform dan layanan eksternal.\n" +"- Analisis & Pelaporan:** Menghasilkan laporan terperinci tentang penjualan, " +"inventaris, dan perilaku pelanggan.\n" +"- **Pembaruan Waktu Nyata:** Dapatkan data langsung tentang tingkat " +"inventaris, status pesanan, dan perubahan harga.\n" "\n" "## API yang tersedia\n" "- **REST API:** Antarmuka RESTful penuh (dokumentasi ini)\n" -"- API GraphQL:** Tersedia di `/graphql/` dengan antarmuka GraphiQL untuk kueri interaktif\n" +"- API GraphQL:** Tersedia di `/graphql/` dengan antarmuka GraphiQL untuk " +"kueri interaktif\n" "\n" "## Otentikasi\n" -"- Otentikasi ditangani melalui token JWT. Sertakan token di header `X-EVIBES-AUTH` pada permintaan Anda dalam format `Bearer `.\n" +"- Otentikasi ditangani melalui token JWT. Sertakan token di header `X-EVIBES-" +"AUTH` pada permintaan Anda dalam format `Bearer `.\n" "- Masa berlaku token akses adalah {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Masa berlaku token refresh adalah {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} jam.\n" -"- Refresh token secara otomatis dirotasi dan dibatalkan setelah digunakan untuk meningkatkan keamanan.\n" +"- Refresh token secara otomatis dirotasi dan dibatalkan setelah digunakan " +"untuk meningkatkan keamanan.\n" "\n" "## Internasionalisasi (i18n)\n" -"- Atur header `Accept-Language` untuk menentukan bahasa yang Anda inginkan (misalnya, `Accept-Language: en-US`).\n" +"- Atur header `Accept-Language` untuk menentukan bahasa yang Anda inginkan " +"(misalnya, `Accept-Language: en-US`).\n" "- Bahasa yang tersedia dapat diambil dari titik akhir `/app/languages/`.\n" -"- Semua konten yang berhadapan dengan pengguna mendukung beberapa bahasa secara langsung.\n" +"- Semua konten yang berhadapan dengan pengguna mendukung beberapa bahasa " +"secara langsung.\n" "\n" "Format Tanggapan ## Format Tanggapan\n" "API mendukung beberapa format respons:\n" "- **JSON** (default, berformat camelCase)\n" "- **XML** (tambahkan `?format=xml` atau setel `Accept: application/xml`)\n" -"- **YAML** (tambahkan `?format=yaml` atau setel `Accept: application/x-yaml`)\n" +"- **YAML** (tambahkan `?format=yaml` atau setel `Accept: application/x-" +"yaml`)\n" "\n" "## Kesehatan & Pemantauan\n" "- Pemeriksaan kesehatan: `/health/`\n" diff --git a/evibes/locale/it_IT/LC_MESSAGES/django.po b/evibes/locale/it_IT/LC_MESSAGES/django.po index 5e128bff..b97cb572 100644 --- a/evibes/locale/it_IT/LC_MESSAGES/django.po +++ b/evibes/locale/it_IT/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,44 +200,65 @@ msgstr "" "\n" "Benvenuti nella documentazione di eVibes.\n" "\n" -"eVibes è una potente piattaforma di e-commerce che consente di lanciare e gestire un negozio online di qualsiasi tipo in pochi clic.\n" +"eVibes è una potente piattaforma di e-commerce che consente di lanciare e " +"gestire un negozio online di qualsiasi tipo in pochi clic.\n" "\n" "## Caratteristiche principali\n" -"- **Catalogo dei prodotti:** Gestione dei dettagli dei prodotti, dei prezzi, delle scorte e della disponibilità di più categorie.\n" -"- Gestione degli ordini:** Elaborazione degli ordini, monitoraggio dell'evasione e gestione efficiente delle richieste dei clienti.\n" -"- Autenticazione e autorizzazione:** Autenticazione completa degli utenti con token JWT e autorizzazioni basate sui ruoli.\n" -"- Elaborazione dei pagamenti:** Integrazione di più gateway di pagamento e gestione sicura delle transazioni.\n" -"- Gestione di blog e contenuti:** Creazione e gestione di post sul blog e di contenuti di marketing per il vostro negozio.\n" -"- Operazioni B2B:** Endpoint dedicati per le transazioni business-to-business e la gestione della vendita all'ingrosso.\n" -"- Supporto multilingue:** Servite i clienti in tutto il mondo con funzionalità di internazionalizzazione completa (i18n).\n" -"- Integrazioni personalizzate:** Architettura API estensibile per l'integrazione con piattaforme e servizi esterni.\n" -"- **Analitica e reportistica:** Generazione di report dettagliati su vendite, inventario e comportamento dei clienti.\n" -"- Aggiornamenti in tempo reale:** Ottenete dati in tempo reale sui livelli di inventario, sullo stato degli ordini e sulle modifiche dei prezzi.\n" +"- **Catalogo dei prodotti:** Gestione dei dettagli dei prodotti, dei prezzi, " +"delle scorte e della disponibilità di più categorie.\n" +"- Gestione degli ordini:** Elaborazione degli ordini, monitoraggio " +"dell'evasione e gestione efficiente delle richieste dei clienti.\n" +"- Autenticazione e autorizzazione:** Autenticazione completa degli utenti " +"con token JWT e autorizzazioni basate sui ruoli.\n" +"- Elaborazione dei pagamenti:** Integrazione di più gateway di pagamento e " +"gestione sicura delle transazioni.\n" +"- Gestione di blog e contenuti:** Creazione e gestione di post sul blog e di " +"contenuti di marketing per il vostro negozio.\n" +"- Operazioni B2B:** Endpoint dedicati per le transazioni business-to-" +"business e la gestione della vendita all'ingrosso.\n" +"- Supporto multilingue:** Servite i clienti in tutto il mondo con " +"funzionalità di internazionalizzazione completa (i18n).\n" +"- Integrazioni personalizzate:** Architettura API estensibile per " +"l'integrazione con piattaforme e servizi esterni.\n" +"- **Analitica e reportistica:** Generazione di report dettagliati su " +"vendite, inventario e comportamento dei clienti.\n" +"- Aggiornamenti in tempo reale:** Ottenete dati in tempo reale sui livelli " +"di inventario, sullo stato degli ordini e sulle modifiche dei prezzi.\n" "\n" "## API disponibili\n" "- API REST:** Interfaccia REST completa (questa documentazione)\n" -"- API **GraphQL:** Disponibile su `/graphql/` con interfaccia GraphiQL per le query interattive.\n" +"- API **GraphQL:** Disponibile su `/graphql/` con interfaccia GraphiQL per " +"le query interattive.\n" "\n" "## Autenticazione\n" -"- L'autenticazione è gestita tramite token JWT. Includere il token nell'intestazione `X-EVIBES-AUTH` delle richieste nel formato `Bearer `.\n" +"- L'autenticazione è gestita tramite token JWT. Includere il token " +"nell'intestazione `X-EVIBES-AUTH` delle richieste nel formato `Bearer " +"`.\n" "- La durata di vita del token di accesso è {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- La durata del token di aggiornamento è di {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} ore.\n" -"- I token di aggiornamento vengono ruotati e invalidati automaticamente dopo l'uso per una maggiore sicurezza.\n" +"- I token di aggiornamento vengono ruotati e invalidati automaticamente dopo " +"l'uso per una maggiore sicurezza.\n" "\n" "## Internazionalizzazione (i18n)\n" -"- Impostare l'intestazione `Accept-Language` per specificare la lingua preferita (ad esempio, `Accept-Language: en-US`).\n" -"- Le lingue disponibili possono essere recuperate dall'endpoint `/app/languages/`.\n" -"- Tutti i contenuti rivolti all'utente supportano immediatamente più lingue.\n" +"- Impostare l'intestazione `Accept-Language` per specificare la lingua " +"preferita (ad esempio, `Accept-Language: en-US`).\n" +"- Le lingue disponibili possono essere recuperate dall'endpoint `/app/" +"languages/`.\n" +"- Tutti i contenuti rivolti all'utente supportano immediatamente più " +"lingue.\n" "\n" "## Formati di risposta\n" "L'API supporta diversi formati di risposta:\n" "- **JSON** (predefinito, formattato in camelCase)\n" "- **XML** (aggiungere `?format=xml` o impostare `Accept: application/xml`)\n" -"- **YAML** (aggiungere `?format=yaml` o impostare `Accept: application/x-yaml`)\n" +"- **YAML** (aggiungere `?format=yaml` o impostare `Accept: application/x-" +"yaml`)\n" "\n" "## Salute e monitoraggio\n" "- Controlli sulla salute: `/salute/`\n" diff --git a/evibes/locale/ja_JP/LC_MESSAGES/django.po b/evibes/locale/ja_JP/LC_MESSAGES/django.po index f23e472f..9e315053 100644 --- a/evibes/locale/ja_JP/LC_MESSAGES/django.po +++ b/evibes/locale/ja_JP/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,36 +200,48 @@ msgstr "" "\n" "eVibes のドキュメントへようこそ。\n" "\n" -"eVibesは、数クリックであらゆる種類のオンラインストアを立ち上げ、管理できる強力なeコマースプラットフォームです。\n" +"eVibesは、数クリックであらゆる種類のオンラインストアを立ち上げ、管理できる強" +"力なeコマースプラットフォームです。\n" "\n" "## 主な機能\n" -"- 商品カタログ:** 複数のカテゴリにまたがる商品の詳細、価格、在庫、在庫状況を管理します。\n" +"- 商品カタログ:** 複数のカテゴリにまたがる商品の詳細、価格、在庫、在庫状況を" +"管理します。\n" "- 注文管理:**注文を処理し、履行を追跡し、顧客の要求を効率的に処理します。\n" "- JWT トークンとロールベースの権限による包括的なユーザー認証。\n" "- 複数の決済ゲートウェイを統合し、トランザクションを安全に管理します。\n" -"- ブログ・コンテンツ管理:** ブログ記事やマーケティングコンテンツを作成・管理できます。\n" +"- ブログ・コンテンツ管理:** ブログ記事やマーケティングコンテンツを作成・管理" +"できます。\n" "- B2B オペレーション:** 企業間取引と卸売管理のための専用エンドポイント。\n" -"- **多言語サポート:**完全な国際化(国際化)機能で世界中の顧客にサービスを提供します。\n" -"- カスタム統合:**外部プラットフォームやサービスと統合するための拡張可能なAPIアーキテクチャ。\n" +"- **多言語サポート:**完全な国際化(国際化)機能で世界中の顧客にサービスを提供" +"します。\n" +"- カスタム統合:**外部プラットフォームやサービスと統合するための拡張可能なAPI" +"アーキテクチャ。\n" "- 分析&レポート:**売上、在庫、顧客行動に関する詳細なレポートを生成します。\n" -"- リアルタイム更新:**在庫レベル、注文状況、価格変更に関するライブデータを取得します。\n" +"- リアルタイム更新:**在庫レベル、注文状況、価格変更に関するライブデータを取" +"得します。\n" "\n" "## 利用可能なAPI\n" "- **REST API:** 完全なRESTfulインターフェース(このドキュメント)\n" -"- **GraphQL API:** `/graphql/` で利用可能で、対話的なクエリのための GraphiQL インターフェースがある。\n" +"- **GraphQL API:** `/graphql/` で利用可能で、対話的なクエリのための GraphiQL " +"インターフェースがある。\n" "\n" "## 認証\n" -"- 認証はJWTトークンで行われる。リクエストの `X-EVIBES-AUTH` ヘッダーに `Bearer ` という形式でトークンを含めてください。\n" +"- 認証はJWTトークンで行われる。リクエストの `X-EVIBES-AUTH` ヘッダーに " +"`Bearer ` という形式でトークンを含めてください。\n" "- アクセストークンの有効期限は {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}。\n" "- リフレッシュ・トークンの有効期限は {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} 時間です。\n" -"- リフレッシュ・トークンはセキュリティ強化のため、使用後に自動的にローテーションされ無効化されます。\n" +"- リフレッシュ・トークンはセキュリティ強化のため、使用後に自動的にローテー" +"ションされ無効化されます。\n" "\n" "## 国際化 (i18n)\n" -"- Accept-Language`ヘッダを設定して、希望する言語を指定する (例: `Accept-Language: en-US`) 。\n" +"- Accept-Language`ヘッダを設定して、希望する言語を指定する (例: `Accept-" +"Language: en-US`) 。\n" "- 利用可能な言語は `/app/languages/` エンドポイントから取得できます。\n" "- すべてのユーザー向けコンテンツは、すぐに多言語をサポートします。\n" "\n" @@ -220,7 +249,8 @@ msgstr "" "APIは複数のレスポンスフォーマットをサポートしています:\n" "- JSON** (デフォルト、キャメルケースフォーマット)\n" "- XML** (`?format=xml` を追加するか、`Accept: application/xml` を設定する)\n" -"- YAML** (`?format=yaml` を追加するか、`Accept: application/x-yaml` を設定してください)\n" +"- YAML** (`?format=yaml` を追加するか、`Accept: application/x-yaml` を設定し" +"てください)\n" "\n" "## ヘルス&モニタリング\n" "- ヘルスチェックヘルスチェック: `/health/`\n" diff --git a/evibes/locale/kk_KZ/LC_MESSAGES/django.po b/evibes/locale/kk_KZ/LC_MESSAGES/django.po index 878bf6e4..71a48e20 100644 --- a/evibes/locale/kk_KZ/LC_MESSAGES/django.po +++ b/evibes/locale/kk_KZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" diff --git a/evibes/locale/ko_KR/LC_MESSAGES/django.po b/evibes/locale/ko_KR/LC_MESSAGES/django.po index 3dada054..fdc3d4ee 100644 --- a/evibes/locale/ko_KR/LC_MESSAGES/django.po +++ b/evibes/locale/ko_KR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,36 +200,50 @@ msgstr "" "\n" "eVibes 문서에 오신 것을 환영합니다.\n" "\n" -"eVibes는 클릭 몇 번으로 모든 종류의 온라인 스토어를 시작하고 관리할 수 있는 강력한 전자상거래 플랫폼입니다.\n" +"eVibes는 클릭 몇 번으로 모든 종류의 온라인 스토어를 시작하고 관리할 수 있는 " +"강력한 전자상거래 플랫폼입니다.\n" "\n" "주요 기능 ## 주요 기능\n" -"- **제품 카탈로그:** 여러 카테고리에서 제품 세부 정보, 가격, 재고 및 가용성을 관리합니다.\n" -"- 주문 관리:** 주문을 처리하고, 주문 이행을 추적하고, 고객 요청을 효율적으로 처리하세요.\n" -"- 인증 및 권한 부여:** JWT 토큰 및 역할 기반 권한으로 포괄적인 사용자 인증을 수행합니다.\n" +"- **제품 카탈로그:** 여러 카테고리에서 제품 세부 정보, 가격, 재고 및 가용성" +"을 관리합니다.\n" +"- 주문 관리:** 주문을 처리하고, 주문 이행을 추적하고, 고객 요청을 효율적으로 " +"처리하세요.\n" +"- 인증 및 권한 부여:** JWT 토큰 및 역할 기반 권한으로 포괄적인 사용자 인증을 " +"수행합니다.\n" "- 결제 처리:** 여러 결제 게이트웨이를 통합하고 거래를 안전하게 관리하세요.\n" -"- **블로그 및 콘텐츠 관리:** 스토어용 블로그 게시물과 마케팅 콘텐츠를 생성하고 관리합니다.\n" +"- **블로그 및 콘텐츠 관리:** 스토어용 블로그 게시물과 마케팅 콘텐츠를 생성하" +"고 관리합니다.\n" "- B2B 운영:** B2B 거래 및 도매 관리를 위한 전용 엔드포인트.\n" -"- 다국어 지원:** 완전한 국제화(i18n) 기능으로 전 세계 고객에게 서비스를 제공합니다.\n" -"- **맞춤형 통합:** 외부 플랫폼 및 서비스와의 통합을 위한 확장 가능한 API 아키텍처.\n" -"- **분석 및 보고:** 판매, 재고, 고객 행동에 대한 상세한 보고서를 생성합니다.\n" -"- 실시간 업데이트:** 재고 수준, 주문 상태, 가격 변동에 대한 실시간 데이터를 확인할 수 있습니다.\n" +"- 다국어 지원:** 완전한 국제화(i18n) 기능으로 전 세계 고객에게 서비스를 제공" +"합니다.\n" +"- **맞춤형 통합:** 외부 플랫폼 및 서비스와의 통합을 위한 확장 가능한 API 아키" +"텍처.\n" +"- **분석 및 보고:** 판매, 재고, 고객 행동에 대한 상세한 보고서를 생성합니" +"다.\n" +"- 실시간 업데이트:** 재고 수준, 주문 상태, 가격 변동에 대한 실시간 데이터를 " +"확인할 수 있습니다.\n" "\n" "## 사용 가능한 API\n" "- **REST API:** 전체 RESTful 인터페이스(이 문서)\n" -"- GraphQL API:** 대화형 쿼리를 위한 GraphiQL 인터페이스로 `/graphql/`에서 사용 가능\n" +"- GraphQL API:** 대화형 쿼리를 위한 GraphiQL 인터페이스로 `/graphql/`에서 사" +"용 가능\n" "\n" "## 인증\n" -"- 인증은 JWT 토큰을 통해 처리됩니다. 토큰을 요청의 `X-EVIBES-AUTH` 헤더에 `Bearer ` 형식으로 포함하세요.\n" +"- 인증은 JWT 토큰을 통해 처리됩니다. 토큰을 요청의 `X-EVIBES-AUTH` 헤더에 " +"`Bearer ` 형식으로 포함하세요.\n" "- 액세스 토큰 수명은 {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}입니다. {\"minutes\" if not DEBUG else \"hours\"}입니다.\n" "- 새로 고침 토큰 수명은 {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} 시간입니다.\n" "- 새로 고침 토큰은 보안 강화를 위해 사용 후 자동으로 교체되고 무효화됩니다.\n" "\n" "## 국제화(i18n)\n" -"- 수락 언어` 헤더를 설정하여 선호하는 언어를 지정합니다(예: `수락 언어: en-US`).\n" +"- 수락 언어` 헤더를 설정하여 선호하는 언어를 지정합니다(예: `수락 언어: en-" +"US`).\n" "- 사용 가능한 언어는 `/app/languages/` 엔드포인트에서 검색할 수 있습니다.\n" "- 모든 사용자 대상 콘텐츠는 기본적으로 여러 언어를 지원합니다.\n" "\n" diff --git a/evibes/locale/nl_NL/LC_MESSAGES/django.po b/evibes/locale/nl_NL/LC_MESSAGES/django.po index 1d147eb7..8f12d6b6 100644 --- a/evibes/locale/nl_NL/LC_MESSAGES/django.po +++ b/evibes/locale/nl_NL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,44 +200,63 @@ msgstr "" "\n" "Welkom bij de eVibes documentatie.\n" "\n" -"eVibes is een krachtig e-commerce platform waarmee je in een paar klikken een online winkel van elk type kunt starten en beheren.\n" +"eVibes is een krachtig e-commerce platform waarmee je in een paar klikken " +"een online winkel van elk type kunt starten en beheren.\n" "\n" "## Belangrijkste functies\n" -"- **Productcatalogus:**Beheer productgegevens, prijzen, voorraad en beschikbaarheid in meerdere categorieën.\n" -"- **Order Management:** Verwerk bestellingen, volg de leveringen en behandel verzoeken van klanten efficiënt.\n" -"- **Authenticatie en autorisatie:**Uitgebreide gebruikersverificatie met JWT tokens en rolgebaseerde rechten.\n" -"- **Betalingsverwerking:** Integreer meerdere betalingsgateways en beheer transacties veilig.\n" -"- **Blog & Content Management:** Creëer en beheer blog posts en marketing content voor uw winkel.\n" -"- **B2B Operations:** Specifieke eindpunten voor business-to-business transacties en groothandelsbeheer.\n" -"- Ondersteuning voor meerdere talen:** Bedien klanten wereldwijd met volledige internationalisatiemogelijkheden (i18n).\n" -"- Aangepaste integraties:** Extensibele API-architectuur voor integratie met externe platforms en diensten.\n" -"- Analyse en rapportage:** Genereer gedetailleerde rapporten over verkoop, voorraad en klantgedrag.\n" -"- Realtime updates:** Ontvang live gegevens over voorraadniveaus, orderstatussen en prijswijzigingen.\n" +"- **Productcatalogus:**Beheer productgegevens, prijzen, voorraad en " +"beschikbaarheid in meerdere categorieën.\n" +"- **Order Management:** Verwerk bestellingen, volg de leveringen en behandel " +"verzoeken van klanten efficiënt.\n" +"- **Authenticatie en autorisatie:**Uitgebreide gebruikersverificatie met JWT " +"tokens en rolgebaseerde rechten.\n" +"- **Betalingsverwerking:** Integreer meerdere betalingsgateways en beheer " +"transacties veilig.\n" +"- **Blog & Content Management:** Creëer en beheer blog posts en marketing " +"content voor uw winkel.\n" +"- **B2B Operations:** Specifieke eindpunten voor business-to-business " +"transacties en groothandelsbeheer.\n" +"- Ondersteuning voor meerdere talen:** Bedien klanten wereldwijd met " +"volledige internationalisatiemogelijkheden (i18n).\n" +"- Aangepaste integraties:** Extensibele API-architectuur voor integratie met " +"externe platforms en diensten.\n" +"- Analyse en rapportage:** Genereer gedetailleerde rapporten over verkoop, " +"voorraad en klantgedrag.\n" +"- Realtime updates:** Ontvang live gegevens over voorraadniveaus, " +"orderstatussen en prijswijzigingen.\n" "\n" "## Beschikbare API's\n" "- **REST API:** Volledige RESTful interface (deze documentatie)\n" -"- **GraphQL API:** Beschikbaar op `/graphql/` met GraphiQL interface voor interactieve queries\n" +"- **GraphQL API:** Beschikbaar op `/graphql/` met GraphiQL interface voor " +"interactieve queries\n" "\n" "## Authenticatie\n" -"- Authenticatie wordt afgehandeld via JWT tokens. Neem het token op in de `X-EVIBES-AUTH` header van je verzoeken in het formaat `Bearer `.\n" +"- Authenticatie wordt afgehandeld via JWT tokens. Neem het token op in de `X-" +"EVIBES-AUTH` header van je verzoeken in het formaat `Bearer `.\n" "- De levensduur van het toegangstoken is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- De levensduur van een verversingstoken is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} uur.\n" -"- Refresh tokens worden automatisch geroteerd en ongeldig gemaakt na gebruik voor een betere beveiliging.\n" +"- Refresh tokens worden automatisch geroteerd en ongeldig gemaakt na gebruik " +"voor een betere beveiliging.\n" "\n" "## Internationalisatie (i18n)\n" -"- Stel de `Accept-Language` header in om uw voorkeurstaal op te geven (bijvoorbeeld `Accept-Language: en-US`).\n" -"- Beschikbare talen kunnen worden opgehaald van het `/app/languages/` eindpunt.\n" +"- Stel de `Accept-Language` header in om uw voorkeurstaal op te geven " +"(bijvoorbeeld `Accept-Language: en-US`).\n" +"- Beschikbare talen kunnen worden opgehaald van het `/app/languages/` " +"eindpunt.\n" "- Alle gebruikerscontent ondersteunt standaard meerdere talen.\n" "\n" "## Antwoordformaten\n" "De API ondersteunt meerdere antwoordformaten:\n" "- **JSON** (standaard, camelCase geformatteerd)\n" "- **XML** (voeg `?format=xml` toe of stel `Accept: application/xml` in)\n" -"- **YAML** (voeg `?format=yaml` toe of stel `Accept: application/x-yaml` in)\n" +"- **YAML** (voeg `?format=yaml` toe of stel `Accept: application/x-yaml` " +"in)\n" "\n" "## Gezondheid en bewaking\n" "- Gezondheidscontroles: `/gezondheid/`\n" diff --git a/evibes/locale/no_NO/LC_MESSAGES/django.po b/evibes/locale/no_NO/LC_MESSAGES/django.po index cc505f2f..2af1329e 100644 --- a/evibes/locale/no_NO/LC_MESSAGES/django.po +++ b/evibes/locale/no_NO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,36 +200,53 @@ msgstr "" "\n" "Velkommen til eVibes-dokumentasjonen.\n" "\n" -"eVibes er en kraftig e-handelsplattform som lar deg starte og administrere en hvilken som helst type nettbutikk med bare noen få klikk.\n" +"eVibes er en kraftig e-handelsplattform som lar deg starte og administrere " +"en hvilken som helst type nettbutikk med bare noen få klikk.\n" "\n" "## Nøkkelfunksjoner\n" -"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og tilgjengelighet på tvers av flere kategorier.\n" -"- Ordrehåndtering:** Behandle bestillinger, spore oppfyllelse og håndtere kundeforespørsler effektivt.\n" -"- Autentisering og autorisasjon:** Omfattende brukerautentisering med JWT-tokens og rollebaserte tillatelser.\n" -"- Betalingsbehandling: ** Integrer flere betalingsportaler og håndter transaksjoner på en sikker måte.\n" -"- Blogg- og innholdsadministrasjon:** Opprett og administrer blogginnlegg og markedsføringsinnhold for butikken din.\n" -"- B2B-drift: ** Dedikerte endepunkter for business-to-business-transaksjoner og grossistadministrasjon.\n" -"- Flerspråklig støtte:** Betjen kunder over hele verden med full internasjonaliseringsfunksjonalitet (i18n).\n" -"- Tilpassede integrasjoner:** Utvidbar API-arkitektur for integrering med eksterne plattformer og tjenester.\n" -"- Analyse og rapportering:** Generer detaljerte rapporter om salg, lagerbeholdning og kundeatferd.\n" -"- Sanntidsoppdateringer:** Få sanntidsdata om lagernivåer, ordrestatus og prisendringer.\n" +"- Produktkatalog:** Administrer produktdetaljer, priser, lagerbeholdning og " +"tilgjengelighet på tvers av flere kategorier.\n" +"- Ordrehåndtering:** Behandle bestillinger, spore oppfyllelse og håndtere " +"kundeforespørsler effektivt.\n" +"- Autentisering og autorisasjon:** Omfattende brukerautentisering med JWT-" +"tokens og rollebaserte tillatelser.\n" +"- Betalingsbehandling: ** Integrer flere betalingsportaler og håndter " +"transaksjoner på en sikker måte.\n" +"- Blogg- og innholdsadministrasjon:** Opprett og administrer blogginnlegg og " +"markedsføringsinnhold for butikken din.\n" +"- B2B-drift: ** Dedikerte endepunkter for business-to-business-transaksjoner " +"og grossistadministrasjon.\n" +"- Flerspråklig støtte:** Betjen kunder over hele verden med full " +"internasjonaliseringsfunksjonalitet (i18n).\n" +"- Tilpassede integrasjoner:** Utvidbar API-arkitektur for integrering med " +"eksterne plattformer og tjenester.\n" +"- Analyse og rapportering:** Generer detaljerte rapporter om salg, " +"lagerbeholdning og kundeatferd.\n" +"- Sanntidsoppdateringer:** Få sanntidsdata om lagernivåer, ordrestatus og " +"prisendringer.\n" "\n" "## Tilgjengelige API-er\n" "- **REST API:** Fullt REST-grensesnitt (denne dokumentasjonen)\n" -"- GraphiQL API:** Tilgjengelig på `/graphql/` med GraphiQL-grensesnitt for interaktive spørringer\n" +"- GraphiQL API:** Tilgjengelig på `/graphql/` med GraphiQL-grensesnitt for " +"interaktive spørringer\n" "\n" "## Autentisering\n" -"- Autentisering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-overskriften i forespørslene dine i formatet `Bearer `.\n" +"- Autentisering håndteres via JWT-tokens. Inkluder tokenet i `X-EVIBES-AUTH`-" +"overskriften i forespørslene dine i formatet `Bearer `.\n" "- Levetiden for tilgangstoken er {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}. {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Levetiden for oppdateringstoken er {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} timer.\n" -"- Oppdateringstokener roteres automatisk og ugyldiggjøres etter bruk for økt sikkerhet.\n" +"- Oppdateringstokener roteres automatisk og ugyldiggjøres etter bruk for økt " +"sikkerhet.\n" "\n" "## Internasjonalisering (i18n)\n" -"- Angi `Accept-Language`-overskriften for å spesifisere ditt foretrukne språk (f.eks. `Accept-Language: en-US`).\n" +"- Angi `Accept-Language`-overskriften for å spesifisere ditt foretrukne " +"språk (f.eks. `Accept-Language: en-US`).\n" "- Tilgjengelige språk kan hentes fra endepunktet `/app/languages/`.\n" "- Alt brukerrettet innhold støtter flere språk uten videre.\n" "\n" @@ -220,7 +254,8 @@ msgstr "" "API-et støtter flere svarformater:\n" "- **JSON** (standard, camelCase-formatert)\n" "- XML** (legg til `?format=xml` eller angi `Accept: application/xml`)\n" -"- **YAML** (legg til `?format=yaml` eller angi `Accept: application/x-yaml`)\n" +"- **YAML** (legg til `?format=yaml` eller angi `Accept: application/x-" +"yaml`)\n" "\n" "## Helse og overvåking\n" "- Helsesjekker: `/health/`\n" diff --git a/evibes/locale/pl_PL/LC_MESSAGES/django.po b/evibes/locale/pl_PL/LC_MESSAGES/django.po index 3bbd0579..e307f5fd 100644 --- a/evibes/locale/pl_PL/LC_MESSAGES/django.po +++ b/evibes/locale/pl_PL/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,38 +200,57 @@ msgstr "" "\n" "Witamy w dokumentacji eVibes.\n" "\n" -"eVibes to potężna platforma e-commerce, która umożliwia uruchomienie i zarządzanie sklepem internetowym dowolnego rodzaju za pomocą zaledwie kilku kliknięć.\n" +"eVibes to potężna platforma e-commerce, która umożliwia uruchomienie i " +"zarządzanie sklepem internetowym dowolnego rodzaju za pomocą zaledwie kilku " +"kliknięć.\n" "\n" "## Kluczowe funkcje\n" -"- Katalog produktów:** Zarządzanie szczegółami produktów, cenami, zapasami i dostępnością w wielu kategoriach.\n" -"- **Zarządzanie zamówieniami:** Przetwarzanie zamówień, śledzenie realizacji i sprawna obsługa zgłoszeń klientów.\n" -"- Uwierzytelnianie i autoryzacja:** Kompleksowe uwierzytelnianie użytkowników za pomocą tokenów JWT i uprawnień opartych na rolach.\n" -"- Przetwarzanie płatności:** Integracja wielu bramek płatniczych i bezpieczne zarządzanie transakcjami.\n" -"- Blog i zarządzanie treścią:** Tworzenie i zarządzanie wpisami na blogu oraz treściami marketingowymi dla sklepu.\n" -"- Operacje B2B:** Dedykowane punkty końcowe dla transakcji między firmami i zarządzania sprzedażą hurtową.\n" -"- Obsługa wielu języków:** Obsługa klientów na całym świecie dzięki pełnym możliwościom internacjonalizacji (i18n).\n" -"- Integracje niestandardowe:** Rozszerzalna architektura API do integracji z zewnętrznymi platformami i usługami.\n" -"- Analityka i raportowanie:** Generowanie szczegółowych raportów dotyczących sprzedaży, zapasów i zachowań klientów.\n" -"- Aktualizacje w czasie rzeczywistym:** Uzyskaj dane na żywo o poziomach zapasów, statusach zamówień i zmianach cen.\n" +"- Katalog produktów:** Zarządzanie szczegółami produktów, cenami, zapasami i " +"dostępnością w wielu kategoriach.\n" +"- **Zarządzanie zamówieniami:** Przetwarzanie zamówień, śledzenie realizacji " +"i sprawna obsługa zgłoszeń klientów.\n" +"- Uwierzytelnianie i autoryzacja:** Kompleksowe uwierzytelnianie " +"użytkowników za pomocą tokenów JWT i uprawnień opartych na rolach.\n" +"- Przetwarzanie płatności:** Integracja wielu bramek płatniczych i " +"bezpieczne zarządzanie transakcjami.\n" +"- Blog i zarządzanie treścią:** Tworzenie i zarządzanie wpisami na blogu " +"oraz treściami marketingowymi dla sklepu.\n" +"- Operacje B2B:** Dedykowane punkty końcowe dla transakcji między firmami i " +"zarządzania sprzedażą hurtową.\n" +"- Obsługa wielu języków:** Obsługa klientów na całym świecie dzięki pełnym " +"możliwościom internacjonalizacji (i18n).\n" +"- Integracje niestandardowe:** Rozszerzalna architektura API do integracji z " +"zewnętrznymi platformami i usługami.\n" +"- Analityka i raportowanie:** Generowanie szczegółowych raportów dotyczących " +"sprzedaży, zapasów i zachowań klientów.\n" +"- Aktualizacje w czasie rzeczywistym:** Uzyskaj dane na żywo o poziomach " +"zapasów, statusach zamówień i zmianach cen.\n" "\n" "## Dostępne API\n" "- **REST API:** Pełny interfejs RESTful (ta dokumentacja)\n" -"- API GraphQL:** Dostępne pod adresem `/graphql/` z interfejsem GraphiQL do interaktywnych zapytań.\n" +"- API GraphQL:** Dostępne pod adresem `/graphql/` z interfejsem GraphiQL do " +"interaktywnych zapytań.\n" "\n" "## Uwierzytelnianie\n" -"- Uwierzytelnianie jest obsługiwane za pomocą tokenów JWT. Dołącz token w nagłówku `X-EVIBES-AUTH` swoich żądań w formacie `Bearer `.\n" +"- Uwierzytelnianie jest obsługiwane za pomocą tokenów JWT. Dołącz token w " +"nagłówku `X-EVIBES-AUTH` swoich żądań w formacie `Bearer `.\n" "- Okres ważności tokenu dostępu wynosi {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Okres ważności tokenu odświeżania wynosi {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} godzin.\n" -"- Tokeny odświeżania są automatycznie obracane i unieważniane po użyciu w celu zwiększenia bezpieczeństwa.\n" +"- Tokeny odświeżania są automatycznie obracane i unieważniane po użyciu w " +"celu zwiększenia bezpieczeństwa.\n" "\n" "## Internacjonalizacja (i18n)\n" -"- Ustaw nagłówek `Accept-Language`, aby określić preferowany język (np. `Accept-Language: en-US`).\n" +"- Ustaw nagłówek `Accept-Language`, aby określić preferowany język (np. " +"`Accept-Language: en-US`).\n" "- Dostępne języki można pobrać z punktu końcowego `/app/languages/`.\n" -"- Cała zawartość skierowana do użytkownika obsługuje wiele języków od razu po wyjęciu z pudełka.\n" +"- Cała zawartość skierowana do użytkownika obsługuje wiele języków od razu " +"po wyjęciu z pudełka.\n" "\n" "## Formaty odpowiedzi\n" "API obsługuje wiele formatów odpowiedzi:\n" diff --git a/evibes/locale/pt_BR/LC_MESSAGES/django.po b/evibes/locale/pt_BR/LC_MESSAGES/django.po index ad89f519..9d23c880 100644 --- a/evibes/locale/pt_BR/LC_MESSAGES/django.po +++ b/evibes/locale/pt_BR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,38 +200,59 @@ msgstr "" "\n" "Bem-vindo à documentação do eVibes.\n" "\n" -"O eVibes é uma poderosa plataforma de comércio eletrônico que lhe permite lançar e gerenciar uma loja on-line de qualquer tipo com apenas alguns cliques.\n" +"O eVibes é uma poderosa plataforma de comércio eletrônico que lhe permite " +"lançar e gerenciar uma loja on-line de qualquer tipo com apenas alguns " +"cliques.\n" "\n" "## Principais recursos\n" -"- Catálogo de produtos:** Gerencie detalhes, preços, estoque e disponibilidade de produtos em várias categorias.\n" -"- Gerenciamento de pedidos:** Processar pedidos, rastrear o atendimento e lidar com as solicitações dos clientes de forma eficiente.\n" -"- Autenticação e autorização:** Autenticação abrangente de usuários com tokens JWT e permissões baseadas em funções.\n" -"- Processamento de pagamentos: integre vários gateways de pagamento e gerencie as transações com segurança.\n" -"- **Gerenciamento de blogs e conteúdo:** Crie e gerencie postagens de blogs e conteúdo de marketing para sua loja.\n" -"- Operações B2B:** Pontos de extremidade dedicados para transações business-to-business e gerenciamento de atacado.\n" -"- Suporte a vários idiomas:** Atenda a clientes em todo o mundo com recursos completos de internacionalização (i18n).\n" -"- Integrações personalizadas:** Arquitetura de API extensível para integração com plataformas e serviços externos.\n" -"- Análises e relatórios:** Gerar relatórios detalhados sobre vendas, estoque e comportamento do cliente.\n" -"- Atualizações em tempo real:** Obtenha dados em tempo real sobre níveis de estoque, status de pedidos e alterações de preços.\n" +"- Catálogo de produtos:** Gerencie detalhes, preços, estoque e " +"disponibilidade de produtos em várias categorias.\n" +"- Gerenciamento de pedidos:** Processar pedidos, rastrear o atendimento e " +"lidar com as solicitações dos clientes de forma eficiente.\n" +"- Autenticação e autorização:** Autenticação abrangente de usuários com " +"tokens JWT e permissões baseadas em funções.\n" +"- Processamento de pagamentos: integre vários gateways de pagamento e " +"gerencie as transações com segurança.\n" +"- **Gerenciamento de blogs e conteúdo:** Crie e gerencie postagens de blogs " +"e conteúdo de marketing para sua loja.\n" +"- Operações B2B:** Pontos de extremidade dedicados para transações business-" +"to-business e gerenciamento de atacado.\n" +"- Suporte a vários idiomas:** Atenda a clientes em todo o mundo com recursos " +"completos de internacionalização (i18n).\n" +"- Integrações personalizadas:** Arquitetura de API extensível para " +"integração com plataformas e serviços externos.\n" +"- Análises e relatórios:** Gerar relatórios detalhados sobre vendas, estoque " +"e comportamento do cliente.\n" +"- Atualizações em tempo real:** Obtenha dados em tempo real sobre níveis de " +"estoque, status de pedidos e alterações de preços.\n" "\n" "## APIs disponíveis\n" "- API REST:** Interface RESTful completa (esta documentação)\n" -"- API GraphQL:** Disponível em `/graphql/` com interface GraphiQL para consultas interativas\n" +"- API GraphQL:** Disponível em `/graphql/` com interface GraphiQL para " +"consultas interativas\n" "\n" "## Autenticação\n" -"- A autenticação é tratada por meio de tokens JWT. Inclua o token no cabeçalho `X-EVIBES-AUTH` de suas solicitações no formato `Bearer `.\n" +"- A autenticação é tratada por meio de tokens JWT. Inclua o token no " +"cabeçalho `X-EVIBES-AUTH` de suas solicitações no formato `Bearer " +"`.\n" "- O tempo de vida do token de acesso é {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- A vida útil do token de atualização é de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} horas.\n" -"- Os tokens de atualização são automaticamente girados e invalidados após o uso para aumentar a segurança.\n" +"- Os tokens de atualização são automaticamente girados e invalidados após o " +"uso para aumentar a segurança.\n" "\n" "## Internacionalização (i18n)\n" -"- Defina o cabeçalho `Accept-Language` para especificar o idioma de sua preferência (por exemplo, `Accept-Language: en-US`).\n" -"- Os idiomas disponíveis podem ser recuperados no ponto de extremidade `/app/languages/`.\n" -"- Todo o conteúdo voltado para o usuário é compatível com vários idiomas desde o início.\n" +"- Defina o cabeçalho `Accept-Language` para especificar o idioma de sua " +"preferência (por exemplo, `Accept-Language: en-US`).\n" +"- Os idiomas disponíveis podem ser recuperados no ponto de extremidade `/app/" +"languages/`.\n" +"- Todo o conteúdo voltado para o usuário é compatível com vários idiomas " +"desde o início.\n" "\n" "## Formatos de resposta\n" "A API oferece suporte a vários formatos de resposta:\n" @@ -224,7 +262,8 @@ msgstr "" "\n" "## Saúde e monitoramento\n" "- Verificações de integridade: `/health/`\n" -"- Métricas do Prometheus (protegido por autenticação básica): `/prometheus/`\n" +"- Métricas do Prometheus (protegido por autenticação básica): `/prometheus/" +"`\n" "\n" "## Versão\n" "Versão atual da API: {EVIBES_VERSION}\n" diff --git a/evibes/locale/ro_RO/LC_MESSAGES/django.po b/evibes/locale/ro_RO/LC_MESSAGES/django.po index bed77c79..e0029380 100644 --- a/evibes/locale/ro_RO/LC_MESSAGES/django.po +++ b/evibes/locale/ro_RO/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,44 +200,66 @@ msgstr "" "\n" "Bine ați venit la documentația eVibes.\n" "\n" -"eVibes este o platformă puternică de comerț electronic care vă permite să lansați și să gestionați un magazin online de orice tip în doar câteva clicuri.\n" +"eVibes este o platformă puternică de comerț electronic care vă permite să " +"lansați și să gestionați un magazin online de orice tip în doar câteva " +"clicuri.\n" "\n" "## Caracteristici principale\n" -"- **Product Catalog:** Gestionați detaliile produselor, prețurile, inventarul și disponibilitatea în mai multe categorii.\n" -"- **Order Management:** Procesați comenzile, urmăriți îndeplinirea și gestionați eficient cererile clienților.\n" -"- **Autentificare și autorizare:** Autentificare cuprinzătoare a utilizatorilor cu token-uri JWT și permisiuni bazate pe roluri.\n" -"- **Payment Processing:** Integrați mai multe gateway-uri de plată și gestionați tranzacțiile în siguranță.\n" -"- **Blog & Content Management:** Creați și gestionați postări pe blog și conținut de marketing pentru magazinul dvs.\n" -"- **B2B Operations:** Puncte finale dedicate pentru tranzacțiile business-to-business și gestionarea comerțului cu ridicata.\n" -"- **Suport multilingv:** Serviți clienții din întreaga lume cu capacități complete de internaționalizare (i18n).\n" -"- **Integrații personalizate:** Arhitectură API extensibilă pentru integrarea cu platforme și servicii externe.\n" -"- **Analytics & Reporting:** Generați rapoarte detaliate privind vânzările, stocurile și comportamentul clienților.\n" -"- **Actualizări în timp real:** Obțineți date în timp real privind nivelurile stocurilor, starea comenzilor și modificările prețurilor.\n" +"- **Product Catalog:** Gestionați detaliile produselor, prețurile, " +"inventarul și disponibilitatea în mai multe categorii.\n" +"- **Order Management:** Procesați comenzile, urmăriți îndeplinirea și " +"gestionați eficient cererile clienților.\n" +"- **Autentificare și autorizare:** Autentificare cuprinzătoare a " +"utilizatorilor cu token-uri JWT și permisiuni bazate pe roluri.\n" +"- **Payment Processing:** Integrați mai multe gateway-uri de plată și " +"gestionați tranzacțiile în siguranță.\n" +"- **Blog & Content Management:** Creați și gestionați postări pe blog și " +"conținut de marketing pentru magazinul dvs.\n" +"- **B2B Operations:** Puncte finale dedicate pentru tranzacțiile business-to-" +"business și gestionarea comerțului cu ridicata.\n" +"- **Suport multilingv:** Serviți clienții din întreaga lume cu capacități " +"complete de internaționalizare (i18n).\n" +"- **Integrații personalizate:** Arhitectură API extensibilă pentru " +"integrarea cu platforme și servicii externe.\n" +"- **Analytics & Reporting:** Generați rapoarte detaliate privind vânzările, " +"stocurile și comportamentul clienților.\n" +"- **Actualizări în timp real:** Obțineți date în timp real privind " +"nivelurile stocurilor, starea comenzilor și modificările prețurilor.\n" "\n" "## API-uri disponibile\n" "- **REST API:** Interfață RESTful completă (această documentație)\n" -"- **GraphQL API:** Disponibil la `/graphql/` cu interfața GraphiQL pentru interogări interactive\n" +"- **GraphQL API:** Disponibil la `/graphql/` cu interfața GraphiQL pentru " +"interogări interactive\n" "\n" "## Autentificare\n" -"- Autentificarea este gestionată prin jetoane JWT. Includeți tokenul în antetul `X-EVIBES-AUTH` al cererilor dvs. în formatul `Bearer `.\n" +"- Autentificarea este gestionată prin jetoane JWT. Includeți tokenul în " +"antetul `X-EVIBES-AUTH` al cererilor dvs. în formatul `Bearer " +"`.\n" "- Durata de viață a jetonului de acces este {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Durata de viață a jetonului de reînnoire este de {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} ore.\n" -"- Jetoanele de reîmprospătare sunt rotite automat și invalidate după utilizare pentru o securitate sporită.\n" +"- Jetoanele de reîmprospătare sunt rotite automat și invalidate după " +"utilizare pentru o securitate sporită.\n" "\n" "## Internaționalizare (i18n)\n" -"- Setați antetul `Accept-Language` pentru a specifica limba preferată (de exemplu, `Accept-Language: en-US`).\n" -"- Limbile disponibile pot fi preluate de la punctul final `/app/languages/`.\n" -"- Toate conținuturile destinate utilizatorilor acceptă din start mai multe limbi.\n" +"- Setați antetul `Accept-Language` pentru a specifica limba preferată (de " +"exemplu, `Accept-Language: en-US`).\n" +"- Limbile disponibile pot fi preluate de la punctul final `/app/languages/" +"`.\n" +"- Toate conținuturile destinate utilizatorilor acceptă din start mai multe " +"limbi.\n" "\n" "## Formate de răspuns\n" "API acceptă mai multe formate de răspuns:\n" "- **JSON** (implicit, formatat camelCase)\n" "- **XML** (adăugați `?format=xml` sau setați `Accept: application/xml`)\n" -"- **YAML** (adăugați `?format=yaml` sau setați `Accept: application/x-yaml`)\n" +"- **YAML** (adăugați `?format=yaml` sau setați `Accept: application/x-" +"yaml`)\n" "\n" "## Sănătate și monitorizare\n" "- Verificări de sănătate: `/health/`\n" diff --git a/evibes/locale/ru_RU/LC_MESSAGES/django.po b/evibes/locale/ru_RU/LC_MESSAGES/django.po index e0efd2fe..8cbae2b2 100644 --- a/evibes/locale/ru_RU/LC_MESSAGES/django.po +++ b/evibes/locale/ru_RU/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,44 +200,64 @@ msgstr "" "\n" "Добро пожаловать в документацию eVibes.\n" "\n" -"eVibes - это мощная платформа для электронной коммерции, которая позволяет запустить и управлять интернет-магазином любого типа всего за несколько кликов.\n" +"eVibes - это мощная платформа для электронной коммерции, которая позволяет " +"запустить и управлять интернет-магазином любого типа всего за несколько " +"кликов.\n" "\n" "## Ключевые особенности.\n" -"- **Каталог товаров:** Управление информацией о товарах, ценами, запасами и наличием товаров в нескольких категориях.\n" -"- **Управление заказами:** Обработка заказов, отслеживание выполнения и эффективная обработка запросов клиентов.\n" -"- **Аутентификация и авторизация:** Комплексная аутентификация пользователей с помощью JWT-токенов и ролевых разрешений.\n" -"- **Обработка платежей:** Интеграция нескольких платежных шлюзов и безопасное управление транзакциями.\n" -"- **Управление блогом и контентом:** Создание и управление записями в блоге и маркетинговым контентом для вашего магазина.\n" -"- **B2B-операции:** Выделенные конечные точки для транзакций между бизнесменами и управления оптовыми продажами.\n" -"- **Мультиязыковая поддержка:** Обслуживайте клиентов по всему миру, используя возможности полной интернационализации (i18n).\n" -"- **Заказные интеграции:** Расширяемая архитектура API для интеграции с внешними платформами и сервисами.\n" -"- **Аналитика и отчетность:** Генерируйте подробные отчеты о продажах, запасах и поведении клиентов.\n" -"- **Обновления в режиме реального времени:** Получайте данные об уровне запасов, состоянии заказов и изменениях цен в режиме реального времени.\n" +"- **Каталог товаров:** Управление информацией о товарах, ценами, запасами и " +"наличием товаров в нескольких категориях.\n" +"- **Управление заказами:** Обработка заказов, отслеживание выполнения и " +"эффективная обработка запросов клиентов.\n" +"- **Аутентификация и авторизация:** Комплексная аутентификация пользователей " +"с помощью JWT-токенов и ролевых разрешений.\n" +"- **Обработка платежей:** Интеграция нескольких платежных шлюзов и " +"безопасное управление транзакциями.\n" +"- **Управление блогом и контентом:** Создание и управление записями в блоге " +"и маркетинговым контентом для вашего магазина.\n" +"- **B2B-операции:** Выделенные конечные точки для транзакций между " +"бизнесменами и управления оптовыми продажами.\n" +"- **Мультиязыковая поддержка:** Обслуживайте клиентов по всему миру, " +"используя возможности полной интернационализации (i18n).\n" +"- **Заказные интеграции:** Расширяемая архитектура API для интеграции с " +"внешними платформами и сервисами.\n" +"- **Аналитика и отчетность:** Генерируйте подробные отчеты о продажах, " +"запасах и поведении клиентов.\n" +"- **Обновления в режиме реального времени:** Получайте данные об уровне " +"запасов, состоянии заказов и изменениях цен в режиме реального времени.\n" "\n" "## Доступные API\n" "- **REST API:** Полный REST-интерфейс (данная документация)\n" -"- **GraphQL API:** Доступен по адресу `/graphql/` с интерфейсом GraphiQL для интерактивных запросов\n" +"- **GraphQL API:** Доступен по адресу `/graphql/` с интерфейсом GraphiQL для " +"интерактивных запросов\n" "\n" "## Аутентификация\n" -"- Аутентификация осуществляется с помощью JWT-токенов. Включите токен в заголовок `X-EVIBES-AUTH` ваших запросов в формате `Bearer <ваш_токен>`.\n" +"- Аутентификация осуществляется с помощью JWT-токенов. Включите токен в " +"заголовок `X-EVIBES-AUTH` ваших запросов в формате `Bearer <ваш_токен>`.\n" "- Срок действия токена доступа составляет {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Время жизни токена обновления составляет {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} часов.\n" -"- Для повышения безопасности маркеры доступа автоматически поворачиваются и аннулируются после использования.\n" +"- Для повышения безопасности маркеры доступа автоматически поворачиваются и " +"аннулируются после использования.\n" "\n" "## Интернационализация (i18n)\n" -"- Укажите в заголовке `Accept-Language` предпочтительный язык (например, `Accept-Language: en-US`).\n" +"- Укажите в заголовке `Accept-Language` предпочтительный язык (например, " +"`Accept-Language: en-US`).\n" "- Доступные языки можно получить из конечной точки `/app/languages/`.\n" -"- Весь контент, предназначенный для пользователей, изначально поддерживает несколько языков.\n" +"- Весь контент, предназначенный для пользователей, изначально поддерживает " +"несколько языков.\n" "\n" "## Форматы ответов\n" "API поддерживает несколько форматов ответов:\n" "- **JSON** (по умолчанию, с форматированием в camelCase)\n" "- **XML** (добавьте `?format=xml` или установите `Accept: application/xml`)\n" -"- **YAML** (добавьте `?format=yaml` или установите `Accept: application/x-yaml`)\n" +"- **YAML** (добавьте `?format=yaml` или установите `Accept: application/x-" +"yaml`)\n" "\n" "## Здоровье и мониторинг\n" "- Проверка здоровья: `/health/`\n" diff --git a/evibes/locale/sv_SE/LC_MESSAGES/django.po b/evibes/locale/sv_SE/LC_MESSAGES/django.po index 4ecc0991..1540c214 100644 --- a/evibes/locale/sv_SE/LC_MESSAGES/django.po +++ b/evibes/locale/sv_SE/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,48 +200,68 @@ msgstr "" "\n" "Välkommen till eVibes dokumentation.\n" "\n" -"eVibes är en kraftfull e-handelsplattform som gör att du kan starta och hantera en onlinebutik av alla slag med bara några få klick.\n" +"eVibes är en kraftfull e-handelsplattform som gör att du kan starta och " +"hantera en onlinebutik av alla slag med bara några få klick.\n" "\n" "## Viktiga funktioner\n" -"- Produktkatalog:** Hantera produktinformation, priser, lager och tillgänglighet i flera kategorier.\n" -"- ** Orderhantering:** Behandla beställningar, spåra uppfyllande och hantera kundförfrågningar effektivt.\n" -"- Autentisering och auktorisering: ** Omfattande användarautentisering med JWT-tokens och rollbaserade behörigheter.\n" -"- **Betalningshantering:** Integrera flera betalningsgateways och hantera transaktioner på ett säkert sätt.\n" -"- **Blogg & Content Management:** Skapa och hantera blogginlägg och marknadsföringsinnehåll för din butik.\n" -"- **B2B Operations:** Dedikerade slutpunkter för transaktioner mellan företag och grossisthantering.\n" -"- Stöd för flera språk: ** Betjäna kunder över hela världen med fullständiga internationaliseringsfunktioner (i18n).\n" -"- **Kundanpassade integrationer:** Utökad API-arkitektur för integrering med externa plattformar och tjänster.\n" -"- **Analys och rapportering:** Generera detaljerade rapporter om försäljning, lager och kundbeteende.\n" -"- Uppdateringar i realtid: ** Få live-data om lagernivåer, orderstatus och prisändringar.\n" +"- Produktkatalog:** Hantera produktinformation, priser, lager och " +"tillgänglighet i flera kategorier.\n" +"- ** Orderhantering:** Behandla beställningar, spåra uppfyllande och hantera " +"kundförfrågningar effektivt.\n" +"- Autentisering och auktorisering: ** Omfattande användarautentisering med " +"JWT-tokens och rollbaserade behörigheter.\n" +"- **Betalningshantering:** Integrera flera betalningsgateways och hantera " +"transaktioner på ett säkert sätt.\n" +"- **Blogg & Content Management:** Skapa och hantera blogginlägg och " +"marknadsföringsinnehåll för din butik.\n" +"- **B2B Operations:** Dedikerade slutpunkter för transaktioner mellan " +"företag och grossisthantering.\n" +"- Stöd för flera språk: ** Betjäna kunder över hela världen med fullständiga " +"internationaliseringsfunktioner (i18n).\n" +"- **Kundanpassade integrationer:** Utökad API-arkitektur för integrering med " +"externa plattformar och tjänster.\n" +"- **Analys och rapportering:** Generera detaljerade rapporter om " +"försäljning, lager och kundbeteende.\n" +"- Uppdateringar i realtid: ** Få live-data om lagernivåer, orderstatus och " +"prisändringar.\n" "\n" "## Tillgängliga API:er\n" "- **REST API:** Fullständigt RESTful-gränssnitt (denna dokumentation)\n" -"- **GraphQL API:** Tillgängligt på `/graphql/` med GraphiQL-gränssnitt för interaktiva frågor\n" +"- **GraphQL API:** Tillgängligt på `/graphql/` med GraphiQL-gränssnitt för " +"interaktiva frågor\n" "\n" "## Autentisering\n" -"- Autentisering hanteras via JWT-tokens. Inkludera token i `X-EVIBES-AUTH`-huvudet för dina förfrågningar i formatet `Bearer `.\n" +"- Autentisering hanteras via JWT-tokens. Inkludera token i `X-EVIBES-AUTH`-" +"huvudet för dina förfrågningar i formatet `Bearer `.\n" "- Åtkomsttokenens livstid är {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Uppdateringstokenens livslängd är {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} timmar.\n" -"- Uppdateringstokens roteras automatiskt och ogiltigförklaras efter användning för ökad säkerhet.\n" +"- Uppdateringstokens roteras automatiskt och ogiltigförklaras efter " +"användning för ökad säkerhet.\n" "\n" "## Internationalisering (i18n)\n" -"- Ange önskat språk i rubriken `Accept-Language` (t.ex. `Accept-Language: en-US`).\n" +"- Ange önskat språk i rubriken `Accept-Language` (t.ex. `Accept-Language: en-" +"US`).\n" "- Tillgängliga språk kan hämtas från slutpunkten `/app/languages/`.\n" "- Allt innehåll som vänder sig till användare stöder flera språk direkt.\n" "\n" "## Svarsformat\n" "API:et stöder flera olika svarsformat:\n" "- **JSON** (standard, camelCase-formaterad)\n" -"- **XML** (lägg till `?format=xml` eller ställ in `Accept: application/xml`)\n" -"- **YAML** (lägg till `?format=yaml` eller ställ in `Accept: application/x-yaml`)\n" +"- **XML** (lägg till `?format=xml` eller ställ in `Accept: application/" +"xml`)\n" +"- **YAML** (lägg till `?format=yaml` eller ställ in `Accept: application/x-" +"yaml`)\n" "\n" "## Hälsa och övervakning\n" "- Hälsokontroller: `/hälsa/`\n" -"- Prometheus-mätvärden (skyddade med grundläggande autentisering): `/prometheus/`\n" +"- Prometheus-mätvärden (skyddade med grundläggande autentisering): `/" +"prometheus/`\n" "\n" "## Version\n" "Aktuell API-version: {EVIBES_VERSION}\n" diff --git a/evibes/locale/th_TH/LC_MESSAGES/django.po b/evibes/locale/th_TH/LC_MESSAGES/django.po index f3200443..8d10e49d 100644 --- a/evibes/locale/th_TH/LC_MESSAGES/django.po +++ b/evibes/locale/th_TH/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -181,18 +198,48 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" "\n" -"ยินดีต้อนรับสู่เอกสารคู่มือของ eVibes eVibes เป็นแพลตฟอร์มอีคอมเมิร์ซที่ทรงพลังซึ่งช่วยให้คุณสามารถเปิดตัวและจัดการร้านค้าออนไลน์ได้ทุกประเภทเพียงแค่ไม่กี่คลิก ## คุณสมบัติหลัก - **แคตตาล็อกสินค้า:** จัดการรายละเอียดสินค้า ราคาสินค้า สินค้าคงคลัง และความพร้อมจำหน่ายในหลายหมวดหมู่ - **การจัดการคำสั่งซื้อ:** ประมวลผลคำสั่งซื้อ ติดตามการจัดส่ง และจัดการคำขอของลูกค้าอย่างมีประสิทธิภาพ\n" -"- **การตรวจสอบสิทธิ์และการอนุญาต:** การตรวจสอบสิทธิ์ผู้ใช้อย่างครอบคลุมด้วยโทเค็น JWT และสิทธิ์ตามบทบาท - **การประมวลผลการชำระเงิน:** ผสานรวมเกตเวย์การชำระเงินหลายช่องทางและจัดการธุรกรรมอย่างปลอดภัย - **การจัดการบล็อกและเนื้อหา:** สร้างและจัดการโพสต์บล็อกและเนื้อหาการตลาดสำหรับร้านค้าของคุณ - **การดำเนินงาน B2B:** จุดเชื่อมต่อเฉพาะสำหรับการทำธุรกรรมระหว่างธุรกิจและการจัดการขายส่ง\n" -"- **รองรับหลายภาษา:** ให้บริการลูกค้าทั่วโลกด้วยความสามารถในการรองรับภาษาสากลอย่างเต็มรูปแบบ (i18n) - **การผสานรวมแบบกำหนดเอง:** สถาปัตยกรรม API ที่สามารถขยายได้สำหรับการผสานรวมกับแพลตฟอร์มและบริการภายนอก - **การวิเคราะห์และรายงาน:** สร้างรายงานรายละเอียดเกี่ยวกับยอดขาย, สินค้าคงคลัง, และพฤติกรรมของลูกค้า - **การอัปเดตแบบเรียลไทม์:** รับข้อมูลสดเกี่ยวกับระดับสินค้าคงคลัง, สถานะการสั่งซื้อ, และการเปลี่ยนแปลงราคา\n" +"ยินดีต้อนรับสู่เอกสารคู่มือของ eVibes eVibes " +"เป็นแพลตฟอร์มอีคอมเมิร์ซที่ทรงพลังซึ่งช่วยให้คุณสามารถเปิดตัวและจัดการร้านค้าออนไลน์ได้ทุกประเภทเพียงแค่ไม่กี่คลิก " +"## คุณสมบัติหลัก - **แคตตาล็อกสินค้า:** จัดการรายละเอียดสินค้า ราคาสินค้า สินค้าคงคลัง " +"และความพร้อมจำหน่ายในหลายหมวดหมู่ - **การจัดการคำสั่งซื้อ:** ประมวลผลคำสั่งซื้อ " +"ติดตามการจัดส่ง และจัดการคำขอของลูกค้าอย่างมีประสิทธิภาพ\n" +"- **การตรวจสอบสิทธิ์และการอนุญาต:** การตรวจสอบสิทธิ์ผู้ใช้อย่างครอบคลุมด้วยโทเค็น JWT " +"และสิทธิ์ตามบทบาท - **การประมวลผลการชำระเงิน:** " +"ผสานรวมเกตเวย์การชำระเงินหลายช่องทางและจัดการธุรกรรมอย่างปลอดภัย - " +"**การจัดการบล็อกและเนื้อหา:** สร้างและจัดการโพสต์บล็อกและเนื้อหาการตลาดสำหรับร้านค้าของคุณ " +"- **การดำเนินงาน B2B:** " +"จุดเชื่อมต่อเฉพาะสำหรับการทำธุรกรรมระหว่างธุรกิจและการจัดการขายส่ง\n" +"- **รองรับหลายภาษา:** " +"ให้บริการลูกค้าทั่วโลกด้วยความสามารถในการรองรับภาษาสากลอย่างเต็มรูปแบบ (i18n) - " +"**การผสานรวมแบบกำหนดเอง:** สถาปัตยกรรม API " +"ที่สามารถขยายได้สำหรับการผสานรวมกับแพลตฟอร์มและบริการภายนอก - **การวิเคราะห์และรายงาน:" +"** สร้างรายงานรายละเอียดเกี่ยวกับยอดขาย, สินค้าคงคลัง, และพฤติกรรมของลูกค้า - " +"**การอัปเดตแบบเรียลไทม์:** รับข้อมูลสดเกี่ยวกับระดับสินค้าคงคลัง, สถานะการสั่งซื้อ, " +"และการเปลี่ยนแปลงราคา\n" "\n" -"## API ที่มีให้บริการ - **REST API:** อินเทอร์เฟซ RESTful แบบเต็มรูปแบบ (เอกสารนี้) - **GraphQL API:** สามารถใช้งานได้ที่ `/graphql/` พร้อมอินเทอร์เฟซ GraphiQL สำหรับการสืบค้นแบบโต้ตอบ ## การยืนยันตัวตน - การยืนยันตัวตนดำเนินการผ่านโทเค็น JWT โปรดใส่โทเค็นในหัวข้อ `X-EVIBES-AUTH` ของคำขอของคุณในรูปแบบ `Bearer `\n" +"## API ที่มีให้บริการ - **REST API:** อินเทอร์เฟซ RESTful แบบเต็มรูปแบบ (เอกสารนี้) - " +"**GraphQL API:** สามารถใช้งานได้ที่ `/graphql/` พร้อมอินเทอร์เฟซ GraphiQL " +"สำหรับการสืบค้นแบบโต้ตอบ ## การยืนยันตัวตน - การยืนยันตัวตนดำเนินการผ่านโทเค็น JWT " +"โปรดใส่โทเค็นในหัวข้อ `X-EVIBES-AUTH` ของคำขอของคุณในรูปแบบ `Bearer `\n" "- ระยะเวลาการใช้งานโทเค็นการเข้าถึงคือ {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" -"} {\"minutes\" if not DEBUG else \"hours\"}. - ระยะเวลาการใช้งานโทเค็นการรีเฟรชคือ {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" -"} ชั่วโมง. - โทเค็นการรีเฟรชจะถูกหมุนเวียนและยกเลิกการใช้งานโดยอัตโนมัติหลังการใช้งานเพื่อเพิ่มความปลอดภัย. ## การแปลภาษา (i18n) - ตั้งค่าหัวข้อ `Accept-Language` เพื่อระบุภาษาที่คุณต้องการ (เช่น `Accept-Language: en-US`).\n" -"- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/app/languages/` - เนื้อหาที่แสดงต่อผู้ใช้ทั้งหมดรองรับหลายภาษาโดยอัตโนมัติ ## รูปแบบการตอบกลับ API รองรับรูปแบบการตอบกลับหลายรูปแบบ: - **JSON** (ค่าเริ่มต้น, รูปแบบ camelCase) - **XML** (เพิ่ม `?format=xml` หรือตั้งค่า `Accept: application/xml`)\n" -"- **YAML** (เพิ่ม `?format=yaml` หรือตั้งค่า `Accept: application/x-yaml`) ## สุขภาพและการตรวจสอบ - การตรวจสอบสุขภาพ: `/health/` - เมตริก Prometheus (ป้องกันด้วย basic-auth): `/prometheus/` ## เวอร์ชัน เวอร์ชัน API ปัจจุบัน: {EVIBES_VERSION}\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" +"} {\"minutes\" if not DEBUG else \"hours\"}. - " +"ระยะเวลาการใช้งานโทเค็นการรีเฟรชคือ {\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" +"} ชั่วโมง. - " +"โทเค็นการรีเฟรชจะถูกหมุนเวียนและยกเลิกการใช้งานโดยอัตโนมัติหลังการใช้งานเพื่อเพิ่มความปลอดภัย. " +"## การแปลภาษา (i18n) - ตั้งค่าหัวข้อ `Accept-Language` เพื่อระบุภาษาที่คุณต้องการ (เช่น " +"`Accept-Language: en-US`).\n" +"- ภาษาที่มีให้บริการสามารถดึงข้อมูลได้จากจุดสิ้นสุด `/app/languages/` - " +"เนื้อหาที่แสดงต่อผู้ใช้ทั้งหมดรองรับหลายภาษาโดยอัตโนมัติ ## รูปแบบการตอบกลับ API " +"รองรับรูปแบบการตอบกลับหลายรูปแบบ: - **JSON** (ค่าเริ่มต้น, รูปแบบ camelCase) - " +"**XML** (เพิ่ม `?format=xml` หรือตั้งค่า `Accept: application/xml`)\n" +"- **YAML** (เพิ่ม `?format=yaml` หรือตั้งค่า `Accept: application/x-yaml`) ## " +"สุขภาพและการตรวจสอบ - การตรวจสอบสุขภาพ: `/health/` - เมตริก Prometheus " +"(ป้องกันด้วย basic-auth): `/prometheus/` ## เวอร์ชัน เวอร์ชัน API ปัจจุบัน: " +"{EVIBES_VERSION}\n" #: evibes/settings/jazzmin.py:20 msgid "Home" diff --git a/evibes/locale/tr_TR/LC_MESSAGES/django.po b/evibes/locale/tr_TR/LC_MESSAGES/django.po index 7552747e..3184dd42 100644 --- a/evibes/locale/tr_TR/LC_MESSAGES/django.po +++ b/evibes/locale/tr_TR/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -75,8 +75,7 @@ msgstr "Anonim kullanıcılardan gelen mesajları kaç gün saklıyoruz" #: evibes/settings/constance.py:40 msgid "How many days we store messages from authenticated users" -msgstr "" -"Kimliği doğrulanmış kullanıcılardan gelen mesajları kaç gün saklıyoruz" +msgstr "Kimliği doğrulanmış kullanıcılardan gelen mesajları kaç gün saklıyoruz" #: evibes/settings/constance.py:41 msgid "Disable buy functionality" @@ -135,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -184,44 +200,65 @@ msgstr "" "\n" "eVibes belgelerine hoş geldiniz.\n" "\n" -"eVibes, sadece birkaç tıklamayla her türlü çevrimiçi mağazayı açmanıza ve yönetmenize olanak tanıyan güçlü bir e-ticaret platformudur.\n" +"eVibes, sadece birkaç tıklamayla her türlü çevrimiçi mağazayı açmanıza ve " +"yönetmenize olanak tanıyan güçlü bir e-ticaret platformudur.\n" "\n" "## Temel Özellikler\n" -"- Ürün Kataloğu:** Birden fazla kategoride ürün ayrıntılarını, fiyatlandırmayı, envanteri ve kullanılabilirliği yönetin.\n" -"- Sipariş Yönetimi:** Siparişleri işleyin, gönderimi takip edin ve müşteri taleplerini verimli bir şekilde ele alın.\n" -"- Kimlik Doğrulama ve Yetkilendirme:** JWT belirteçleri ve rol tabanlı izinler ile kapsamlı kullanıcı kimlik doğrulaması.\n" -"- **Ödeme İşleme:** Birden fazla ödeme ağ geçidini entegre edin ve işlemleri güvenli bir şekilde yönetin.\n" -"- **Blog ve İçerik Yönetimi:** Mağazanız için blog gönderileri ve pazarlama içeriği oluşturun ve yönetin.\n" -"- **B2B İşlemleri:** İşletmeler arası işlemler ve toptan satış yönetimi için özel uç noktalar.\n" -"- Çoklu Dil Desteği:** Tam uluslararasılaştırma (i18n) yetenekleri ile dünya çapındaki müşterilere hizmet verin.\n" -"- Özel Entegrasyonlar:** Harici platformlar ve hizmetlerle entegrasyon için genişletilebilir API mimarisi.\n" -"- Analitik ve Raporlama:** Satış, envanter ve müşteri davranışları hakkında ayrıntılı raporlar oluşturun.\n" -"- Gerçek Zamanlı Güncellemeler:** Envanter seviyeleri, sipariş durumları ve fiyat değişiklikleri hakkında canlı veriler alın.\n" +"- Ürün Kataloğu:** Birden fazla kategoride ürün ayrıntılarını, " +"fiyatlandırmayı, envanteri ve kullanılabilirliği yönetin.\n" +"- Sipariş Yönetimi:** Siparişleri işleyin, gönderimi takip edin ve müşteri " +"taleplerini verimli bir şekilde ele alın.\n" +"- Kimlik Doğrulama ve Yetkilendirme:** JWT belirteçleri ve rol tabanlı " +"izinler ile kapsamlı kullanıcı kimlik doğrulaması.\n" +"- **Ödeme İşleme:** Birden fazla ödeme ağ geçidini entegre edin ve işlemleri " +"güvenli bir şekilde yönetin.\n" +"- **Blog ve İçerik Yönetimi:** Mağazanız için blog gönderileri ve pazarlama " +"içeriği oluşturun ve yönetin.\n" +"- **B2B İşlemleri:** İşletmeler arası işlemler ve toptan satış yönetimi için " +"özel uç noktalar.\n" +"- Çoklu Dil Desteği:** Tam uluslararasılaştırma (i18n) yetenekleri ile dünya " +"çapındaki müşterilere hizmet verin.\n" +"- Özel Entegrasyonlar:** Harici platformlar ve hizmetlerle entegrasyon için " +"genişletilebilir API mimarisi.\n" +"- Analitik ve Raporlama:** Satış, envanter ve müşteri davranışları hakkında " +"ayrıntılı raporlar oluşturun.\n" +"- Gerçek Zamanlı Güncellemeler:** Envanter seviyeleri, sipariş durumları ve " +"fiyat değişiklikleri hakkında canlı veriler alın.\n" "\n" "## Mevcut API'ler\n" "- **REST API:** Tam RESTful arayüz (bu dokümantasyon)\n" -"- **GraphQL API:** Etkileşimli sorgular için GraphiQL arayüzü ile `/graphql/` adresinde mevcuttur\n" +"- **GraphQL API:** Etkileşimli sorgular için GraphiQL arayüzü ile `/graphql/" +"` adresinde mevcuttur\n" "\n" "## Kimlik Doğrulama\n" -"- Kimlik doğrulama JWT belirteçleri aracılığıyla gerçekleştirilir. Belirteci, isteklerinizin `X-EVIBES-AUTH` başlığına `Bearer ` biçiminde ekleyin.\n" +"- Kimlik doğrulama JWT belirteçleri aracılığıyla gerçekleştirilir. " +"Belirteci, isteklerinizin `X-EVIBES-AUTH` başlığına `Bearer ` " +"biçiminde ekleyin.\n" "- Erişim belirteci ömrü {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Yenileme belirteci ömrü {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} saattir.\n" -"- Yenileme belirteçleri, gelişmiş güvenlik için kullanımdan sonra otomatik olarak döndürülür ve geçersiz kılınır.\n" +"- Yenileme belirteçleri, gelişmiş güvenlik için kullanımdan sonra otomatik " +"olarak döndürülür ve geçersiz kılınır.\n" "\n" "## Uluslararasılaştırma (i18n)\n" -"- Tercih ettiğiniz dili belirtmek için `Accept-Language` başlığını ayarlayın (örneğin, `Accept-Language: en-US`).\n" +"- Tercih ettiğiniz dili belirtmek için `Accept-Language` başlığını ayarlayın " +"(örneğin, `Accept-Language: en-US`).\n" "- Mevcut diller `/app/languages/` uç noktasından alınabilir.\n" -"- Kullanıcıya yönelik tüm içerikler kutudan çıkar çıkmaz birden fazla dili destekler.\n" +"- Kullanıcıya yönelik tüm içerikler kutudan çıkar çıkmaz birden fazla dili " +"destekler.\n" "\n" "## Yanıt Biçimleri\n" "API birden fazla yanıt biçimini destekler:\n" "- **JSON** (varsayılan, camelCase biçimlendirilmiş)\n" -"- **XML** (`?format=xml` ekleyin veya `Accept: application/xml` olarak ayarlayın)\n" -"- **YAML** (`?format=yaml` ekleyin veya `Accept: application/x-yaml` olarak ayarlayın)\n" +"- **XML** (`?format=xml` ekleyin veya `Accept: application/xml` olarak " +"ayarlayın)\n" +"- **YAML** (`?format=yaml` ekleyin veya `Accept: application/x-yaml` olarak " +"ayarlayın)\n" "\n" "## Sağlık ve İzleme\n" "- Sağlık kontrolleri: `/health/`\n" diff --git a/evibes/locale/vi_VN/LC_MESSAGES/django.po b/evibes/locale/vi_VN/LC_MESSAGES/django.po index f71498b9..e29c9423 100644 --- a/evibes/locale/vi_VN/LC_MESSAGES/django.po +++ b/evibes/locale/vi_VN/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -71,8 +71,7 @@ msgstr "Sử dụng chức năng của Telegram-bot" #: evibes/settings/constance.py:39 msgid "How many days we store messages from anonymous users" -msgstr "" -"Chúng tôi lưu trữ tin nhắn từ người dùng ẩn danh trong bao nhiêu ngày?" +msgstr "Chúng tôi lưu trữ tin nhắn từ người dùng ẩn danh trong bao nhiêu ngày?" #: evibes/settings/constance.py:40 msgid "How many days we store messages from authenticated users" @@ -136,36 +135,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,18 +199,49 @@ msgid "" "Current API version: {EVIBES_VERSION}\n" msgstr "" "\n" -"Chào mừng đến với tài liệu hướng dẫn của eVibes. eVibes là một nền tảng thương mại điện tử mạnh mẽ cho phép bạn khởi chạy và quản lý cửa hàng trực tuyến bất kỳ loại nào chỉ với vài cú nhấp chuột. ## Tính năng chính - **Danh mục sản phẩm:** Quản lý chi tiết sản phẩm, giá cả, tồn kho và tình trạng sẵn có trên nhiều danh mục. - **Quản lý đơn hàng:** Xử lý đơn hàng, theo dõi quá trình giao hàng và xử lý yêu cầu của khách hàng một cách hiệu quả.\n" -"- **Xác thực & Quyền truy cập:** Hệ thống xác thực người dùng toàn diện với token JWT và quyền truy cập dựa trên vai trò. - **Xử lý thanh toán:** Tích hợp nhiều cổng thanh toán và quản lý giao dịch an toàn. - **Quản lý blog và nội dung:** Tạo và quản lý bài viết blog và nội dung tiếp thị cho cửa hàng của bạn. - **Hoạt động B2B:** Các điểm cuối chuyên dụng cho giao dịch B2B và quản lý bán sỉ.\n" -"- **Hỗ trợ đa ngôn ngữ:** Phục vụ khách hàng toàn cầu với khả năng quốc tế hóa (i18n) đầy đủ. - **Tích hợp tùy chỉnh:** Kiến trúc API mở rộng để tích hợp với các nền tảng và dịch vụ bên ngoài. - **Phân tích & Báo cáo:** Tạo báo cáo chi tiết về doanh số, hàng tồn kho và hành vi khách hàng. - **Cập nhật thời gian thực:** Nhận dữ liệu trực tiếp về mức tồn kho, trạng thái đơn hàng và thay đổi giá.\n" +"Chào mừng đến với tài liệu hướng dẫn của eVibes. eVibes là một nền tảng " +"thương mại điện tử mạnh mẽ cho phép bạn khởi chạy và quản lý cửa hàng trực " +"tuyến bất kỳ loại nào chỉ với vài cú nhấp chuột. ## Tính năng chính - **Danh " +"mục sản phẩm:** Quản lý chi tiết sản phẩm, giá cả, tồn kho và tình trạng sẵn " +"có trên nhiều danh mục. - **Quản lý đơn hàng:** Xử lý đơn hàng, theo dõi quá " +"trình giao hàng và xử lý yêu cầu của khách hàng một cách hiệu quả.\n" +"- **Xác thực & Quyền truy cập:** Hệ thống xác thực người dùng toàn diện với " +"token JWT và quyền truy cập dựa trên vai trò. - **Xử lý thanh toán:** Tích " +"hợp nhiều cổng thanh toán và quản lý giao dịch an toàn. - **Quản lý blog và " +"nội dung:** Tạo và quản lý bài viết blog và nội dung tiếp thị cho cửa hàng " +"của bạn. - **Hoạt động B2B:** Các điểm cuối chuyên dụng cho giao dịch B2B và " +"quản lý bán sỉ.\n" +"- **Hỗ trợ đa ngôn ngữ:** Phục vụ khách hàng toàn cầu với khả năng quốc tế " +"hóa (i18n) đầy đủ. - **Tích hợp tùy chỉnh:** Kiến trúc API mở rộng để tích " +"hợp với các nền tảng và dịch vụ bên ngoài. - **Phân tích & Báo cáo:** Tạo " +"báo cáo chi tiết về doanh số, hàng tồn kho và hành vi khách hàng. - **Cập " +"nhật thời gian thực:** Nhận dữ liệu trực tiếp về mức tồn kho, trạng thái đơn " +"hàng và thay đổi giá.\n" "\n" -"## Các API có sẵn - **REST API:** Giao diện RESTful đầy đủ (tài liệu này) - **GraphQL API:** Có sẵn tại `/graphql/` với giao diện GraphiQL cho các truy vấn tương tác ## Xác thực - Xác thực được xử lý thông qua token JWT. Bao gồm token trong tiêu đề `X-EVIBES-AUTH` của yêu cầu của bạn theo định dạng `Bearer `.\n" +"## Các API có sẵn - **REST API:** Giao diện RESTful đầy đủ (tài liệu này) - " +"**GraphQL API:** Có sẵn tại `/graphql/` với giao diện GraphiQL cho các truy " +"vấn tương tác ## Xác thực - Xác thực được xử lý thông qua token JWT. Bao gồm " +"token trong tiêu đề `X-EVIBES-AUTH` của yêu cầu của bạn theo định dạng " +"`Bearer `.\n" "- Thời hạn sử dụng của token truy cập là {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" -"} {\"minutes\" if not DEBUG else \"hours\"}. - Thời hạn sử dụng của token làm mới là {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" -"} giờ. - Token làm mới được tự động xoay vòng và vô hiệu hóa sau khi sử dụng để tăng cường bảo mật. ## Quốc tế hóa (i18n) - Đặt tiêu đề `Accept-Language` để chỉ định ngôn ngữ ưa thích của bạn (ví dụ: `Accept-Language: en-US`).\n" -"- Các ngôn ngữ có sẵn có thể được lấy từ điểm cuối `/app/languages/`. - Tất cả nội dung hiển thị cho người dùng đều hỗ trợ nhiều ngôn ngữ ngay từ đầu. ## Định dạng phản hồi API hỗ trợ nhiều định dạng phản hồi: - **JSON** (mặc định, định dạng camelCase) - **XML** (thêm `?format=xml` hoặc đặt `Accept: application/xml`)\n" -"- **YAML** (thêm `?format=yaml` hoặc đặt `Accept: application/x-yaml`) ## Sức khỏe & Giám sát - Kiểm tra sức khỏe: `/health/` - Chỉ số Prometheus (bảo vệ bằng basic-auth): `/prometheus/` ## Phiên bản Phiên bản API hiện tại: {EVIBES_VERSION}\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" +"} {\"minutes\" if not DEBUG else \"hours\"}. - Thời hạn sử dụng của token " +"làm mới là {\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" +"} giờ. - Token làm mới được tự động xoay vòng và vô hiệu hóa sau khi sử dụng " +"để tăng cường bảo mật. ## Quốc tế hóa (i18n) - Đặt tiêu đề `Accept-Language` " +"để chỉ định ngôn ngữ ưa thích của bạn (ví dụ: `Accept-Language: en-US`).\n" +"- Các ngôn ngữ có sẵn có thể được lấy từ điểm cuối `/app/languages/`. - Tất " +"cả nội dung hiển thị cho người dùng đều hỗ trợ nhiều ngôn ngữ ngay từ đầu. " +"## Định dạng phản hồi API hỗ trợ nhiều định dạng phản hồi: - **JSON** (mặc " +"định, định dạng camelCase) - **XML** (thêm `?format=xml` hoặc đặt `Accept: " +"application/xml`)\n" +"- **YAML** (thêm `?format=yaml` hoặc đặt `Accept: application/x-yaml`) ## " +"Sức khỏe & Giám sát - Kiểm tra sức khỏe: `/health/` - Chỉ số Prometheus (bảo " +"vệ bằng basic-auth): `/prometheus/` ## Phiên bản Phiên bản API hiện tại: " +"{EVIBES_VERSION}\n" #: evibes/settings/jazzmin.py:20 msgid "Home" diff --git a/evibes/locale/zh_Hans/LC_MESSAGES/django.po b/evibes/locale/zh_Hans/LC_MESSAGES/django.po index 8571335e..8a77fddb 100644 --- a/evibes/locale/zh_Hans/LC_MESSAGES/django.po +++ b/evibes/locale/zh_Hans/LC_MESSAGES/django.po @@ -1,9 +1,9 @@ -# +# msgid "" msgstr "" "Project-Id-Version: EVIBES 2025.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-11 17:37+0300\n" +"POT-Creation-Date: 2025-11-11 23:13+0300\n" "PO-Revision-Date: 2025-06-16 08:59+0100\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: LANGUAGE \n" @@ -134,36 +134,53 @@ msgid "" "\n" "Welcome to the eVibes documentation.\n" "\n" -"eVibes is a powerful e-commerce platform that allows you to launch and manage an online store of any kind in just a few clicks. \n" +"eVibes is a powerful e-commerce platform that allows you to launch and " +"manage an online store of any kind in just a few clicks. \n" "\n" "## Key Features\n" -"- **Product Catalog:** Manage product details, pricing, inventory, and availability across multiple categories.\n" -"- **Order Management:** Process orders, track fulfillment, and handle customer requests efficiently.\n" -"- **Authentication & Authorization:** Comprehensive user authentication with JWT tokens and role-based permissions.\n" -"- **Payment Processing:** Integrate multiple payment gateways and manage transactions securely.\n" -"- **Blog & Content Management:** Create and manage blog posts and marketing content for your store.\n" -"- **B2B Operations:** Dedicated endpoints for business-to-business transactions and wholesale management.\n" -"- **Multi-language Support:** Serve customers worldwide with full internationalization (i18n) capabilities.\n" -"- **Custom Integrations:** Extensible API architecture for integrating with external platforms and services.\n" -"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, and customer behavior.\n" -"- **Real-Time Updates:** Get live data on inventory levels, order statuses, and pricing changes.\n" +"- **Product Catalog:** Manage product details, pricing, inventory, and " +"availability across multiple categories.\n" +"- **Order Management:** Process orders, track fulfillment, and handle " +"customer requests efficiently.\n" +"- **Authentication & Authorization:** Comprehensive user authentication with " +"JWT tokens and role-based permissions.\n" +"- **Payment Processing:** Integrate multiple payment gateways and manage " +"transactions securely.\n" +"- **Blog & Content Management:** Create and manage blog posts and marketing " +"content for your store.\n" +"- **B2B Operations:** Dedicated endpoints for business-to-business " +"transactions and wholesale management.\n" +"- **Multi-language Support:** Serve customers worldwide with full " +"internationalization (i18n) capabilities.\n" +"- **Custom Integrations:** Extensible API architecture for integrating with " +"external platforms and services.\n" +"- **Analytics & Reporting:** Generate detailed reports on sales, inventory, " +"and customer behavior.\n" +"- **Real-Time Updates:** Get live data on inventory levels, order statuses, " +"and pricing changes.\n" "\n" "## Available APIs\n" "- **REST API:** Full RESTful interface (this documentation)\n" -"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for interactive queries\n" +"- **GraphQL API:** Available at `/graphql/` with GraphiQL interface for " +"interactive queries\n" "\n" "## Authentication\n" -"- Authentication is handled via JWT tokens. Include the token in the `X-EVIBES-AUTH` header of your requests in the format `Bearer `.\n" +"- Authentication is handled via JWT tokens. Include the token in the `X-" +"EVIBES-AUTH` header of your requests in the format `Bearer `.\n" "- Access token lifetime is {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "} {\"minutes\" if not DEBUG else \"hours\"}.\n" "- Refresh token lifetime is {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} hours.\n" -"- Refresh tokens are automatically rotated and invalidated after usage for enhanced security.\n" +"- Refresh tokens are automatically rotated and invalidated after usage for " +"enhanced security.\n" "\n" "## Internationalization (i18n)\n" -"- Set the `Accept-Language` header to specify your preferred language (e.g., `Accept-Language: en-US`).\n" +"- Set the `Accept-Language` header to specify your preferred language (e.g., " +"`Accept-Language: en-US`).\n" "- Available languages can be retrieved from the `/app/languages/` endpoint.\n" "- All user-facing content supports multiple languages out of the box.\n" "\n" @@ -183,7 +200,8 @@ msgstr "" "\n" "欢迎使用 eVibes 文档。\n" "\n" -"eVibes 是一个功能强大的电子商务平台,只需点击几下,您就可以创建和管理任何类型的网上商店。\n" +"eVibes 是一个功能强大的电子商务平台,只需点击几下,您就可以创建和管理任何类型" +"的网上商店。\n" "\n" "## 关键功能\n" "- 产品目录:** 管理多个类别的产品详情、定价、库存和可用性。\n" @@ -199,20 +217,25 @@ msgstr "" "\n" "## 可用的应用程序接口\n" "- REST API:** 完整的 REST 接口(本文档)\n" -"- **GraphQL 应用程序接口:** 可在 `/graphql/`使用 GraphiQL 接口进行交互式查询\n" +"- **GraphQL 应用程序接口:** 可在 `/graphql/`使用 GraphiQL 接口进行交互式查" +"询\n" "\n" "## 验证\n" -"- 通过 JWT 标记进行身份验证。在请求的 `X-EVIBES-AUTH` 头中包含令牌,格式为 `Bearer `。\n" +"- 通过 JWT 标记进行身份验证。在请求的 `X-EVIBES-AUTH` 头中包含令牌,格式为 " +"`Bearer `。\n" "- 访问令牌的有效期为 {\n" -" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not DEBUG else 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"ACCESS_TOKEN_LIFETIME\").total_seconds() // 60 if not " +"DEBUG else 3600 # type: ignore [union-attr]\n" "}{\"minutes\" if not DEBUG else \"hours\"}。\n" "- 刷新令牌的有效期为 {\n" -" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # type: ignore [union-attr]\n" +" SIMPLE_JWT.get(\"REFRESH_TOKEN_LIFETIME\").total_seconds() // 3600 # " +"type: ignore [union-attr]\n" "} 小时。\n" "- 刷新令牌在使用后会自动轮换和失效,以增强安全性。\n" "\n" "### 国际化(i18n)\n" -"- 设置 `Accept-Language` 标头,指定首选语言(例如,`Accept-Language: en-US`)。\n" +"- 设置 `Accept-Language` 标头,指定首选语言(例如,`Accept-Language: en-" +"US`)。\n" "- 可从 `/app/languages/` 端点检索可用语言。\n" "- 所有面向用户的内容均支持多种语言。\n" "\n" diff --git a/evibes/settings/base.py b/evibes/settings/base.py index 93e45faa..30ea4dfc 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -18,6 +18,8 @@ DEBUG = bool(int(getenv("DEBUG", "1"))) BASE_DOMAIN: str = getenv("EVIBES_BASE_DOMAIN", "localhost") STOREFRONT_DOMAIN: str = getenv("EVIBES_STOREFRONT_DOMAIN", "localhost") +ALLOW_MESSAGING: bool = bool(int(getenv("ALLOW_MESSAGING", "0"))) + ALLOWED_HOSTS: set[str] = { "app", "worker", @@ -132,6 +134,7 @@ INSTALLED_APPS: list[str] = [ "rest_framework", "rest_framework_simplejwt", "rest_framework_simplejwt.token_blacklist", + "drf_spectacular_websocket", "drf_spectacular", "drf_spectacular_sidecar", "django_json_widget", diff --git a/evibes/settings/drf.py b/evibes/settings/drf.py index 901da1d1..5ac3f992 100644 --- a/evibes/settings/drf.py +++ b/evibes/settings/drf.py @@ -98,6 +98,7 @@ Current API version: {EVIBES_VERSION} """) # noqa: E501, F405 SPECTACULAR_SETTINGS = { + "DEFAULT_GENERATOR_CLASS": "drf_spectacular_websocket.schemas.WsSchemaGenerator", "TITLE": f"{CONSTANCE_CONFIG.get('PROJECT_NAME')[0]} API", # type: ignore [index] "DESCRIPTION": SPECTACULAR_DESCRIPTION, "VERSION": EVIBES_VERSION, # noqa: F405 @@ -112,27 +113,9 @@ SPECTACULAR_SETTINGS = { "ENABLE_DJANGO_DEPLOY_CHECK": not DEBUG, # noqa: F405 "SWAGGER_UI_FAVICON_HREF": r"/static/favicon.png", "SWAGGER_UI_SETTINGS": { - "requestInterceptor": """ - function(request) { - const fmt = new URL(request.url).searchParams.get('format'); - if (fmt) { - switch (fmt) { - case 'xml': - request.headers['Accept'] = 'application/xml'; - break; - case 'yaml': - request.headers['Accept'] = 'application/x-yaml'; - break; - case 'yml': - request.headers['Accept'] = 'application/x-yaml'; - break; - default: - request.headers['Accept'] = 'application/json'; - } - } - return request; - } - """, + "connectSocket": True, + "socketMaxMessages": 8, + "socketMessagesInitialOpened": False, }, "SERVERS": [ { diff --git a/evibes/urls.py b/evibes/urls.py index 78e05d6f..233877d4 100644 --- a/evibes/urls.py +++ b/evibes/urls.py @@ -1,14 +1,13 @@ -from django.conf import settings from django.conf.urls.i18n import i18n_patterns from django.contrib import admin from django.urls import include, path from django.views.decorators.csrf import csrf_exempt -from drf_spectacular.views import SpectacularAPIView from engine.core.graphene.schema import schema from engine.core.views import ( CustomGraphQLView, CustomRedocView, + CustomSpectacularAPIView, CustomSwaggerView, favicon_view, index, @@ -52,7 +51,7 @@ urlpatterns = [ ### DOCUMENTATION URLS ### path( r"docs/", - SpectacularAPIView.as_view(urlconf="evibes.urls", custom_settings=settings.SPECTACULAR_SETTINGS), + CustomSpectacularAPIView.as_view(urlconf="evibes.urls"), name="schema-platform", ), path( diff --git a/pyproject.toml b/pyproject.toml index 05a757d0..0fd6cbad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ dependencies = [ "djangorestframework-xml==2.0.0", "djangorestframework-yaml==2.0.0", "drf-spectacular[sidecar]==0.29.0", + "drf-spectacular-websocket>=1.3.1", "elasticsearch-dsl==8.18.0", "filelock==3.20.0", "filetype==1.2.0", @@ -69,6 +70,7 @@ dependencies = [ "uvicorn==0.38.0", "zeep==4.3.2", "whitenoise>=6.11.0", + "websockets>=15.0.1", ] [project.optional-dependencies] diff --git a/uv.lock b/uv.lock index b3dc9bd4..703b5f9f 100644 --- a/uv.lock +++ b/uv.lock @@ -1223,14 +1223,30 @@ sidecar = [ [[package]] name = "drf-spectacular-sidecar" -version = "2025.10.1" +version = "2024.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "django" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c3/e4/99cd1b1c8c69788bd6cb6a2459674f8c75728e79df23ac7beddd094bf805/drf_spectacular_sidecar-2025.10.1.tar.gz", hash = "sha256:506a5a21ce1ad7211c28acb4e2112e213f6dc095a2052ee6ed6db1ffe8eb5a7b", size = 2420998, upload-time = "2025-10-01T11:23:27.092Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/cb/e9f88193ca4cedf844ee788956f2c54d6bf9e31397c9d4f994e18f043246/drf-spectacular-sidecar-2024.4.1.tar.gz", hash = "sha256:68532dd094714f79c1775c00848f22c10f004826abc856442ff30c3bc9c40bb4", size = 2345981, upload-time = "2024-04-01T11:19:49.877Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/87/70c67391e4ce68715d4dfae8dd33caeda2552af22f436ba55b8867a040fe/drf_spectacular_sidecar-2025.10.1-py3-none-any.whl", hash = "sha256:f1de343184d1a938179ce363d318258fe1e5f02f2f774625272364835f1c42bd", size = 2440241, upload-time = "2025-10-01T11:23:25.743Z" }, + { url = "https://files.pythonhosted.org/packages/11/9f/aeeb4e9d77bb08c69ce7d34b21f75764cf837aadb7f0734ef81788cd8884/drf_spectacular_sidecar-2024.4.1-py3-none-any.whl", hash = "sha256:8359befe69a8953fea86be01c1ff37038854a62546225551de16c47c07dccd4e", size = 2365762, upload-time = "2024-04-01T11:19:47.869Z" }, +] + +[[package]] +name = "drf-spectacular-websocket" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "channels" }, + { name = "django" }, + { name = "djangorestframework" }, + { name = "drf-spectacular" }, + { name = "drf-spectacular-sidecar" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4e/57/104b48aa0bc3d28bbce19774c9bfe4ff5c0cd92a584931c3b200cd78970b/drf_spectacular_websocket-1.3.1.tar.gz", hash = "sha256:9203df1e5e9e2ca51a9f61104b2fc3f84346783333e4d8782c825a91ed60246c", size = 164318, upload-time = "2024-11-30T11:53:34.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/be/d8a805df17735aeeef06c04a86cf570c78dc758c8ac54a1b4ae6a9c8a894/drf_spectacular_websocket-1.3.1-py3-none-any.whl", hash = "sha256:aeda4bf9c25a4d3888f1ebccadc9dc8da7f25c5c2884f08bead5a3e8e467f280", size = 16824, upload-time = "2024-11-30T11:53:22.618Z" }, ] [[package]] @@ -1328,6 +1344,7 @@ dependencies = [ { name = "djangorestframework-xml" }, { name = "djangorestframework-yaml" }, { name = "drf-spectacular", extra = ["sidecar"] }, + { name = "drf-spectacular-websocket" }, { name = "elasticsearch-dsl" }, { name = "filelock" }, { name = "filetype" }, @@ -1350,6 +1367,7 @@ dependencies = [ { name = "six" }, { name = "swapper" }, { name = "uvicorn" }, + { name = "websockets" }, { name = "whitenoise" }, { name = "zeep" }, ] @@ -1455,6 +1473,7 @@ requires-dist = [ { name = "djangorestframework-xml", specifier = "==2.0.0" }, { name = "djangorestframework-yaml", specifier = "==2.0.0" }, { name = "drf-spectacular", extras = ["sidecar"], specifier = "==0.29.0" }, + { name = "drf-spectacular-websocket", specifier = ">=1.3.1" }, { name = "elasticsearch-dsl", specifier = "==8.18.0" }, { name = "filelock", specifier = "==3.20.0" }, { name = "filetype", specifier = "==1.2.0" }, @@ -1485,6 +1504,7 @@ requires-dist = [ { name = "sphinx-rtd-theme", marker = "extra == 'docs'", specifier = "==3.0.2" }, { name = "swapper", specifier = "==1.4.0" }, { name = "uvicorn", specifier = "==0.38.0" }, + { name = "websockets", specifier = ">=15.0.1" }, { name = "whitenoise", specifier = ">=6.11.0" }, { name = "zeep", specifier = "==4.3.2" }, ] @@ -1938,45 +1958,45 @@ wheels = [ [[package]] name = "jiter" -version = "0.11.1" +version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/68/0357982493a7b20925aece061f7fb7a2678e3b232f8d73a6edb7e5304443/jiter-0.11.1.tar.gz", hash = "sha256:849dcfc76481c0ea0099391235b7ca97d7279e0fa4c86005457ac7c88e8b76dc", size = 168385, upload-time = "2025-10-17T11:31:15.186Z" } +sdist = { url = "https://files.pythonhosted.org/packages/45/9d/e0660989c1370e25848bb4c52d061c71837239738ad937e83edca174c273/jiter-0.12.0.tar.gz", hash = "sha256:64dfcd7d5c168b38d3f9f8bba7fc639edb3418abcc74f22fdbe6b8938293f30b", size = 168294, upload-time = "2025-11-09T20:49:23.302Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/8b/318e8af2c904a9d29af91f78c1e18f0592e189bbdb8a462902d31fe20682/jiter-0.11.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c92148eec91052538ce6823dfca9525f5cfc8b622d7f07e9891a280f61b8c96c", size = 305655, upload-time = "2025-10-17T11:29:18.859Z" }, - { url = "https://files.pythonhosted.org/packages/f7/29/6c7de6b5d6e511d9e736312c0c9bfcee8f9b6bef68182a08b1d78767e627/jiter-0.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ecd4da91b5415f183a6be8f7158d127bdd9e6a3174138293c0d48d6ea2f2009d", size = 315645, upload-time = "2025-10-17T11:29:20.889Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5f/ef9e5675511ee0eb7f98dd8c90509e1f7743dbb7c350071acae87b0145f3/jiter-0.11.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7e3ac25c00b9275684d47aa42febaa90a9958e19fd1726c4ecf755fbe5e553b", size = 348003, upload-time = "2025-10-17T11:29:22.712Z" }, - { url = "https://files.pythonhosted.org/packages/56/1b/abe8c4021010b0a320d3c62682769b700fb66f92c6db02d1a1381b3db025/jiter-0.11.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:57d7305c0a841858f866cd459cd9303f73883fb5e097257f3d4a3920722c69d4", size = 365122, upload-time = "2025-10-17T11:29:24.408Z" }, - { url = "https://files.pythonhosted.org/packages/2a/2d/4a18013939a4f24432f805fbd5a19893e64650b933edb057cd405275a538/jiter-0.11.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e86fa10e117dce22c547f31dd6d2a9a222707d54853d8de4e9a2279d2c97f239", size = 488360, upload-time = "2025-10-17T11:29:25.724Z" }, - { url = "https://files.pythonhosted.org/packages/f0/77/38124f5d02ac4131f0dfbcfd1a19a0fac305fa2c005bc4f9f0736914a1a4/jiter-0.11.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae5ef1d48aec7e01ee8420155d901bb1d192998fa811a65ebb82c043ee186711", size = 376884, upload-time = "2025-10-17T11:29:27.056Z" }, - { url = "https://files.pythonhosted.org/packages/7b/43/59fdc2f6267959b71dd23ce0bd8d4aeaf55566aa435a5d00f53d53c7eb24/jiter-0.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb68e7bf65c990531ad8715e57d50195daf7c8e6f1509e617b4e692af1108939", size = 358827, upload-time = "2025-10-17T11:29:28.698Z" }, - { url = "https://files.pythonhosted.org/packages/7d/d0/b3cc20ff5340775ea3bbaa0d665518eddecd4266ba7244c9cb480c0c82ec/jiter-0.11.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43b30c8154ded5845fa454ef954ee67bfccce629b2dea7d01f795b42bc2bda54", size = 385171, upload-time = "2025-10-17T11:29:30.078Z" }, - { url = "https://files.pythonhosted.org/packages/d2/bc/94dd1f3a61f4dc236f787a097360ec061ceeebebf4ea120b924d91391b10/jiter-0.11.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:586cafbd9dd1f3ce6a22b4a085eaa6be578e47ba9b18e198d4333e598a91db2d", size = 518359, upload-time = "2025-10-17T11:29:31.464Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8c/12ee132bd67e25c75f542c227f5762491b9a316b0dad8e929c95076f773c/jiter-0.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:677cc2517d437a83bb30019fd4cf7cad74b465914c56ecac3440d597ac135250", size = 509205, upload-time = "2025-10-17T11:29:32.895Z" }, - { url = "https://files.pythonhosted.org/packages/39/d5/9de848928ce341d463c7e7273fce90ea6d0ea4343cd761f451860fa16b59/jiter-0.11.1-cp312-cp312-win32.whl", hash = "sha256:fa992af648fcee2b850a3286a35f62bbbaeddbb6dbda19a00d8fbc846a947b6e", size = 205448, upload-time = "2025-10-17T11:29:34.217Z" }, - { url = "https://files.pythonhosted.org/packages/ee/b0/8002d78637e05009f5e3fb5288f9d57d65715c33b5d6aa20fd57670feef5/jiter-0.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:88b5cae9fa51efeb3d4bd4e52bfd4c85ccc9cac44282e2a9640893a042ba4d87", size = 204285, upload-time = "2025-10-17T11:29:35.446Z" }, - { url = "https://files.pythonhosted.org/packages/9f/a2/bb24d5587e4dff17ff796716542f663deee337358006a80c8af43ddc11e5/jiter-0.11.1-cp312-cp312-win_arm64.whl", hash = "sha256:9a6cae1ab335551917f882f2c3c1efe7617b71b4c02381e4382a8fc80a02588c", size = 188712, upload-time = "2025-10-17T11:29:37.027Z" }, - { url = "https://files.pythonhosted.org/packages/7c/4b/e4dd3c76424fad02a601d570f4f2a8438daea47ba081201a721a903d3f4c/jiter-0.11.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:71b6a920a5550f057d49d0e8bcc60945a8da998019e83f01adf110e226267663", size = 305272, upload-time = "2025-10-17T11:29:39.249Z" }, - { url = "https://files.pythonhosted.org/packages/67/83/2cd3ad5364191130f4de80eacc907f693723beaab11a46c7d155b07a092c/jiter-0.11.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b3de72e925388453a5171be83379549300db01284f04d2a6f244d1d8de36f94", size = 314038, upload-time = "2025-10-17T11:29:40.563Z" }, - { url = "https://files.pythonhosted.org/packages/d3/3c/8e67d9ba524e97d2f04c8f406f8769a23205026b13b0938d16646d6e2d3e/jiter-0.11.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc19dd65a2bd3d9c044c5b4ebf657ca1e6003a97c0fc10f555aa4f7fb9821c00", size = 345977, upload-time = "2025-10-17T11:29:42.009Z" }, - { url = "https://files.pythonhosted.org/packages/8d/a5/489ce64d992c29bccbffabb13961bbb0435e890d7f2d266d1f3df5e917d2/jiter-0.11.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d58faaa936743cd1464540562f60b7ce4fd927e695e8bc31b3da5b914baa9abd", size = 364503, upload-time = "2025-10-17T11:29:43.459Z" }, - { url = "https://files.pythonhosted.org/packages/d4/c0/e321dd83ee231d05c8fe4b1a12caf1f0e8c7a949bf4724d58397104f10f2/jiter-0.11.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:902640c3103625317291cb73773413b4d71847cdf9383ba65528745ff89f1d14", size = 487092, upload-time = "2025-10-17T11:29:44.835Z" }, - { url = "https://files.pythonhosted.org/packages/f9/5e/8f24ec49c8d37bd37f34ec0112e0b1a3b4b5a7b456c8efff1df5e189ad43/jiter-0.11.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30405f726e4c2ed487b176c09f8b877a957f535d60c1bf194abb8dadedb5836f", size = 376328, upload-time = "2025-10-17T11:29:46.175Z" }, - { url = "https://files.pythonhosted.org/packages/7f/70/ded107620e809327cf7050727e17ccfa79d6385a771b7fe38fb31318ef00/jiter-0.11.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3217f61728b0baadd2551844870f65219ac4a1285d5e1a4abddff3d51fdabe96", size = 356632, upload-time = "2025-10-17T11:29:47.454Z" }, - { url = "https://files.pythonhosted.org/packages/19/53/c26f7251613f6a9079275ee43c89b8a973a95ff27532c421abc2a87afb04/jiter-0.11.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b1364cc90c03a8196f35f396f84029f12abe925415049204446db86598c8b72c", size = 384358, upload-time = "2025-10-17T11:29:49.377Z" }, - { url = "https://files.pythonhosted.org/packages/84/16/e0f2cc61e9c4d0b62f6c1bd9b9781d878a427656f88293e2a5335fa8ff07/jiter-0.11.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:53a54bf8e873820ab186b2dca9f6c3303f00d65ae5e7b7d6bda1b95aa472d646", size = 517279, upload-time = "2025-10-17T11:29:50.968Z" }, - { url = "https://files.pythonhosted.org/packages/60/5c/4cd095eaee68961bca3081acbe7c89e12ae24a5dae5fd5d2a13e01ed2542/jiter-0.11.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7e29aca023627b0e0c2392d4248f6414d566ff3974fa08ff2ac8dbb96dfee92a", size = 508276, upload-time = "2025-10-17T11:29:52.619Z" }, - { url = "https://files.pythonhosted.org/packages/4f/25/f459240e69b0e09a7706d96ce203ad615ca36b0fe832308d2b7123abf2d0/jiter-0.11.1-cp313-cp313-win32.whl", hash = "sha256:f153e31d8bca11363751e875c0a70b3d25160ecbaee7b51e457f14498fb39d8b", size = 205593, upload-time = "2025-10-17T11:29:53.938Z" }, - { url = "https://files.pythonhosted.org/packages/7c/16/461bafe22bae79bab74e217a09c907481a46d520c36b7b9fe71ee8c9e983/jiter-0.11.1-cp313-cp313-win_amd64.whl", hash = "sha256:f773f84080b667c69c4ea0403fc67bb08b07e2b7ce1ef335dea5868451e60fed", size = 203518, upload-time = "2025-10-17T11:29:55.216Z" }, - { url = "https://files.pythonhosted.org/packages/7b/72/c45de6e320edb4fa165b7b1a414193b3cae302dd82da2169d315dcc78b44/jiter-0.11.1-cp313-cp313-win_arm64.whl", hash = "sha256:635ecd45c04e4c340d2187bcb1cea204c7cc9d32c1364d251564bf42e0e39c2d", size = 188062, upload-time = "2025-10-17T11:29:56.631Z" }, - { url = "https://files.pythonhosted.org/packages/65/9b/4a57922437ca8753ef823f434c2dec5028b237d84fa320f06a3ba1aec6e8/jiter-0.11.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d892b184da4d94d94ddb4031296931c74ec8b325513a541ebfd6dfb9ae89904b", size = 313814, upload-time = "2025-10-17T11:29:58.509Z" }, - { url = "https://files.pythonhosted.org/packages/76/50/62a0683dadca25490a4bedc6a88d59de9af2a3406dd5a576009a73a1d392/jiter-0.11.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa22c223a3041dacb2fcd37c70dfd648b44662b4a48e242592f95bda5ab09d58", size = 344987, upload-time = "2025-10-17T11:30:00.208Z" }, - { url = "https://files.pythonhosted.org/packages/da/00/2355dbfcbf6cdeaddfdca18287f0f38ae49446bb6378e4a5971e9356fc8a/jiter-0.11.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:330e8e6a11ad4980cd66a0f4a3e0e2e0f646c911ce047014f984841924729789", size = 356399, upload-time = "2025-10-17T11:30:02.084Z" }, - { url = "https://files.pythonhosted.org/packages/c9/07/c2bd748d578fa933d894a55bff33f983bc27f75fc4e491b354bef7b78012/jiter-0.11.1-cp313-cp313t-win_amd64.whl", hash = "sha256:09e2e386ebf298547ca3a3704b729471f7ec666c2906c5c26c1a915ea24741ec", size = 203289, upload-time = "2025-10-17T11:30:03.656Z" }, - { url = "https://files.pythonhosted.org/packages/e6/ee/ace64a853a1acbd318eb0ca167bad1cf5ee037207504b83a868a5849747b/jiter-0.11.1-cp313-cp313t-win_arm64.whl", hash = "sha256:fe4a431c291157e11cee7c34627990ea75e8d153894365a3bc84b7a959d23ca8", size = 188284, upload-time = "2025-10-17T11:30:05.046Z" }, - { url = "https://files.pythonhosted.org/packages/a6/bc/950dd7f170c6394b6fdd73f989d9e729bd98907bcc4430ef080a72d06b77/jiter-0.11.1-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:0d4d6993edc83cf75e8c6828a8d6ce40a09ee87e38c7bfba6924f39e1337e21d", size = 302626, upload-time = "2025-10-17T11:31:09.645Z" }, - { url = "https://files.pythonhosted.org/packages/3a/65/43d7971ca82ee100b7b9b520573eeef7eabc0a45d490168ebb9a9b5bb8b2/jiter-0.11.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f78d151c83a87a6cf5461d5ee55bc730dd9ae227377ac6f115b922989b95f838", size = 297034, upload-time = "2025-10-17T11:31:10.975Z" }, - { url = "https://files.pythonhosted.org/packages/19/4c/000e1e0c0c67e96557a279f8969487ea2732d6c7311698819f977abae837/jiter-0.11.1-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9022974781155cd5521d5cb10997a03ee5e31e8454c9d999dcdccd253f2353f", size = 337328, upload-time = "2025-10-17T11:31:12.399Z" }, - { url = "https://files.pythonhosted.org/packages/d9/71/71408b02c6133153336d29fa3ba53000f1e1a3f78bb2fc2d1a1865d2e743/jiter-0.11.1-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18c77aaa9117510d5bdc6a946baf21b1f0cfa58ef04d31c8d016f206f2118960", size = 343697, upload-time = "2025-10-17T11:31:13.773Z" }, + { url = "https://files.pythonhosted.org/packages/92/c9/5b9f7b4983f1b542c64e84165075335e8a236fa9e2ea03a0c79780062be8/jiter-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:305e061fa82f4680607a775b2e8e0bcb071cd2205ac38e6ef48c8dd5ebe1cf37", size = 314449, upload-time = "2025-11-09T20:47:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/98/6e/e8efa0e78de00db0aee82c0cf9e8b3f2027efd7f8a71f859d8f4be8e98ef/jiter-0.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c1860627048e302a528333c9307c818c547f214d8659b0705d2195e1a94b274", size = 319855, upload-time = "2025-11-09T20:47:24.779Z" }, + { url = "https://files.pythonhosted.org/packages/20/26/894cd88e60b5d58af53bec5c6759d1292bd0b37a8b5f60f07abf7a63ae5f/jiter-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df37577a4f8408f7e0ec3205d2a8f87672af8f17008358063a4d6425b6081ce3", size = 350171, upload-time = "2025-11-09T20:47:26.469Z" }, + { url = "https://files.pythonhosted.org/packages/f5/27/a7b818b9979ac31b3763d25f3653ec3a954044d5e9f5d87f2f247d679fd1/jiter-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:75fdd787356c1c13a4f40b43c2156276ef7a71eb487d98472476476d803fb2cf", size = 365590, upload-time = "2025-11-09T20:47:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7e/e46195801a97673a83746170b17984aa8ac4a455746354516d02ca5541b4/jiter-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1eb5db8d9c65b112aacf14fcd0faae9913d07a8afea5ed06ccdd12b724e966a1", size = 479462, upload-time = "2025-11-09T20:47:29.654Z" }, + { url = "https://files.pythonhosted.org/packages/ca/75/f833bfb009ab4bd11b1c9406d333e3b4357709ed0570bb48c7c06d78c7dd/jiter-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73c568cc27c473f82480abc15d1301adf333a7ea4f2e813d6a2c7d8b6ba8d0df", size = 378983, upload-time = "2025-11-09T20:47:31.026Z" }, + { url = "https://files.pythonhosted.org/packages/71/b3/7a69d77943cc837d30165643db753471aff5df39692d598da880a6e51c24/jiter-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4321e8a3d868919bcb1abb1db550d41f2b5b326f72df29e53b2df8b006eb9403", size = 361328, upload-time = "2025-11-09T20:47:33.286Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ac/a78f90caf48d65ba70d8c6efc6f23150bc39dc3389d65bbec2a95c7bc628/jiter-0.12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a51bad79f8cc9cac2b4b705039f814049142e0050f30d91695a2d9a6611f126", size = 386740, upload-time = "2025-11-09T20:47:34.703Z" }, + { url = "https://files.pythonhosted.org/packages/39/b6/5d31c2cc8e1b6a6bcf3c5721e4ca0a3633d1ab4754b09bc7084f6c4f5327/jiter-0.12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2a67b678f6a5f1dd6c36d642d7db83e456bc8b104788262aaefc11a22339f5a9", size = 520875, upload-time = "2025-11-09T20:47:36.058Z" }, + { url = "https://files.pythonhosted.org/packages/30/b5/4df540fae4e9f68c54b8dab004bd8c943a752f0b00efd6e7d64aa3850339/jiter-0.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efe1a211fe1fd14762adea941e3cfd6c611a136e28da6c39272dbb7a1bbe6a86", size = 511457, upload-time = "2025-11-09T20:47:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/07/65/86b74010e450a1a77b2c1aabb91d4a91dd3cd5afce99f34d75fd1ac64b19/jiter-0.12.0-cp312-cp312-win32.whl", hash = "sha256:d779d97c834b4278276ec703dc3fc1735fca50af63eb7262f05bdb4e62203d44", size = 204546, upload-time = "2025-11-09T20:47:40.47Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c7/6659f537f9562d963488e3e55573498a442503ced01f7e169e96a6110383/jiter-0.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e8269062060212b373316fe69236096aaf4c49022d267c6736eebd66bbbc60bb", size = 205196, upload-time = "2025-11-09T20:47:41.794Z" }, + { url = "https://files.pythonhosted.org/packages/21/f4/935304f5169edadfec7f9c01eacbce4c90bb9a82035ac1de1f3bd2d40be6/jiter-0.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:06cb970936c65de926d648af0ed3d21857f026b1cf5525cb2947aa5e01e05789", size = 186100, upload-time = "2025-11-09T20:47:43.007Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a6/97209693b177716e22576ee1161674d1d58029eb178e01866a0422b69224/jiter-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6cc49d5130a14b732e0612bc76ae8db3b49898732223ef8b7599aa8d9810683e", size = 313658, upload-time = "2025-11-09T20:47:44.424Z" }, + { url = "https://files.pythonhosted.org/packages/06/4d/125c5c1537c7d8ee73ad3d530a442d6c619714b95027143f1b61c0b4dfe0/jiter-0.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37f27a32ce36364d2fa4f7fdc507279db604d27d239ea2e044c8f148410defe1", size = 318605, upload-time = "2025-11-09T20:47:45.973Z" }, + { url = "https://files.pythonhosted.org/packages/99/bf/a840b89847885064c41a5f52de6e312e91fa84a520848ee56c97e4fa0205/jiter-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbc0944aa3d4b4773e348cda635252824a78f4ba44328e042ef1ff3f6080d1cf", size = 349803, upload-time = "2025-11-09T20:47:47.535Z" }, + { url = "https://files.pythonhosted.org/packages/8a/88/e63441c28e0db50e305ae23e19c1d8fae012d78ed55365da392c1f34b09c/jiter-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da25c62d4ee1ffbacb97fac6dfe4dcd6759ebdc9015991e92a6eae5816287f44", size = 365120, upload-time = "2025-11-09T20:47:49.284Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7c/49b02714af4343970eb8aca63396bc1c82fa01197dbb1e9b0d274b550d4e/jiter-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:048485c654b838140b007390b8182ba9774621103bd4d77c9c3f6f117474ba45", size = 479918, upload-time = "2025-11-09T20:47:50.807Z" }, + { url = "https://files.pythonhosted.org/packages/69/ba/0a809817fdd5a1db80490b9150645f3aae16afad166960bcd562be194f3b/jiter-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:635e737fbb7315bef0037c19b88b799143d2d7d3507e61a76751025226b3ac87", size = 379008, upload-time = "2025-11-09T20:47:52.211Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c3/c9fc0232e736c8877d9e6d83d6eeb0ba4e90c6c073835cc2e8f73fdeef51/jiter-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e017c417b1ebda911bd13b1e40612704b1f5420e30695112efdbed8a4b389ed", size = 361785, upload-time = "2025-11-09T20:47:53.512Z" }, + { url = "https://files.pythonhosted.org/packages/96/61/61f69b7e442e97ca6cd53086ddc1cf59fb830549bc72c0a293713a60c525/jiter-0.12.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:89b0bfb8b2bf2351fba36bb211ef8bfceba73ef58e7f0c68fb67b5a2795ca2f9", size = 386108, upload-time = "2025-11-09T20:47:54.893Z" }, + { url = "https://files.pythonhosted.org/packages/e9/2e/76bb3332f28550c8f1eba3bf6e5efe211efda0ddbbaf24976bc7078d42a5/jiter-0.12.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f5aa5427a629a824a543672778c9ce0c5e556550d1569bb6ea28a85015287626", size = 519937, upload-time = "2025-11-09T20:47:56.253Z" }, + { url = "https://files.pythonhosted.org/packages/84/d6/fa96efa87dc8bff2094fb947f51f66368fa56d8d4fc9e77b25d7fbb23375/jiter-0.12.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed53b3d6acbcb0fd0b90f20c7cb3b24c357fe82a3518934d4edfa8c6898e498c", size = 510853, upload-time = "2025-11-09T20:47:58.32Z" }, + { url = "https://files.pythonhosted.org/packages/8a/28/93f67fdb4d5904a708119a6ab58a8f1ec226ff10a94a282e0215402a8462/jiter-0.12.0-cp313-cp313-win32.whl", hash = "sha256:4747de73d6b8c78f2e253a2787930f4fffc68da7fa319739f57437f95963c4de", size = 204699, upload-time = "2025-11-09T20:47:59.686Z" }, + { url = "https://files.pythonhosted.org/packages/c4/1f/30b0eb087045a0abe2a5c9c0c0c8da110875a1d3be83afd4a9a4e548be3c/jiter-0.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:e25012eb0c456fcc13354255d0338cd5397cce26c77b2832b3c4e2e255ea5d9a", size = 204258, upload-time = "2025-11-09T20:48:01.01Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f4/2b4daf99b96bce6fc47971890b14b2a36aef88d7beb9f057fafa032c6141/jiter-0.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:c97b92c54fe6110138c872add030a1f99aea2401ddcdaa21edf74705a646dd60", size = 185503, upload-time = "2025-11-09T20:48:02.35Z" }, + { url = "https://files.pythonhosted.org/packages/39/ca/67bb15a7061d6fe20b9b2a2fd783e296a1e0f93468252c093481a2f00efa/jiter-0.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:53839b35a38f56b8be26a7851a48b89bc47e5d88e900929df10ed93b95fea3d6", size = 317965, upload-time = "2025-11-09T20:48:03.783Z" }, + { url = "https://files.pythonhosted.org/packages/18/af/1788031cd22e29c3b14bc6ca80b16a39a0b10e611367ffd480c06a259831/jiter-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94f669548e55c91ab47fef8bddd9c954dab1938644e715ea49d7e117015110a4", size = 345831, upload-time = "2025-11-09T20:48:05.55Z" }, + { url = "https://files.pythonhosted.org/packages/05/17/710bf8472d1dff0d3caf4ced6031060091c1320f84ee7d5dcbed1f352417/jiter-0.12.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:351d54f2b09a41600ffea43d081522d792e81dcfb915f6d2d242744c1cc48beb", size = 361272, upload-time = "2025-11-09T20:48:06.951Z" }, + { url = "https://files.pythonhosted.org/packages/fb/f1/1dcc4618b59761fef92d10bcbb0b038b5160be653b003651566a185f1a5c/jiter-0.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2a5e90604620f94bf62264e7c2c038704d38217b7465b863896c6d7c902b06c7", size = 204604, upload-time = "2025-11-09T20:48:08.328Z" }, + { url = "https://files.pythonhosted.org/packages/d9/32/63cb1d9f1c5c6632a783c0052cde9ef7ba82688f7065e2f0d5f10a7e3edb/jiter-0.12.0-cp313-cp313t-win_arm64.whl", hash = "sha256:88ef757017e78d2860f96250f9393b7b577b06a956ad102c29c8237554380db3", size = 185628, upload-time = "2025-11-09T20:48:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/cb/f5/12efb8ada5f5c9edc1d4555fe383c1fb2eac05ac5859258a72d61981d999/jiter-0.12.0-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:e8547883d7b96ef2e5fe22b88f8a4c8725a56e7f4abafff20fd5272d634c7ecb", size = 309974, upload-time = "2025-11-09T20:49:17.187Z" }, + { url = "https://files.pythonhosted.org/packages/85/15/d6eb3b770f6a0d332675141ab3962fd4a7c270ede3515d9f3583e1d28276/jiter-0.12.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:89163163c0934854a668ed783a2546a0617f71706a2551a4a0666d91ab365d6b", size = 304233, upload-time = "2025-11-09T20:49:18.734Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3e/e7e06743294eea2cf02ced6aa0ff2ad237367394e37a0e2b4a1108c67a36/jiter-0.12.0-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d96b264ab7d34bbb2312dedc47ce07cd53f06835eacbc16dde3761f47c3a9e7f", size = 338537, upload-time = "2025-11-09T20:49:20.317Z" }, + { url = "https://files.pythonhosted.org/packages/2f/9c/6753e6522b8d0ef07d3a3d239426669e984fb0eba15a315cdbc1253904e4/jiter-0.12.0-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24e864cb30ab82311c6425655b0cdab0a98c5d973b065c66a3f020740c2324c", size = 346110, upload-time = "2025-11-09T20:49:21.817Z" }, ] [[package]] @@ -3129,27 +3149,27 @@ wheels = [ [[package]] name = "pynacl" -version = "1.6.0" +version = "1.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/c6/a3124dee667a423f2c637cfd262a54d67d8ccf3e160f3c50f622a85b7723/pynacl-1.6.0.tar.gz", hash = "sha256:cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2", size = 3505641, upload-time = "2025-09-10T23:39:22.308Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/46/aeca065d227e2265125aea590c9c47fbf5786128c9400ee0eb7c88931f06/pynacl-1.6.1.tar.gz", hash = "sha256:8d361dac0309f2b6ad33b349a56cd163c98430d409fa503b10b70b3ad66eaa1d", size = 3506616, upload-time = "2025-11-10T16:02:13.195Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/37/87c72df19857c5b3b47ace6f211a26eb862ada495cc96daa372d96048fca/pynacl-1.6.0-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e", size = 382610, upload-time = "2025-09-10T23:38:49.459Z" }, - { url = "https://files.pythonhosted.org/packages/0c/64/3ce958a5817fd3cc6df4ec14441c43fd9854405668d73babccf77f9597a3/pynacl-1.6.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990", size = 798744, upload-time = "2025-09-10T23:38:58.531Z" }, - { url = "https://files.pythonhosted.org/packages/e4/8a/3f0dd297a0a33fa3739c255feebd0206bb1df0b44c52fbe2caf8e8bc4425/pynacl-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850", size = 1397879, upload-time = "2025-09-10T23:39:00.44Z" }, - { url = "https://files.pythonhosted.org/packages/41/94/028ff0434a69448f61348d50d2c147dda51aabdd4fbc93ec61343332174d/pynacl-1.6.0-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64", size = 833907, upload-time = "2025-09-10T23:38:50.936Z" }, - { url = "https://files.pythonhosted.org/packages/52/bc/a5cff7f8c30d5f4c26a07dfb0bcda1176ab8b2de86dda3106c00a02ad787/pynacl-1.6.0-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf", size = 1436649, upload-time = "2025-09-10T23:38:52.783Z" }, - { url = "https://files.pythonhosted.org/packages/7a/20/c397be374fd5d84295046e398de4ba5f0722dc14450f65db76a43c121471/pynacl-1.6.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7", size = 817142, upload-time = "2025-09-10T23:38:54.4Z" }, - { url = "https://files.pythonhosted.org/packages/12/30/5efcef3406940cda75296c6d884090b8a9aad2dcc0c304daebb5ae99fb4a/pynacl-1.6.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442", size = 1401794, upload-time = "2025-09-10T23:38:56.614Z" }, - { url = "https://files.pythonhosted.org/packages/be/e1/a8fe1248cc17ccb03b676d80fa90763760a6d1247da434844ea388d0816c/pynacl-1.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d", size = 772161, upload-time = "2025-09-10T23:39:01.93Z" }, - { url = "https://files.pythonhosted.org/packages/a3/76/8a62702fb657d6d9104ce13449db221a345665d05e6a3fdefb5a7cafd2ad/pynacl-1.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90", size = 1370720, upload-time = "2025-09-10T23:39:03.531Z" }, - { url = "https://files.pythonhosted.org/packages/6d/38/9e9e9b777a1c4c8204053733e1a0269672c0bd40852908c9ad6b6eaba82c/pynacl-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736", size = 791252, upload-time = "2025-09-10T23:39:05.058Z" }, - { url = "https://files.pythonhosted.org/packages/63/ef/d972ce3d92ae05c9091363cf185e8646933f91c376e97b8be79ea6e96c22/pynacl-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419", size = 1362910, upload-time = "2025-09-10T23:39:06.924Z" }, - { url = "https://files.pythonhosted.org/packages/35/2c/ee0b373a1861f66a7ca8bdb999331525615061320dd628527a50ba8e8a60/pynacl-1.6.0-cp38-abi3-win32.whl", hash = "sha256:dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d", size = 226461, upload-time = "2025-09-10T23:39:11.894Z" }, - { url = "https://files.pythonhosted.org/packages/75/f7/41b6c0b9dd9970173b6acc026bab7b4c187e4e5beef2756d419ad65482da/pynacl-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1", size = 238802, upload-time = "2025-09-10T23:39:08.966Z" }, - { url = "https://files.pythonhosted.org/packages/8e/0f/462326910c6172fa2c6ed07922b22ffc8e77432b3affffd9e18f444dbfbb/pynacl-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2", size = 183846, upload-time = "2025-09-10T23:39:10.552Z" }, + { url = "https://files.pythonhosted.org/packages/49/41/3cfb3b4f3519f6ff62bf71bf1722547644bcfb1b05b8fdbdc300249ba113/pynacl-1.6.1-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:a6f9fd6d6639b1e81115c7f8ff16b8dedba1e8098d2756275d63d208b0e32021", size = 387591, upload-time = "2025-11-10T16:01:49.1Z" }, + { url = "https://files.pythonhosted.org/packages/18/21/b8a6563637799f617a3960f659513eccb3fcc655d5fc2be6e9dc6416826f/pynacl-1.6.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e49a3f3d0da9f79c1bec2aa013261ab9fa651c7da045d376bd306cf7c1792993", size = 798866, upload-time = "2025-11-10T16:01:55.688Z" }, + { url = "https://files.pythonhosted.org/packages/e8/6c/dc38033bc3ea461e05ae8f15a81e0e67ab9a01861d352ae971c99de23e7c/pynacl-1.6.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7713f8977b5d25f54a811ec9efa2738ac592e846dd6e8a4d3f7578346a841078", size = 1398001, upload-time = "2025-11-10T16:01:57.101Z" }, + { url = "https://files.pythonhosted.org/packages/9f/05/3ec0796a9917100a62c5073b20c4bce7bf0fea49e99b7906d1699cc7b61b/pynacl-1.6.1-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5a3becafc1ee2e5ea7f9abc642f56b82dcf5be69b961e782a96ea52b55d8a9fc", size = 834024, upload-time = "2025-11-10T16:01:50.228Z" }, + { url = "https://files.pythonhosted.org/packages/f0/b7/ae9982be0f344f58d9c64a1c25d1f0125c79201634efe3c87305ac7cb3e3/pynacl-1.6.1-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4ce50d19f1566c391fedc8dc2f2f5be265ae214112ebe55315e41d1f36a7f0a9", size = 1436766, upload-time = "2025-11-10T16:01:51.886Z" }, + { url = "https://files.pythonhosted.org/packages/b4/51/b2ccbf89cf3025a02e044dd68a365cad593ebf70f532299f2c047d2b7714/pynacl-1.6.1-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:543f869140f67d42b9b8d47f922552d7a967e6c116aad028c9bfc5f3f3b3a7b7", size = 817275, upload-time = "2025-11-10T16:01:53.351Z" }, + { url = "https://files.pythonhosted.org/packages/a8/6c/dd9ee8214edf63ac563b08a9b30f98d116942b621d39a751ac3256694536/pynacl-1.6.1-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a2bb472458c7ca959aeeff8401b8efef329b0fc44a89d3775cffe8fad3398ad8", size = 1401891, upload-time = "2025-11-10T16:01:54.587Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c1/97d3e1c83772d78ee1db3053fd674bc6c524afbace2bfe8d419fd55d7ed1/pynacl-1.6.1-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:3206fa98737fdc66d59b8782cecc3d37d30aeec4593d1c8c145825a345bba0f0", size = 772291, upload-time = "2025-11-10T16:01:58.111Z" }, + { url = "https://files.pythonhosted.org/packages/4d/ca/691ff2fe12f3bb3e43e8e8df4b806f6384593d427f635104d337b8e00291/pynacl-1.6.1-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:53543b4f3d8acb344f75fd4d49f75e6572fce139f4bfb4815a9282296ff9f4c0", size = 1370839, upload-time = "2025-11-10T16:01:59.252Z" }, + { url = "https://files.pythonhosted.org/packages/30/27/06fe5389d30391fce006442246062cc35773c84fbcad0209fbbf5e173734/pynacl-1.6.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:319de653ef84c4f04e045eb250e6101d23132372b0a61a7acf91bac0fda8e58c", size = 791371, upload-time = "2025-11-10T16:02:01.075Z" }, + { url = "https://files.pythonhosted.org/packages/2c/7a/e2bde8c9d39074a5aa046c7d7953401608d1f16f71e237f4bef3fb9d7e49/pynacl-1.6.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:262a8de6bba4aee8a66f5edf62c214b06647461c9b6b641f8cd0cb1e3b3196fe", size = 1363031, upload-time = "2025-11-10T16:02:02.656Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b6/63fd77264dae1087770a1bb414bc604470f58fbc21d83822fc9c76248076/pynacl-1.6.1-cp38-abi3-win32.whl", hash = "sha256:9fd1a4eb03caf8a2fe27b515a998d26923adb9ddb68db78e35ca2875a3830dde", size = 226585, upload-time = "2025-11-10T16:02:07.116Z" }, + { url = "https://files.pythonhosted.org/packages/12/c8/b419180f3fdb72ab4d45e1d88580761c267c7ca6eda9a20dcbcba254efe6/pynacl-1.6.1-cp38-abi3-win_amd64.whl", hash = "sha256:a569a4069a7855f963940040f35e87d8bc084cb2d6347428d5ad20550a0a1a21", size = 238923, upload-time = "2025-11-10T16:02:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/35/76/c34426d532e4dce7ff36e4d92cb20f4cbbd94b619964b93d24e8f5b5510f/pynacl-1.6.1-cp38-abi3-win_arm64.whl", hash = "sha256:5953e8b8cfadb10889a6e7bd0f53041a745d1b3d30111386a1bb37af171e6daf", size = 183970, upload-time = "2025-11-10T16:02:05.786Z" }, ] [[package]] @@ -3950,6 +3970,37 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/34/db/b10e48aa8fff7407e67470363eac595018441cf32d5e1001567a7aeba5d2/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:af248a825037ef591efbf6ed20cc5faa03d3b47b9e5a2230a529eeee1c1fc3ef", size = 82616, upload-time = "2025-10-07T21:16:34.951Z" }, ] +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + [[package]] name = "whitenoise" version = "6.11.0"