Features:
1) Userless orders will be merged on user's registration by their phone number and/or email. Added Viewset action "merge_recently_viewed" so recently viewed products may be stored on server's side. 2) Added comprehensive products' filtering by category(support for including subcategories) Fixes: I18N
This commit is contained in:
parent
e7bf6cf912
commit
18f3b9d2e8
87 changed files with 5937 additions and 3926 deletions
134
core/filters.py
134
core/filters.py
|
|
@ -5,6 +5,7 @@ import uuid
|
|||
from django.db.models import Avg, FloatField, OuterRef, Q, Subquery, Value
|
||||
from django.db.models.functions import Coalesce
|
||||
from django.utils.http import urlsafe_base64_decode
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_filters import (
|
||||
BaseInFilter,
|
||||
BooleanFilter,
|
||||
|
|
@ -33,20 +34,27 @@ class CaseInsensitiveListFilter(BaseInFilter, CharFilter):
|
|||
|
||||
|
||||
class ProductFilter(FilterSet):
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label="UUID")
|
||||
name = CharFilter(field_name="name", lookup_expr="icontains", label="Name")
|
||||
categories = CaseInsensitiveListFilter(field_name="category__name", label="Categories")
|
||||
category_uuid = CharFilter(field_name="category__uuid", lookup_expr="exact", label="Category")
|
||||
category_slugs = CaseInsensitiveListFilter(field_name="category__slug", label="Categories Slug")
|
||||
tags = CaseInsensitiveListFilter(field_name="tags__tag_name", label="Tags")
|
||||
min_price = NumberFilter(field_name="stocks__price", lookup_expr="gte", label="Min Price")
|
||||
max_price = NumberFilter(field_name="stocks__price", lookup_expr="lte", label="Max Price")
|
||||
is_active = BooleanFilter(field_name="is_active", label="Is Active")
|
||||
brand = CharFilter(field_name="brand__name", lookup_expr="iexact", label="Brand")
|
||||
attributes = CharFilter(method="filter_attributes", label="Attributes")
|
||||
quantity = NumberFilter(field_name="stocks__quantity", lookup_expr="gt", label="Quantity")
|
||||
slug = CharFilter(field_name="slug", lookup_expr="exact", label="Slug")
|
||||
is_digital = BooleanFilter(field_name="is_digital", label="Is Digital")
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||
name = CharFilter(field_name="name", lookup_expr="icontains", label=_("Name"))
|
||||
categories = CaseInsensitiveListFilter(field_name="category__name", label=_("Categories"))
|
||||
category_uuid = CharFilter(
|
||||
method="filter_category",
|
||||
label="Category (UUID)"
|
||||
)
|
||||
categories_slugs = CaseInsensitiveListFilter(field_name="category__slug", label=_("Categories Slugs"))
|
||||
tags = CaseInsensitiveListFilter(field_name="tags__tag_name", label=_("Tags"))
|
||||
min_price = NumberFilter(field_name="stocks__price", lookup_expr="gte", label=_("Min Price"))
|
||||
max_price = NumberFilter(field_name="stocks__price", lookup_expr="lte", label=_("Max Price"))
|
||||
is_active = BooleanFilter(field_name="is_active", label=_("Is Active"))
|
||||
brand = CharFilter(field_name="brand__name", lookup_expr="iexact", label=_("Brand"))
|
||||
attributes = CharFilter(method="filter_attributes", label=_("Attributes"))
|
||||
quantity = NumberFilter(field_name="stocks__quantity", lookup_expr="gt", label=_("Quantity"))
|
||||
slug = CharFilter(field_name="slug", lookup_expr="exact", label=_("Slug"))
|
||||
is_digital = BooleanFilter(field_name="is_digital", label=_("Is Digital"))
|
||||
include_subcategories = BooleanFilter(
|
||||
method="filter_include_flag",
|
||||
label=_("Include sub-categories")
|
||||
)
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
@ -101,6 +109,10 @@ class ProductFilter(FilterSet):
|
|||
)
|
||||
)
|
||||
|
||||
def filter_include_flag(self, queryset, name, value):
|
||||
# just a placeholder method
|
||||
return queryset
|
||||
|
||||
def filter_attributes(self, queryset, _name, value):
|
||||
if not value:
|
||||
return queryset
|
||||
|
|
@ -163,6 +175,24 @@ class ProductFilter(FilterSet):
|
|||
|
||||
return queryset
|
||||
|
||||
def filter_category(self, queryset, name, value):
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
include = self.data.get("include_subcategories")
|
||||
include_children = str(include).lower() in ("1", "true", "t", "yes")
|
||||
|
||||
try:
|
||||
root = Category.objects.get(uuid=value)
|
||||
except Category.DoesNotExist:
|
||||
return queryset.none()
|
||||
|
||||
if include_children:
|
||||
descendants = root.get_descendants(include_self=True)
|
||||
return queryset.filter(category__in=descendants)
|
||||
else:
|
||||
return queryset.filter(category__uuid=value)
|
||||
|
||||
@staticmethod
|
||||
def _infer_type(value):
|
||||
try:
|
||||
|
|
@ -189,21 +219,12 @@ class ProductFilter(FilterSet):
|
|||
|
||||
@property
|
||||
def qs(self):
|
||||
"""
|
||||
Override the queryset property to annotate a “rating” field
|
||||
when the ordering parameters include “rating”. This makes ordering
|
||||
by rating possible.
|
||||
"""
|
||||
qs = super().qs
|
||||
|
||||
# Check if ordering by rating is requested (could be "rating" or "-rating")
|
||||
ordering_param = self.data.get("order_by", "")
|
||||
if ordering_param:
|
||||
order_fields = [field.strip() for field in ordering_param.split(",")]
|
||||
if any(field.lstrip("-") == "rating" for field in order_fields):
|
||||
# Annotate each product with its average rating.
|
||||
# Here we use a Subquery to calculate the average rating from the Feedback model.
|
||||
# Adjust the filter in Feedback.objects.filter(...) if your relationships differ.
|
||||
feedback_qs = (
|
||||
Feedback.objects.filter(order_product__product_id=OuterRef("pk"))
|
||||
.values("order_product__product_id")
|
||||
|
|
@ -220,26 +241,18 @@ class ProductFilter(FilterSet):
|
|||
|
||||
class OrderFilter(FilterSet):
|
||||
search = CharFilter(
|
||||
method='filter_search',
|
||||
label='Search (ID, product name or part number)',
|
||||
method="filter_search",
|
||||
label=_("Search (ID, product name or part number)"),
|
||||
)
|
||||
|
||||
min_buy_time = DateTimeFilter(
|
||||
field_name='buy_time',
|
||||
lookup_expr='gte',
|
||||
label='Bought after (inclusive)'
|
||||
)
|
||||
max_buy_time = DateTimeFilter(
|
||||
field_name='buy_time',
|
||||
lookup_expr='lte',
|
||||
label='Bought before (inclusive)'
|
||||
)
|
||||
min_buy_time = DateTimeFilter(field_name="buy_time", lookup_expr="gte", label=_("Bought after (inclusive)"))
|
||||
max_buy_time = DateTimeFilter(field_name="buy_time", lookup_expr="lte", label=_("Bought before (inclusive)"))
|
||||
|
||||
uuid = UUIDFilter(field_name='uuid', lookup_expr='exact')
|
||||
user_email = CharFilter(field_name='user__email', lookup_expr='iexact')
|
||||
user = UUIDFilter(field_name='user__uuid', lookup_expr='exact')
|
||||
status = CharFilter(field_name='status', lookup_expr='icontains', label='Status')
|
||||
human_readable_id = CharFilter(field_name='human_readable_id', lookup_expr='exact')
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
||||
user = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||
status = CharFilter(field_name="status", lookup_expr="icontains", label=_("Status"))
|
||||
human_readable_id = CharFilter(field_name="human_readable_id", lookup_expr="exact", label=_("Human Readable ID"))
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
@ -270,21 +283,17 @@ class OrderFilter(FilterSet):
|
|||
]
|
||||
|
||||
def filter_search(self, queryset, _name, value):
|
||||
return (
|
||||
queryset
|
||||
.filter(
|
||||
Q(human_readable_id__icontains=value) |
|
||||
Q(order_products__product__name__icontains=value) |
|
||||
Q(order_products__product__partnumber__icontains=value)
|
||||
)
|
||||
.distinct()
|
||||
)
|
||||
return queryset.filter(
|
||||
Q(human_readable_id__icontains=value)
|
||||
| Q(order_products__product__name__icontains=value)
|
||||
| Q(order_products__product__partnumber__icontains=value)
|
||||
).distinct()
|
||||
|
||||
|
||||
class WishlistFilter(FilterSet):
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
user_email = CharFilter(field_name="user__email", lookup_expr="iexact")
|
||||
user = UUIDFilter(field_name="user__uuid", lookup_expr="exact")
|
||||
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
||||
user = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(("uuid", "uuid"), ("created", "created"), ("modified", "modified"), ("?", "random"))
|
||||
|
|
@ -297,9 +306,10 @@ class WishlistFilter(FilterSet):
|
|||
|
||||
class CategoryFilter(FilterSet):
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
name = CharFilter(field_name="name", lookup_expr="icontains")
|
||||
parent_uuid = CharFilter(method="filter_parent_uuid")
|
||||
slug = CharFilter(field_name="slug", lookup_expr="exact")
|
||||
name = CharFilter(field_name="name", lookup_expr="icontains", label=_("Name"))
|
||||
parent_uuid = CharFilter(method="filter_parent_uuid", label=_("Parent"))
|
||||
slug = CharFilter(field_name="slug", lookup_expr="exact", label=_("Slug"))
|
||||
tags = CaseInsensitiveListFilter(field_name="tags__tag_name", label=_("Tags"))
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
@ -311,13 +321,9 @@ class CategoryFilter(FilterSet):
|
|||
|
||||
class Meta:
|
||||
model = Category
|
||||
fields = ["uuid", "name", "parent_uuid", "slug"]
|
||||
fields = ["uuid", "name", "parent_uuid", "slug", "tags"]
|
||||
|
||||
def filter_parent_uuid(self, queryset, _name, value):
|
||||
"""
|
||||
If ?parent_uuid= or ?parent_uuid=null, return items with parent=None.
|
||||
Otherwise treat `value` as a real UUID and filter parent__uuid=value.
|
||||
"""
|
||||
if value in ("", "null", "None"):
|
||||
return queryset.filter(parent=None)
|
||||
|
||||
|
|
@ -331,8 +337,8 @@ class CategoryFilter(FilterSet):
|
|||
|
||||
class BrandFilter(FilterSet):
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
name = CharFilter(field_name="name", lookup_expr="icontains")
|
||||
categories = CaseInsensitiveListFilter(field_name="categories__uuid", lookup_expr="exact")
|
||||
name = CharFilter(field_name="name", lookup_expr="icontains", label=_("Name"))
|
||||
categories = CaseInsensitiveListFilter(field_name="categories__uuid", lookup_expr="exact", label=_("Categories"))
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
@ -348,9 +354,9 @@ class BrandFilter(FilterSet):
|
|||
|
||||
|
||||
class FeedbackFilter(FilterSet):
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
product_uuid = UUIDFilter(field_name="order_product__product__uuid", lookup_expr="exact")
|
||||
user_uuid = UUIDFilter(field_name="order_product__order__user__uuid", lookup_expr="exact")
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||
product_uuid = UUIDFilter(field_name="order_product__product__uuid", lookup_expr="exact", label=_("Product UUID"))
|
||||
user_uuid = UUIDFilter(field_name="order_product__order__user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -12,28 +12,29 @@ class Command(BaseCommand):
|
|||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
'-b', '--base-dir',
|
||||
"-b",
|
||||
"--base-dir",
|
||||
default=settings.BASE_DIR,
|
||||
help="Root directory to start searching for .po files (default: settings.BASE_DIR)."
|
||||
help="Root directory to start searching for .po files (default: settings.BASE_DIR).",
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
base_dir = options['base_dir']
|
||||
for root, dirs, files in os.walk(base_dir):
|
||||
base_dir = options["base_dir"]
|
||||
for root, _dirs, files in os.walk(base_dir):
|
||||
for fname in files:
|
||||
if not fname.endswith('.po'):
|
||||
if not fname.endswith(".po"):
|
||||
continue
|
||||
path = os.path.join(root, fname)
|
||||
self.stdout.write(f"→ Processing {path}")
|
||||
self._clean_po_file(path)
|
||||
|
||||
def _clean_po_file(self, filepath):
|
||||
with open(filepath, 'r', encoding='utf-8') as f:
|
||||
with open(filepath, encoding="utf-8") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
entries, curr = [], []
|
||||
for line in lines:
|
||||
if line.strip() == '':
|
||||
if line.strip() == "":
|
||||
if curr:
|
||||
entries.append(curr)
|
||||
curr = []
|
||||
|
|
@ -48,33 +49,30 @@ class Command(BaseCommand):
|
|||
for ent in entries:
|
||||
if ent and ent[0].startswith('msgid ""'):
|
||||
new_lines.extend(ent)
|
||||
new_lines.append('\n')
|
||||
new_lines.append("\n")
|
||||
continue
|
||||
|
||||
fuzzy_idx = next(
|
||||
(i for i, l in enumerate(ent) if l.startswith('#,') and 'fuzzy' in l),
|
||||
None
|
||||
)
|
||||
fuzzy_idx = next((i for i, line in enumerate(ent) if line.startswith("#,") and "fuzzy" in line), None)
|
||||
if fuzzy_idx is not None:
|
||||
flag_line = ent[fuzzy_idx]
|
||||
remaining = [f.strip() for f in flag_line[2:].split(',') if f.strip() != 'fuzzy']
|
||||
remaining = [f.strip() for f in flag_line[2:].split(",") if f.strip() != "fuzzy"]
|
||||
if remaining:
|
||||
ent[fuzzy_idx] = '#, ' + ', '.join(remaining) + '\n'
|
||||
ent[fuzzy_idx] = "#, " + ", ".join(remaining) + "\n"
|
||||
else:
|
||||
del ent[fuzzy_idx]
|
||||
|
||||
ent = [l for l in ent if not l.startswith('#| msgid')]
|
||||
ent = [line for line in ent if not line.startswith("#| msgid")]
|
||||
|
||||
ent = ['msgstr ""\n' if l.startswith('msgstr') else l for l in ent]
|
||||
ent = ['msgstr ""\n' if line.startswith("msgstr") else line for line in ent]
|
||||
|
||||
changed = True
|
||||
|
||||
new_lines.extend(ent)
|
||||
new_lines.append('\n')
|
||||
new_lines.append("\n")
|
||||
|
||||
if changed:
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
with open(filepath, "w", encoding="utf-8") as f:
|
||||
f.writelines(new_lines)
|
||||
self.stdout.write(self.style.SUCCESS(f" → Updated {filepath}"))
|
||||
else:
|
||||
self.stdout.write(f" (no fuzzy entries found)")
|
||||
self.stdout.write(" (no fuzzy entries found)")
|
||||
|
|
|
|||
|
|
@ -10,17 +10,9 @@ logger = logging.getLogger("django.request")
|
|||
|
||||
class AddressManager(models.Manager):
|
||||
def create(self, raw_data: str, **kwargs):
|
||||
"""
|
||||
Create an Address instance by geocoding the provided raw address string.
|
||||
|
||||
Args:
|
||||
raw_data (str): The raw address input from the user (e.g., '36 Mornington Rd Loughton England').
|
||||
**kwargs: Additional fields to pass to the Address model (e.g., user).
|
||||
"""
|
||||
if not raw_data:
|
||||
raise ValueError("'raw_data' (address string) must be provided.")
|
||||
|
||||
# Query Nominatim
|
||||
params = {
|
||||
"format": "json",
|
||||
"addressdetails": 1,
|
||||
|
|
@ -33,7 +25,6 @@ class AddressManager(models.Manager):
|
|||
raise ValueError(f"No geocoding result for address: {raw_data}")
|
||||
data = results[0]
|
||||
|
||||
# Parse address components
|
||||
addr = data.get("address", {})
|
||||
street = f"{addr.get('road', '') or addr.get('pedestrian', '')}, {addr.get('house_number', '')}"
|
||||
district = addr.get("city_district") or addr.get("suburb") or ""
|
||||
|
|
@ -42,7 +33,6 @@ class AddressManager(models.Manager):
|
|||
postal_code = addr.get("postcode") or ""
|
||||
country = addr.get("country") or ""
|
||||
|
||||
# Parse location
|
||||
try:
|
||||
lat = float(data.get("lat"))
|
||||
lon = float(data.get("lon"))
|
||||
|
|
@ -51,16 +41,15 @@ class AddressManager(models.Manager):
|
|||
location = None
|
||||
|
||||
try:
|
||||
address_line_1 = kwargs.pop('address_line_1')
|
||||
except KeyError:
|
||||
address_line_1 = kwargs.pop("address_line_1")
|
||||
except KeyError as e:
|
||||
raise ValueError("Missing required field 'address_line_1'") from e
|
||||
|
||||
try:
|
||||
address_line_2 = kwargs.pop('address_line_2')
|
||||
address_line_2 = kwargs.pop("address_line_2")
|
||||
except KeyError:
|
||||
address_line_2 = ""
|
||||
|
||||
# Create the model instance, storing both the input string and full API response
|
||||
return super().get_or_create(
|
||||
raw_data=raw_data,
|
||||
address_line=f"{address_line_1}, {address_line_2}",
|
||||
|
|
@ -70,6 +59,6 @@ class AddressManager(models.Manager):
|
|||
region=region,
|
||||
postal_code=postal_code,
|
||||
country=country,
|
||||
user=kwargs.pop('user'),
|
||||
user=kwargs.pop("user"),
|
||||
defaults={"api_response": data, "location": location},
|
||||
)[0]
|
||||
|
|
|
|||
|
|
@ -206,6 +206,12 @@ class Category(ExportModelOperationsMixin("category"), NiceModel, MPTTModel):
|
|||
editable=False,
|
||||
null=True,
|
||||
)
|
||||
tags = ManyToManyField(
|
||||
"core.CategoryTag",
|
||||
blank=True,
|
||||
help_text=_("tags that help describe or group this category"),
|
||||
verbose_name=_("category tags"),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
@ -550,8 +556,9 @@ class Order(ExportModelOperationsMixin("order"), NiceModel):
|
|||
def total_quantity(self) -> int:
|
||||
return sum([op.quantity for op in self.order_products.all()])
|
||||
|
||||
def add_product(self, product_uuid: str | None = None, attributes: Optional[list] = None,
|
||||
update_quantity: bool = True):
|
||||
def add_product(
|
||||
self, product_uuid: str | None = None, attributes: Optional[list] = None, update_quantity: bool = True
|
||||
):
|
||||
if attributes is None:
|
||||
attributes = []
|
||||
|
||||
|
|
@ -952,6 +959,31 @@ class ProductTag(ExportModelOperationsMixin("product_tag"), NiceModel):
|
|||
verbose_name_plural = _("product tags")
|
||||
|
||||
|
||||
class CategoryTag(ExportModelOperationsMixin("category_tag"), NiceModel):
|
||||
is_publicly_visible = True
|
||||
|
||||
tag_name = CharField(
|
||||
blank=False,
|
||||
null=False,
|
||||
max_length=255,
|
||||
help_text=_("internal tag identifier for the product tag"),
|
||||
verbose_name=_("tag name"),
|
||||
)
|
||||
name = CharField(
|
||||
max_length=255,
|
||||
help_text=_("user-friendly name for the product tag"),
|
||||
verbose_name=_("tag display name"),
|
||||
unique=True,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.tag_name
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("category tag")
|
||||
verbose_name_plural = _("category tags")
|
||||
|
||||
|
||||
class ProductImage(ExportModelOperationsMixin("product_image"), NiceModel):
|
||||
is_publicly_visible = True
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class EvibesPermission(permissions.BasePermission):
|
|||
if action == "create" and view.additional.get("create") == "ALLOW":
|
||||
return True
|
||||
|
||||
if action == 'retrieve' and view.additional.get("retrieve") == "ALLOW":
|
||||
if action == "retrieve" and view.additional.get("retrieve") == "ALLOW":
|
||||
return True
|
||||
|
||||
if action in self.USER_SCOPED_ACTIONS:
|
||||
|
|
@ -75,8 +75,12 @@ class EvibesPermission(permissions.BasePermission):
|
|||
return bool(perm_prefix and request.user.has_perm(f"{app_label}.{perm_prefix}_{model_name}"))
|
||||
|
||||
perm_prefix = self.ACTION_PERM_MAP.get(view.action)
|
||||
return bool(perm_prefix and request.user.has_perm(
|
||||
f"{view.queryset.model._meta.app_label}.{perm_prefix}_{view.queryset.model._meta.model_name}"))
|
||||
return bool(
|
||||
perm_prefix
|
||||
and request.user.has_perm(
|
||||
f"{view.queryset.model._meta.app_label}.{perm_prefix}_{view.queryset.model._meta.model_name}"
|
||||
)
|
||||
)
|
||||
|
||||
def has_queryset_permission(self, request, view, queryset):
|
||||
model = view.queryset.model
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework.exceptions import ValidationError
|
||||
from rest_framework.fields import CharField, DictField, FloatField, IntegerField
|
||||
from rest_framework.serializers import ModelSerializer, Serializer
|
||||
|
|
|
|||
|
|
@ -1,7 +1,17 @@
|
|||
from modeltranslation.decorators import register
|
||||
from modeltranslation.translator import TranslationOptions
|
||||
|
||||
from core.models import Attribute, AttributeGroup, AttributeValue, Brand, Category, Product, ProductTag, Promotion
|
||||
from core.models import (
|
||||
Attribute,
|
||||
AttributeGroup,
|
||||
AttributeValue,
|
||||
Brand,
|
||||
Category,
|
||||
CategoryTag,
|
||||
Product,
|
||||
ProductTag,
|
||||
Promotion,
|
||||
)
|
||||
|
||||
|
||||
@register(AttributeGroup)
|
||||
|
|
@ -39,6 +49,11 @@ class ProductTagOptions(TranslationOptions):
|
|||
fields = ("name",)
|
||||
|
||||
|
||||
@register(CategoryTag)
|
||||
class CategoryTagOptions(TranslationOptions):
|
||||
fields = ("name",)
|
||||
|
||||
|
||||
@register(Promotion)
|
||||
class PromotionOptions(TranslationOptions):
|
||||
fields = ("name", "description")
|
||||
|
|
|
|||
|
|
@ -229,10 +229,12 @@ class ProductViewSet(EvibesViewSet):
|
|||
lookup_val = kwargs.get(self.lookup_field)
|
||||
try:
|
||||
product = Product.objects.get(uuid=lookup_val)
|
||||
feedbacks = Feedback.objects.filter(order_product__product=product) if request.user.has_perm(
|
||||
"core.view_feedback") else Feedback.objects.filter(order_product__product=product, is_active=True)
|
||||
return Response(
|
||||
data=FeedbackDetailSerializer(feedbacks, many=True).data)
|
||||
feedbacks = (
|
||||
Feedback.objects.filter(order_product__product=product)
|
||||
if request.user.has_perm("core.view_feedback")
|
||||
else Feedback.objects.filter(order_product__product=product, is_active=True)
|
||||
)
|
||||
return Response(data=FeedbackDetailSerializer(feedbacks, many=True).data)
|
||||
except Product.DoesNotExist:
|
||||
name = "Product"
|
||||
return Response(status=status.HTTP_404_NOT_FOUND, data={"detail": _(f"{name} does not exist: {uuid}")})
|
||||
|
|
@ -267,8 +269,8 @@ class FeedbackViewSet(EvibesViewSet):
|
|||
|
||||
@extend_schema_view(**ORDER_SCHEMA)
|
||||
class OrderViewSet(EvibesViewSet):
|
||||
lookup_field = 'lookup_value'
|
||||
lookup_url_kwarg = 'lookup_value'
|
||||
lookup_field = "lookup_value"
|
||||
lookup_url_kwarg = "lookup_value"
|
||||
queryset = Order.objects.prefetch_related("order_products").all()
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_class = OrderFilter
|
||||
|
|
@ -279,9 +281,7 @@ class OrderViewSet(EvibesViewSet):
|
|||
"add_order_product": AddOrderProductSerializer,
|
||||
"remove_order_product": RemoveOrderProductSerializer,
|
||||
}
|
||||
additional = {
|
||||
"retrieve": "ALLOW"
|
||||
}
|
||||
additional = {"retrieve": "ALLOW"}
|
||||
|
||||
def get_serializer_class(self):
|
||||
return self.action_serializer_classes.get(self.action, super().get_serializer_class())
|
||||
|
|
@ -308,10 +308,7 @@ class OrderViewSet(EvibesViewSet):
|
|||
except ValueError:
|
||||
uuid_q = Q()
|
||||
|
||||
obj = get_object_or_404(
|
||||
qs,
|
||||
uuid_q | Q(human_readable_id=lookup_val)
|
||||
)
|
||||
obj = get_object_or_404(qs, uuid_q | Q(human_readable_id=lookup_val))
|
||||
self.check_object_permissions(self.request, obj)
|
||||
return obj
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ from core.views import CustomGraphQLView, CustomRedocView, CustomSwaggerView, fa
|
|||
from evibes.settings import SPECTACULAR_PLATFORM_SETTINGS
|
||||
|
||||
urlpatterns = [
|
||||
path('prometheus/', include('django_prometheus.urls')),
|
||||
path("prometheus/", include("django_prometheus.urls")),
|
||||
path(r"graphql/", csrf_exempt(CustomGraphQLView.as_view(graphiql=True, schema=schema))),
|
||||
path(
|
||||
r"docs/",
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from evibes.settings import SPECTACULAR_B2B_SETTINGS
|
|||
|
||||
urlpatterns = [
|
||||
# path(r'graphql/', csrf_exempt(CustomGraphQLView.as_view(graphiql=True, schema=schema))),
|
||||
path('prometheus/', include('django_prometheus.urls')),
|
||||
path("prometheus/", include("django_prometheus.urls")),
|
||||
path(
|
||||
r"docs/",
|
||||
SpectacularAPIView.as_view(urlconf="evibes.b2b_urls", custom_settings=SPECTACULAR_B2B_SETTINGS),
|
||||
|
|
|
|||
|
|
@ -69,15 +69,17 @@ class BlockInvalidHostMiddleware:
|
|||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
allowed_hosts = ["app:8000",
|
||||
"worker:8000",
|
||||
"beat:8000",
|
||||
"localhost:8000",
|
||||
"api.localhost:8000",
|
||||
"b2b.localhost:8000",
|
||||
"127.0.0.1:8000",
|
||||
"api.127.0.0.1:8000",
|
||||
"b2b.127.0.0.1:8000"]
|
||||
allowed_hosts = [
|
||||
"app:8000",
|
||||
"worker:8000",
|
||||
"beat:8000",
|
||||
"localhost:8000",
|
||||
"api.localhost:8000",
|
||||
"b2b.localhost:8000",
|
||||
"127.0.0.1:8000",
|
||||
"api.127.0.0.1:8000",
|
||||
"b2b.127.0.0.1:8000",
|
||||
]
|
||||
|
||||
if DEBUG:
|
||||
allowed_hosts += ["*"]
|
||||
|
|
|
|||
|
|
@ -2,22 +2,24 @@ import logging
|
|||
from os import getenv
|
||||
from pathlib import Path
|
||||
|
||||
EVIBES_VERSION = "2.8.0"
|
||||
EVIBES_VERSION = "2.8.5"
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
||||
|
||||
SECRET_KEY = getenv("SECRET_KEY")
|
||||
DEBUG = bool(int(getenv("DEBUG")))
|
||||
|
||||
ALLOWED_HOSTS = ["app:8000",
|
||||
"worker:8000",
|
||||
"beat:8000",
|
||||
"localhost:8000",
|
||||
"api.localhost:8000",
|
||||
"b2b.localhost:8000",
|
||||
"127.0.0.1:8000",
|
||||
"api.127.0.0.1:8000",
|
||||
"b2b.127.0.0.1:8000"]
|
||||
ALLOWED_HOSTS = [
|
||||
"app:8000",
|
||||
"worker:8000",
|
||||
"beat:8000",
|
||||
"localhost:8000",
|
||||
"api.localhost:8000",
|
||||
"b2b.localhost:8000",
|
||||
"127.0.0.1:8000",
|
||||
"api.127.0.0.1:8000",
|
||||
"b2b.127.0.0.1:8000",
|
||||
]
|
||||
|
||||
if DEBUG:
|
||||
ALLOWED_HOSTS += ["*"]
|
||||
|
|
@ -126,7 +128,7 @@ MIDDLEWARE = [
|
|||
"evibes.middleware.CustomLocaleMiddleware",
|
||||
"django_hosts.middleware.HostsResponseMiddleware",
|
||||
"djangorestframework_camel_case.middleware.CamelCaseMiddleWare",
|
||||
"django_prometheus.middleware.PrometheusAfterMiddleware"
|
||||
"django_prometheus.middleware.PrometheusAfterMiddleware",
|
||||
]
|
||||
|
||||
TEMPLATES = [
|
||||
|
|
|
|||
8
poetry.lock
generated
8
poetry.lock
generated
|
|
@ -4496,13 +4496,13 @@ xmlsec = ["xmlsec (>=0.6.1)"]
|
|||
|
||||
[[package]]
|
||||
name = "zipp"
|
||||
version = "3.22.0"
|
||||
version = "3.23.0"
|
||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
files = [
|
||||
{ file = "zipp-3.22.0-py3-none-any.whl", hash = "sha256:fe208f65f2aca48b81f9e6fd8cf7b8b32c26375266b009b413d45306b6148343" },
|
||||
{ file = "zipp-3.22.0.tar.gz", hash = "sha256:dd2f28c3ce4bc67507bfd3781d21b7bb2be31103b51a4553ad7d90b84e57ace5" },
|
||||
{ file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e" },
|
||||
{ file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" },
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
|
|
@ -4510,7 +4510,7 @@ check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
|
|||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["big-O", "importlib_resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
|
||||
test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
|
||||
type = ["pytest-mypy"]
|
||||
|
||||
[extras]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[tool.poetry]
|
||||
name = "eVibes"
|
||||
version = "2.8.0"
|
||||
version = "2.8.5"
|
||||
description = "eVibes is an open-source eCommerce backend service built with Django. It’s designed for flexibility, making it ideal for various use cases and learning Django skills. The project is easy to customize, allowing for straightforward editing and extension."
|
||||
authors = ["fureunoir <contact@fureunoir.com>"]
|
||||
readme = "README.md"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from core.docs.drf import BASE_ERRORS
|
|||
from vibes_auth.serializers import (
|
||||
ActivateEmailSerializer,
|
||||
ConfirmPasswordResetSerializer,
|
||||
MergeRecentlyViewedSerializer,
|
||||
ResetPasswordSerializer,
|
||||
UserSerializer,
|
||||
)
|
||||
|
|
@ -38,8 +39,7 @@ USER_SCHEMA = {
|
|||
request={
|
||||
"multipart/form-data": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"avatar": {"type": "string", "format": "binary"}},
|
||||
"properties": {"avatar": {"type": "string", "format": "binary"}},
|
||||
},
|
||||
},
|
||||
responses={
|
||||
|
|
@ -67,4 +67,12 @@ USER_SCHEMA = {
|
|||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"merge_recently_viewed": extend_schema(
|
||||
summary=_("merge client-stored recently viewed products"),
|
||||
request=MergeRecentlyViewedSerializer,
|
||||
responses={
|
||||
status.HTTP_202_ACCEPTED: UserSerializer,
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,29 +74,29 @@ msgstr "التحقق من الرمز المميز (التحديث أو الوص
|
|||
msgid "the token is valid"
|
||||
msgstr "الرمز المميز صالح"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "إنشاء مستخدم جديد"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "استرداد تفاصيل المستخدم"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "تحديث تفاصيل المستخدم"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "حذف مستخدم"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr ""
|
||||
"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة "
|
||||
"المرور"
|
||||
"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة"
|
||||
" المرور"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "التعامل مع تحميل الصورة الرمزية للمستخدم"
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "كلمات المرور غير متطابقة"
|
||||
|
||||
|
|
@ -117,6 +117,10 @@ msgstr "تنشيط حساب مستخدم"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "رابط التفعيل غير صالح أو أن الحساب مفعل بالفعل"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "دمج المنتجات التي تم عرضها مؤخراً المخزنة لدى العميل"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "معرّف المستخدم الذي تم ترميزه بـ b64 الذي أحال المستخدم الجديد إلينا."
|
||||
|
|
@ -144,8 +148,8 @@ msgstr "رقم هاتف مشوّه: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "تنسيق السمة غير صالح: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "رابط التفعيل غير صالح!"
|
||||
|
||||
|
|
@ -157,14 +161,14 @@ msgstr "تم تفعيل الحساب بالفعل..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "حدث خطأ ما: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "الرمز غير صالح!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"المنتجات التي شاهدها هذا المستخدم مؤخرًا (بحد أقصى 48)، بترتيب زمني عكسي."
|
||||
|
||||
|
|
@ -277,23 +281,23 @@ msgstr "الرمز المميز المدرج في القائمة السوداء"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "الرموز المميزة المدرجة في القائمة السوداء"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "لم يتم العثور على حساب نشط"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "تم إدراج الرمز المميز في القائمة السوداء"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "رمز غير صالح"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "لا توجد مطالبة معرف المستخدم في الرمز المميز"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "المستخدم غير موجود"
|
||||
|
||||
|
|
@ -416,10 +420,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "الرمز المميز غير صالح"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "تمت إعادة تعيين كلمة المرور بنجاح!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "لقد قمت بتفعيل الحساب بالفعل..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,27 +74,27 @@ msgstr "Ověření tokenu (obnovení nebo přístup)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Token je platný"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Vytvoření nového uživatele"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Získání údajů o uživateli"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Aktualizace údajů uživatele"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Odstranění uživatele"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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."
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Zpracování nahrávání avataru pro uživatele"
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Potvrzení obnovení hesla uživatele"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Hesla se neshodují"
|
||||
|
||||
|
|
@ -115,6 +115,10 @@ msgstr "Aktivace účtu uživatele"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Aktivační odkaz je neplatný nebo je účet již aktivován"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Sloučení naposledy zobrazených produktů uložených u klienta"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "Uuid uživatele s kódem b64, který nám nového uživatele doporučil."
|
||||
|
|
@ -142,8 +146,8 @@ msgstr "Chybně zadané telefonní číslo: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Nesprávný formát atributu: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Aktivační odkaz je neplatný!"
|
||||
|
||||
|
|
@ -155,14 +159,14 @@ msgstr "Účet byl již aktivován..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Něco se pokazilo: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token je neplatný!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Produkty, které si tento uživatel prohlížel naposledy (max. 48), seřazené v "
|
||||
"opačném pořadí."
|
||||
|
|
@ -276,23 +280,23 @@ msgstr "Token na černé listině"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Tokeny na černé listině"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Nebyl nalezen žádný aktivní účet"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token na černé listině"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Neplatný token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "V tokenu není deklarace uuid uživatele"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Uživatel neexistuje"
|
||||
|
||||
|
|
@ -376,8 +380,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:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -416,10 +419,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Token je neplatný"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Heslo bylo úspěšně resetováno!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Účet jste již aktivovali..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,29 +74,29 @@ msgstr "Bekræft et token (opdatering eller adgang)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Tokenet er gyldigt"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Opret en ny bruger"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Hent oplysninger om en bruger"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Opdater en brugers oplysninger"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Slet en bruger"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Håndter upload af avatar for en bruger"
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Bekræft nulstilling af en brugers adgangskode"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Adgangskoderne stemmer ikke overens"
|
||||
|
||||
|
|
@ -117,6 +117,10 @@ msgstr "Aktivér en brugers konto"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Aktiveringslinket er ugyldigt, eller kontoen er allerede aktiveret"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Flet nyligt viste produkter, der er gemt af klienten"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "Brugerens b64-kodede uuid, som henviste den nye bruger til os."
|
||||
|
|
@ -144,8 +148,8 @@ msgstr "Misdannet telefonnummer: {phone_number}."
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Ugyldigt attributformat: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Aktiveringslinket er ugyldigt!"
|
||||
|
||||
|
|
@ -157,14 +161,14 @@ msgstr "Kontoen er allerede aktiveret..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Noget gik galt: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token er ugyldig!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"De produkter, som denne bruger har set for nylig (maks. 48), i omvendt "
|
||||
"kronologisk rækkefølge."
|
||||
|
|
@ -278,23 +282,23 @@ msgstr "Sortlistet token"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Sortlistede tokens"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Ingen aktiv konto fundet"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token blacklistet"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Ugyldigt token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Ingen bruger-uuid-krav til stede i token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Brugeren findes ikke"
|
||||
|
||||
|
|
@ -379,8 +383,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:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -419,10 +422,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Tokenet er ugyldigt"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Adgangskoden er blevet nulstillet med succes!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Du har allerede aktiveret kontoen..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -75,29 +75,29 @@ msgstr "Überprüfen eines Tokens (Aktualisierung oder Zugriff)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Das Token ist gültig"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Einen neuen Benutzer anlegen"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Abrufen der Details eines Benutzers"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Aktualisieren der Benutzerdaten"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Einen Benutzer löschen"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Avatar-Upload für einen Benutzer verwalten"
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Passwörter stimmen nicht überein"
|
||||
|
||||
|
|
@ -118,11 +118,16 @@ msgstr "Aktivieren eines Benutzerkontos"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Aktivierungslink ist ungültig oder Konto bereits aktiviert"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr ""
|
||||
"Zusammenführen der vom Kunden gespeicherten, zuletzt angesehenen Produkte"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen "
|
||||
"hat."
|
||||
"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen"
|
||||
" hat."
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:61
|
||||
msgid "password too weak"
|
||||
|
|
@ -147,8 +152,8 @@ msgstr "Fehlerhafte Telefonnummer: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Ungültiges Attributformat: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Der Aktivierungslink ist ungültig!"
|
||||
|
||||
|
|
@ -160,14 +165,14 @@ msgstr "Das Konto wurde bereits aktiviert..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Etwas ist schief gelaufen: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token ist ungültig!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Die Produkte, die dieser Benutzer zuletzt angesehen hat (maximal 48), in "
|
||||
"umgekehrter chronologischer Reihenfolge."
|
||||
|
|
@ -282,23 +287,23 @@ msgstr "Token auf der schwarzen Liste"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Token auf der schwarzen Liste"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Kein aktives Konto gefunden"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token auf der schwarzen Liste"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Ungültiges Token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Kein Benutzer uuid-Anspruch im Token vorhanden"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Benutzer existiert nicht"
|
||||
|
||||
|
|
@ -344,8 +349,8 @@ msgstr ""
|
|||
#: vibes_auth/templates/user_reset_password_email.html:88
|
||||
msgid "if you did not send this request, please ignore this email."
|
||||
msgstr ""
|
||||
"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-"
|
||||
"Mail."
|
||||
"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese "
|
||||
"E-Mail."
|
||||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:89
|
||||
#, python-format
|
||||
|
|
@ -384,8 +389,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:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -424,10 +428,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Das Token ist ungültig"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Das Passwort wurde erfolgreich zurückgesetzt!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Sie haben das Konto bereits aktiviert..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -78,27 +78,27 @@ msgstr "Verify a token (refresh or access)."
|
|||
msgid "the token is valid"
|
||||
msgstr "The token is valid"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Create a new user"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Retrieve a user's details"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Update a user's details"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Delete a user"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr "Reset a user's password by sending a reset password email"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Handle avatar upload for a user"
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confirm a user's password reset"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Passwords do not match"
|
||||
|
||||
|
|
@ -119,6 +119,10 @@ msgstr "Activate a user's account"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Activation link is invalid or account already activated"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Merge client-stored recently viewed products"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "The user's b64-encoded uuid who referred the new user to us."
|
||||
|
|
@ -146,8 +150,8 @@ msgstr "Malformed phone number: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Invalid attribute format: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Activation link is invalid!"
|
||||
|
||||
|
|
@ -159,14 +163,14 @@ msgstr "Account has been already activated..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Something went wrong: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token is invalid!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"The products this user has viewed most recently (max 48), in reverse-"
|
||||
"chronological order."
|
||||
|
|
@ -280,23 +284,23 @@ msgstr "Blacklisted token"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Blacklisted tokens"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "No active account found"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token blacklisted"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Invalid token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "No user uuid claim present in token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "User does not exist"
|
||||
|
||||
|
|
@ -419,16 +423,13 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "The token is invalid"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Password has been reset successfully!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "You have already activated the account..."
|
||||
|
||||
#~ msgid "recently viewed products"
|
||||
#~ msgstr "Recently viewed products"
|
||||
|
||||
#~ msgid "recently viwed"
|
||||
#~ msgstr "Recently viewed"
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,27 +74,27 @@ msgstr "Verify a token (refresh or access)."
|
|||
msgid "the token is valid"
|
||||
msgstr "The token is valid"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Create a new user"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Retrieve a user's details"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Update a user's details"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Delete a user"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr "Reset a user's password by sending a reset password email"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Handle avatar upload for a user"
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confirm a user's password reset"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Passwords do not match"
|
||||
|
||||
|
|
@ -115,6 +115,10 @@ msgstr "Activate a user's account"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Activation link is invalid or account already activated"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Merge client-stored recently viewed products"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "The user's b64-encoded uuid who referred the new user to us."
|
||||
|
|
@ -142,8 +146,8 @@ msgstr "Malformed phone number: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Invalid attribute format: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Activation link is invalid!"
|
||||
|
||||
|
|
@ -155,14 +159,14 @@ msgstr "Account has been already activated..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Something went wrong: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token is invalid!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"The products this user has viewed most recently (max 48), in reverse-"
|
||||
"chronological order."
|
||||
|
|
@ -276,23 +280,23 @@ msgstr "Blacklisted token"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Blacklisted tokens"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "No active account found"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token blacklisted"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Invalid token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "No user uuid claim present in token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "User does not exist"
|
||||
|
||||
|
|
@ -415,10 +419,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "The token is invalid"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Password has been reset successfully!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "You have already activated the account..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,29 +74,29 @@ msgstr "Verificar un token (actualización o acceso)."
|
|||
msgid "the token is valid"
|
||||
msgstr "El token es válido"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Crear un nuevo usuario"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Recuperar los datos de un usuario"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Actualizar los datos de un usuario"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Eliminar un usuario"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Gestionar la subida de avatares de un usuario"
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confirmar el restablecimiento de la contraseña de un usuario"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Las contraseñas no coinciden"
|
||||
|
||||
|
|
@ -117,6 +117,10 @@ msgstr "Activar la cuenta de un usuario"
|
|||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Fusionar productos vistos recientemente almacenados por el cliente"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -145,8 +149,8 @@ msgstr "Número de teléfono malformado: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Formato de atributo no válido: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "El enlace de activación no es válido."
|
||||
|
||||
|
|
@ -158,14 +162,14 @@ msgstr "La cuenta ya ha sido activada..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Algo salió mal: {e!s}."
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "¡La ficha no es válida!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Los productos que este usuario ha visto más recientemente (máx. 48), en "
|
||||
"orden cronológico inverso."
|
||||
|
|
@ -279,23 +283,23 @@ msgstr "Ficha en la lista negra"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Fichas en la lista negra"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "No se ha encontrado ninguna cuenta activa"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Ficha en la lista negra"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Token no válido"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "No user uuid claim present in token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "El usuario no existe"
|
||||
|
||||
|
|
@ -418,10 +422,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "El token no es válido"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "La contraseña se ha restablecido correctamente."
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Ya ha activado la cuenta..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -76,29 +76,29 @@ msgstr "Vérifier un jeton (rafraîchissement ou accès)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Le jeton est valide"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Créer un nouvel utilisateur"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Récupérer les données d'un utilisateur"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Mettre à jour les coordonnées d'un utilisateur"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Supprimer un utilisateur"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Gérer le téléchargement d'un avatar pour un utilisateur"
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Les mots de passe ne correspondent pas"
|
||||
|
||||
|
|
@ -119,6 +119,10 @@ msgstr "Activer le compte d'un utilisateur"
|
|||
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é"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Fusionner les produits récemment consultés stockés par le client"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -148,8 +152,8 @@ msgstr "Numéro de téléphone malformé : {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Format d'attribut non valide : {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Le lien d'activation n'est pas valide !"
|
||||
|
||||
|
|
@ -161,17 +165,17 @@ msgstr "Le compte a déjà été activé..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Quelque chose a mal tourné : {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Le jeton n'est pas valide !"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Les produits que cet utilisateur a consultés le plus récemment (max 48), par "
|
||||
"ordre chronologique inverse."
|
||||
"Les produits que cet utilisateur a consultés le plus récemment (max 48), par"
|
||||
" ordre chronologique inverse."
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108
|
||||
msgid "groups"
|
||||
|
|
@ -285,23 +289,24 @@ msgstr "Jeton sur liste noire"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Jetons sur liste noire"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Aucun compte actif trouvé"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token sur liste noire"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Jeton non valide"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton"
|
||||
msgstr ""
|
||||
"Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "L'utilisateur n'existe pas"
|
||||
|
||||
|
|
@ -347,7 +352,8 @@ msgstr ""
|
|||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:88
|
||||
msgid "if you did not send this request, please ignore this email."
|
||||
msgstr "Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel."
|
||||
msgstr ""
|
||||
"Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel."
|
||||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:89
|
||||
#, python-format
|
||||
|
|
@ -370,8 +376,8 @@ msgid ""
|
|||
"thank you for signing up for %(project_name)s. please activate your account "
|
||||
"by clicking the button below:"
|
||||
msgstr ""
|
||||
"Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte "
|
||||
"en cliquant sur le bouton ci-dessous :"
|
||||
"Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte"
|
||||
" en cliquant sur le bouton ci-dessous :"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:95
|
||||
msgid ""
|
||||
|
|
@ -386,8 +392,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 :"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -426,10 +431,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Le jeton n'est pas valide"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Le mot de passe a été réinitialisé avec succès !"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Vous avez déjà activé le compte..."
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
@ -77,27 +77,27 @@ msgstr ""
|
|||
msgid "the token is valid"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -118,6 +118,10 @@ msgstr ""
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -145,8 +149,8 @@ msgstr ""
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -158,7 +162,7 @@ msgstr ""
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -277,23 +281,23 @@ msgstr ""
|
|||
msgid "blacklisted tokens"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -404,10 +408,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -75,29 +75,29 @@ msgstr "Verifica di un token (aggiornamento o accesso)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Il token è valido"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Creare un nuovo utente"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Recuperare i dettagli di un utente"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Aggiornare i dettagli di un utente"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Eliminare un utente"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Gestire il caricamento dell'avatar per un utente"
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confermare la reimpostazione della password di un utente"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Le password non corrispondono"
|
||||
|
||||
|
|
@ -118,6 +118,10 @@ msgstr "Attivare l'account di un utente"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Il link di attivazione non è valido o l'account è già stato attivato."
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Unire i prodotti memorizzati dal cliente e visti di recente"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "L'uuid b64-encoded dell'utente che ci ha segnalato il nuovo utente."
|
||||
|
|
@ -145,8 +149,8 @@ msgstr "Numero di telefono malformato: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Formato attributo non valido: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Il link di attivazione non è valido!"
|
||||
|
||||
|
|
@ -158,14 +162,14 @@ msgstr "L'account è già stato attivato..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Qualcosa è andato storto: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Il gettone non è valido!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"I prodotti che questo utente ha visualizzato più di recente (max 48), in "
|
||||
"ordine cronologico inverso."
|
||||
|
|
@ -281,23 +285,23 @@ msgstr "Token in lista nera"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Gettoni nella lista nera"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Nessun conto attivo trovato"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token nella lista nera"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Token non valido"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Nessuna richiesta di uuid utente presente nel token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "L'utente non esiste"
|
||||
|
||||
|
|
@ -420,10 +424,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Il token non è valido"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "La password è stata reimpostata con successo!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Avete già attivato l'account..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,27 +74,27 @@ msgstr "トークンを確認する(リフレッシュまたはアクセス)
|
|||
msgid "the token is valid"
|
||||
msgstr "トークンは有効です"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "新規ユーザーの作成"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "ユーザーの詳細を取得する"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "ユーザー情報の更新"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "ユーザーを削除する"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr "パスワード再設定メールを送信して、ユーザーのパスワードを再設定する。"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "ユーザーのアバターアップロードを処理する"
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "ユーザーのパスワード・リセットを確認する"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "パスワードが一致しない"
|
||||
|
||||
|
|
@ -113,9 +113,11 @@ msgstr "ユーザーアカウントの有効化"
|
|||
|
||||
#: vibes_auth/docs/drf/viewsets.py:66
|
||||
msgid "activation link is invalid or account already activated"
|
||||
msgstr ""
|
||||
"アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション"
|
||||
"されています。"
|
||||
msgstr "アクティベーションリンクが無効であるか、アカウントがすでにアクティベーションされています。"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "クライアントが最近閲覧した商品をマージする"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
|
|
@ -144,8 +146,8 @@ msgstr "不正な電話番号:{phone_number}。"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "無効な属性形式です:{attribute_pair}。"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "アクティベーションリンクが無効です!"
|
||||
|
||||
|
|
@ -157,14 +159,14 @@ msgstr "アカウントはすでに有効になっています..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "何かが間違っていた:{e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "トークンが無効です!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr "このユーザーが最近閲覧した商品(最大48件)を逆順に表示します。"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108
|
||||
|
|
@ -276,23 +278,23 @@ msgstr "ブラックリストトークン"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "ブラックリストに載ったトークン"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "アクティブなアカウントが見つかりません"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "トークンのブラックリスト入り"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "無効なトークン"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "トークンにユーザー uuid クレームが存在しない"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "ユーザーが存在しない"
|
||||
|
||||
|
|
@ -319,9 +321,7 @@ msgstr "こんにちは、%(user_first_name)sです、"
|
|||
msgid ""
|
||||
"we have received a request to reset your password. please reset your "
|
||||
"password by clicking the button below:"
|
||||
msgstr ""
|
||||
"パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワー"
|
||||
"ドをリセットしてください:"
|
||||
msgstr "パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワードをリセットしてください:"
|
||||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:84
|
||||
msgid "reset password"
|
||||
|
|
@ -331,9 +331,7 @@ msgstr "パスワードのリセット"
|
|||
msgid ""
|
||||
"if the button above does not work, please copy and paste the following URL "
|
||||
"into your web browser:"
|
||||
msgstr ""
|
||||
"上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付け"
|
||||
"てください:"
|
||||
msgstr "上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付けてください:"
|
||||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:88
|
||||
msgid "if you did not send this request, please ignore this email."
|
||||
|
|
@ -359,9 +357,7 @@ msgstr "アカウントの有効化"
|
|||
msgid ""
|
||||
"thank you for signing up for %(project_name)s. please activate your account "
|
||||
"by clicking the button below:"
|
||||
msgstr ""
|
||||
"%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックし"
|
||||
"てアカウントを有効にしてください:"
|
||||
msgstr "%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:95
|
||||
msgid ""
|
||||
|
|
@ -376,8 +372,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"
|
||||
" をウェブブラウザに貼り付けてください:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -408,18 +403,16 @@ msgstr "{config.PROJECT_NAME}。| パスワードのリセット"
|
|||
msgid ""
|
||||
"invalid phone number format. the number must be entered in the format: "
|
||||
"\"+999999999\". up to 15 digits allowed."
|
||||
msgstr ""
|
||||
"電話番号の形式が無効です。電話番号は次の形式で入力してください:"
|
||||
"\"+999999999\".15桁まで入力可能です。"
|
||||
msgstr "電話番号の形式が無効です。電話番号は次の形式で入力してください:\"+999999999\".15桁まで入力可能です。"
|
||||
|
||||
#: vibes_auth/views.py:57
|
||||
msgid "the token is invalid"
|
||||
msgstr "トークンが無効"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "パスワードのリセットに成功しました!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "あなたはすでにアカウントを有効にしています..."
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
@ -77,27 +77,27 @@ msgstr ""
|
|||
msgid "the token is valid"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -118,6 +118,10 @@ msgstr ""
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -145,8 +149,8 @@ msgstr ""
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -158,7 +162,7 @@ msgstr ""
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -277,23 +281,23 @@ msgstr ""
|
|||
msgid "blacklisted tokens"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -404,10 +408,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr ""
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,29 +74,29 @@ msgstr "Een token verifiëren (verversen of toegang)."
|
|||
msgid "the token is valid"
|
||||
msgstr "The token is valid"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Een nieuwe gebruiker maken"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "De gegevens van een gebruiker ophalen"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "De gegevens van een gebruiker bijwerken"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Een gebruiker verwijderen"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Avatar uploaden voor een gebruiker afhandelen"
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Bevestig het resetten van het wachtwoord van een gebruiker"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Wachtwoorden komen niet overeen"
|
||||
|
||||
|
|
@ -117,6 +117,10 @@ msgstr "Een gebruikersaccount activeren"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Activeringslink is ongeldig of account is al geactiveerd"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Laatst bekeken producten samenvoegen"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -146,8 +150,8 @@ msgstr "Misvormd telefoonnummer: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Ongeldig attribuutformaat: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Activeringslink is ongeldig!"
|
||||
|
||||
|
|
@ -159,14 +163,14 @@ msgstr "Account is al geactiveerd..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Er ging iets mis: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token is invalid!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"De producten die deze gebruiker het laatst heeft bekeken (max 48), in "
|
||||
"omgekeerd-chronologische volgorde."
|
||||
|
|
@ -280,23 +284,23 @@ msgstr "Token op zwarte lijst"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Tokens op de zwarte lijst"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Geen actieve account gevonden"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token op zwarte lijst"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Invalid token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Geen gebruiker uuid claim aanwezig in token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Gebruiker bestaat niet"
|
||||
|
||||
|
|
@ -324,8 +328,8 @@ msgid ""
|
|||
"we have received a request to reset your password. please reset your "
|
||||
"password by clicking the button below:"
|
||||
msgstr ""
|
||||
"We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik "
|
||||
"op de knop hieronder om je wachtwoord opnieuw in te stellen:"
|
||||
"We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik"
|
||||
" op de knop hieronder om je wachtwoord opnieuw in te stellen:"
|
||||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:84
|
||||
msgid "reset password"
|
||||
|
|
@ -364,8 +368,8 @@ msgid ""
|
|||
"thank you for signing up for %(project_name)s. please activate your account "
|
||||
"by clicking the button below:"
|
||||
msgstr ""
|
||||
"Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op "
|
||||
"de onderstaande knop te klikken:"
|
||||
"Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op"
|
||||
" de onderstaande knop te klikken:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:95
|
||||
msgid ""
|
||||
|
|
@ -419,10 +423,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Het token is ongeldig"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Wachtwoord is succesvol gereset!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Je hebt de account al geactiveerd..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -52,7 +52,8 @@ msgstr "Uzyskanie pary tokenów"
|
|||
|
||||
#: vibes_auth/docs/drf/views.py:16
|
||||
msgid "obtain a token pair (refresh and access) for authentication."
|
||||
msgstr "Uzyskanie pary tokenów (odświeżenie i dostęp) w celu uwierzytelnienia."
|
||||
msgstr ""
|
||||
"Uzyskanie pary tokenów (odświeżenie i dostęp) w celu uwierzytelnienia."
|
||||
|
||||
#: vibes_auth/docs/drf/views.py:35
|
||||
msgid "refresh a token pair"
|
||||
|
|
@ -74,29 +75,29 @@ msgstr "Weryfikacja tokena (odświeżenie lub dostęp)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Token jest ważny"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Tworzenie nowego użytkownika"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Pobieranie danych użytkownika"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Aktualizacja danych użytkownika"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Usuwanie użytkownika"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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."
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Obsługa przesyłania awatara dla użytkownika"
|
||||
|
||||
|
|
@ -105,7 +106,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Potwierdzenie zresetowania hasła użytkownika"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Hasła nie są zgodne"
|
||||
|
||||
|
|
@ -117,6 +118,10 @@ msgstr "Aktywacja konta użytkownika"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Link aktywacyjny jest nieprawidłowy lub konto zostało już aktywowane."
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Scalanie ostatnio oglądanych produktów przechowywanych przez klienta"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -146,8 +151,8 @@ msgstr "Zniekształcony numer telefonu: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Nieprawidłowy format atrybutu: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Link aktywacyjny jest nieprawidłowy!"
|
||||
|
||||
|
|
@ -159,14 +164,14 @@ msgstr "Konto zostało już aktywowane..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Coś poszło nie tak: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token jest nieprawidłowy!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Produkty ostatnio przeglądane przez tego użytkownika (maks. 48), w "
|
||||
"kolejności odwrotnej do chronologicznej."
|
||||
|
|
@ -280,23 +285,23 @@ msgstr "Token na czarnej liście"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Tokeny znajdujące się na czarnej liście"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Nie znaleziono aktywnego konta"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token na czarnej liście"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Nieprawidłowy token"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Brak oświadczenia uuid użytkownika w tokenie"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Użytkownik nie istnieje"
|
||||
|
||||
|
|
@ -412,17 +417,17 @@ msgid ""
|
|||
"invalid phone number format. the number must be entered in the format: "
|
||||
"\"+999999999\". up to 15 digits allowed."
|
||||
msgstr ""
|
||||
"Nieprawidłowy format numeru telefonu. Numer musi być wprowadzony w formacie: "
|
||||
"\"+999999999\". Dozwolone do 15 cyfr."
|
||||
"Nieprawidłowy format numeru telefonu. Numer musi być wprowadzony w formacie:"
|
||||
" \"+999999999\". Dozwolone do 15 cyfr."
|
||||
|
||||
#: vibes_auth/views.py:57
|
||||
msgid "the token is invalid"
|
||||
msgstr "Token jest nieprawidłowy"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Hasło zostało pomyślnie zresetowane!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Konto zostało już aktywowane..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,28 +74,28 @@ msgstr "Verificar um token (atualização ou acesso)."
|
|||
msgid "the token is valid"
|
||||
msgstr "O token é válido"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Criar um novo usuário"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Recuperar os detalhes de um usuário"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Atualizar os detalhes de um usuário"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Excluir um usuário"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Manipular o upload do avatar de um usuário"
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confirmar a redefinição de senha de um usuário"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "As senhas não correspondem"
|
||||
|
||||
|
|
@ -116,6 +116,10 @@ msgstr "Ativar a conta de um usuário"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "O link de ativação é inválido ou a conta já está ativada"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Mesclar produtos recentemente visualizados armazenados pelo cliente"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "O uuid codificado em b64 do usuário que nos indicou o novo usuário."
|
||||
|
|
@ -143,8 +147,8 @@ msgstr "Número de telefone malformado: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Formato de atributo inválido: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "O link de ativação é inválido!"
|
||||
|
||||
|
|
@ -156,17 +160,17 @@ msgstr "A conta já foi ativada..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Algo deu errado: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "O token é inválido!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Os produtos que esse usuário visualizou mais recentemente (máximo de 48), em "
|
||||
"ordem cronológica inversa."
|
||||
"Os produtos que esse usuário visualizou mais recentemente (máximo de 48), em"
|
||||
" ordem cronológica inversa."
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108
|
||||
msgid "groups"
|
||||
|
|
@ -277,23 +281,23 @@ msgstr "Token na lista negra"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Tokens na lista negra"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Nenhuma conta ativa encontrada"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token na lista negra"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Token inválido"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "Nenhuma reivindicação de uuid de usuário presente no token"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "O usuário não existe"
|
||||
|
||||
|
|
@ -333,8 +337,8 @@ msgid ""
|
|||
"if the button above does not work, please copy and paste the following URL "
|
||||
"into your web browser:"
|
||||
msgstr ""
|
||||
"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador "
|
||||
"da Web:"
|
||||
"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador"
|
||||
" da Web:"
|
||||
|
||||
#: vibes_auth/templates/user_reset_password_email.html:88
|
||||
msgid "if you did not send this request, please ignore this email."
|
||||
|
|
@ -416,10 +420,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "O token é inválido"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "A senha foi redefinida com sucesso!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Você já ativou a conta..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -75,29 +75,29 @@ msgstr "Verificarea unui jeton (reîmprospătare sau acces)."
|
|||
msgid "the token is valid"
|
||||
msgstr "Jetonul este valid"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Creați un utilizator nou"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Recuperarea detaliilor unui utilizator"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Actualizarea detaliilor unui utilizator"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Ștergeți un utilizator"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
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"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Gestionarea încărcării avatarului pentru un utilizator"
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Confirmați resetarea parolei unui utilizator"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Parolele nu se potrivesc"
|
||||
|
||||
|
|
@ -118,6 +118,10 @@ msgstr "Activați contul unui utilizator"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Linkul de activare este invalid sau contul este deja activat"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "Fuzionați produsele recent vizualizate stocate de client"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -146,8 +150,8 @@ msgstr "Număr de telefon malformat: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Format de atribut invalid: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Linkul de activare este invalid!"
|
||||
|
||||
|
|
@ -159,14 +163,14 @@ msgstr "Contul a fost deja activat..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Ceva nu a mers bine: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Token-ul nu este valabil!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Produsele pe care acest utilizator le-a vizualizat cel mai recent (max 48), "
|
||||
"în ordine cronologică inversă."
|
||||
|
|
@ -280,23 +284,23 @@ msgstr "Token pe lista neagră"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Jetoane pe lista neagră"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Nu s-a găsit niciun cont activ"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Token pe lista neagră"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Jeton invalid"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "În jeton nu este prezentă nicio cerere uuid a utilizatorului"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Utilizatorul nu există"
|
||||
|
||||
|
|
@ -380,8 +384,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:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -420,10 +423,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Jetonul nu este valabil"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Parola a fost resetată cu succes!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Ați activat deja contul..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,29 +74,29 @@ msgstr "Проверка маркера (обновление или досту
|
|||
msgid "the token is valid"
|
||||
msgstr "Токен действителен"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "Создайте нового пользователя"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "Получение информации о пользователе"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "Обновление данных пользователя"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "Удалить пользователя"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr ""
|
||||
"Сброс пароля пользователя путем отправки электронного сообщения о сбросе "
|
||||
"пароля"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "Обработка загрузки аватара для пользователя"
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "Подтверждение сброса пароля пользователя"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "Пароли не совпадают"
|
||||
|
||||
|
|
@ -117,6 +117,11 @@ msgstr "Активация учетной записи пользователя"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "Ссылка на активацию недействительна или аккаунт уже активирован"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr ""
|
||||
"Объедините недавно просмотренные продукты, хранящиеся в памяти клиента"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr ""
|
||||
|
|
@ -146,8 +151,8 @@ msgstr "Некорректный номер телефона: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "Недопустимый формат атрибута: {attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "Ссылка на активацию недействительна!"
|
||||
|
||||
|
|
@ -159,17 +164,17 @@ msgstr "Аккаунт уже активирован..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "Что-то пошло не так: {e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "Токен недействителен!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr ""
|
||||
"Продукты, которые этот пользователь просматривал в последнее время (не более "
|
||||
"48), в обратном хронологическом порядке."
|
||||
"Продукты, которые этот пользователь просматривал в последнее время (не более"
|
||||
" 48), в обратном хронологическом порядке."
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108
|
||||
msgid "groups"
|
||||
|
|
@ -280,23 +285,23 @@ msgstr "Токен в черном списке"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "Токены, внесенные в черный список"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "Активная учетная запись не найдена"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "Токен занесен в черный список"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "Неверный токен"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "В токене отсутствует утверждение uuid пользователя"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "Пользователь не существует"
|
||||
|
||||
|
|
@ -381,8 +386,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"
|
||||
" в свой веб-браузер:"
|
||||
|
||||
#: vibes_auth/templates/user_verification_email.html:101
|
||||
|
|
@ -421,10 +425,10 @@ msgstr ""
|
|||
msgid "the token is invalid"
|
||||
msgstr "Токен недействителен"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "Пароль был успешно сброшен!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "Вы уже активировали учетную запись..."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-06-08 19:42+0100\n"
|
||||
"POT-Creation-Date: 2025-06-10 03:32+0100\n"
|
||||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -74,27 +74,27 @@ msgstr "验证令牌(刷新或访问)。"
|
|||
msgid "the token is valid"
|
||||
msgstr "令牌有效"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:15
|
||||
#: vibes_auth/docs/drf/viewsets.py:16
|
||||
msgid "create a new user"
|
||||
msgstr "创建新用户"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:19
|
||||
#: vibes_auth/docs/drf/viewsets.py:20
|
||||
msgid "retrieve a user's details"
|
||||
msgstr "读取用户详细信息"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:23
|
||||
#: vibes_auth/docs/drf/viewsets.py:24
|
||||
msgid "update a user's details"
|
||||
msgstr "更新用户信息"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:28
|
||||
#: vibes_auth/docs/drf/viewsets.py:29
|
||||
msgid "delete a user"
|
||||
msgstr "删除用户"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:32
|
||||
#: vibes_auth/docs/drf/viewsets.py:33
|
||||
msgid "reset a user's password by sending a reset password email"
|
||||
msgstr "通过发送重置密码电子邮件重置用户密码"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:37
|
||||
#: vibes_auth/docs/drf/viewsets.py:38
|
||||
msgid "handle avatar upload for a user"
|
||||
msgstr "处理用户的头像上传"
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ msgid "confirm a user's password reset"
|
|||
msgstr "确认用户密码重置"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:57 vibes_auth/graphene/mutations.py:307
|
||||
#: vibes_auth/viewsets.py:72
|
||||
#: vibes_auth/viewsets.py:73
|
||||
msgid "passwords do not match"
|
||||
msgstr "密码不匹配"
|
||||
|
||||
|
|
@ -115,6 +115,10 @@ msgstr "激活用户帐户"
|
|||
msgid "activation link is invalid or account already activated"
|
||||
msgstr "激活链接无效或账户已激活"
|
||||
|
||||
#: vibes_auth/docs/drf/viewsets.py:71
|
||||
msgid "merge client-stored recently viewed products"
|
||||
msgstr "合并客户存储的最近查看的产品"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:41
|
||||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||||
msgstr "将新用户推荐给我们的用户的 b64-encoded uuid。"
|
||||
|
|
@ -142,8 +146,8 @@ msgstr "畸形电话号码: {phone_number}"
|
|||
msgid "Invalid attribute format: {attribute_pair}"
|
||||
msgstr "属性格式无效:{attribute_pair}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:115
|
||||
#: vibes_auth/viewsets.py:134
|
||||
#: vibes_auth/graphene/mutations.py:263 vibes_auth/viewsets.py:116
|
||||
#: vibes_auth/viewsets.py:135
|
||||
msgid "activation link is invalid!"
|
||||
msgstr "激活链接无效!"
|
||||
|
||||
|
|
@ -155,14 +159,14 @@ msgstr "帐户已激活..."
|
|||
msgid "something went wrong: {e!s}"
|
||||
msgstr "出了问题:{e!s}"
|
||||
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:83
|
||||
#: vibes_auth/graphene/mutations.py:314 vibes_auth/viewsets.py:84
|
||||
msgid "token is invalid!"
|
||||
msgstr "令牌无效!"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:39
|
||||
msgid ""
|
||||
"the products this user has viewed most recently (max 48), in reverse‐"
|
||||
"chronological order"
|
||||
"the products this user has viewed most recently (max 48), in "
|
||||
"reverse‐chronological order"
|
||||
msgstr "该用户最近查看过的产品(最多 48 个),按倒序排列。"
|
||||
|
||||
#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108
|
||||
|
|
@ -274,23 +278,23 @@ msgstr "黑名单令牌"
|
|||
msgid "blacklisted tokens"
|
||||
msgstr "黑名单令牌"
|
||||
|
||||
#: vibes_auth/serializers.py:106 vibes_auth/serializers.py:128
|
||||
#: vibes_auth/serializers.py:107 vibes_auth/serializers.py:129
|
||||
msgid "no active account"
|
||||
msgstr "未找到活动账户"
|
||||
|
||||
#: vibes_auth/serializers.py:199
|
||||
#: vibes_auth/serializers.py:200
|
||||
msgid "token_blacklisted"
|
||||
msgstr "令牌被列入黑名单"
|
||||
|
||||
#: vibes_auth/serializers.py:204
|
||||
#: vibes_auth/serializers.py:205
|
||||
msgid "invalid token"
|
||||
msgstr "无效令牌"
|
||||
|
||||
#: vibes_auth/serializers.py:210
|
||||
#: vibes_auth/serializers.py:211
|
||||
msgid "no user uuid claim present in token"
|
||||
msgstr "令牌中没有用户 uuid 声明"
|
||||
|
||||
#: vibes_auth/serializers.py:212
|
||||
#: vibes_auth/serializers.py:213
|
||||
msgid "user does not exist"
|
||||
msgstr "用户不存在"
|
||||
|
||||
|
|
@ -399,17 +403,16 @@ msgstr "{config.PROJECT_NAME} 重置密码| 重置密码"
|
|||
msgid ""
|
||||
"invalid phone number format. the number must be entered in the format: "
|
||||
"\"+999999999\". up to 15 digits allowed."
|
||||
msgstr ""
|
||||
"电话号码格式无效。电话号码必须按格式输入:\"+999999999\".最多允许 15 位数字。"
|
||||
msgstr "电话号码格式无效。电话号码必须按格式输入:\"+999999999\".最多允许 15 位数字。"
|
||||
|
||||
#: vibes_auth/views.py:57
|
||||
msgid "the token is invalid"
|
||||
msgstr "令牌无效"
|
||||
|
||||
#: vibes_auth/viewsets.py:87
|
||||
#: vibes_auth/viewsets.py:88
|
||||
msgid "password reset successfully"
|
||||
msgstr "密码已重置成功!"
|
||||
|
||||
#: vibes_auth/viewsets.py:120
|
||||
#: vibes_auth/viewsets.py:121
|
||||
msgid "account already activated!"
|
||||
msgstr "您已经激活了账户..."
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ from django.contrib import auth
|
|||
from django.contrib.auth.base_user import BaseUserManager
|
||||
from django.contrib.auth.hashers import make_password
|
||||
|
||||
from core.models import Order
|
||||
|
||||
|
||||
class UserManager(BaseUserManager):
|
||||
use_in_migrations = True
|
||||
|
|
@ -11,6 +13,14 @@ class UserManager(BaseUserManager):
|
|||
user = self.model(email=email, **extra_fields)
|
||||
user.password = make_password(password)
|
||||
user.save(using=self._db)
|
||||
for order in Order.objects.filter(attributes__icontains=user.email):
|
||||
if not order.user:
|
||||
order.user = user
|
||||
order.save()
|
||||
for order in Order.objects.filter(attributes__icontains=user.phone_number):
|
||||
if not order.user:
|
||||
order.user = user
|
||||
order.save()
|
||||
return user
|
||||
|
||||
def create_user(self, email=None, password=None, **extra_fields):
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ from rest_framework.fields import (
|
|||
BooleanField,
|
||||
CharField,
|
||||
EmailField,
|
||||
ListField,
|
||||
SerializerMethodField,
|
||||
)
|
||||
from rest_framework.serializers import ModelSerializer, Serializer
|
||||
|
|
@ -229,3 +230,7 @@ class ResetPasswordSerializer(Serializer):
|
|||
class ActivateEmailSerializer(Serializer):
|
||||
uidb64 = CharField(required=True)
|
||||
token = CharField(required=True)
|
||||
|
||||
|
||||
class MergeRecentlyViewedSerializer(Serializer):
|
||||
product_uuids = ListField(required=True, child=CharField(required=True))
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ from evibes.settings import DEBUG
|
|||
from vibes_auth.docs.drf.viewsets import USER_SCHEMA
|
||||
from vibes_auth.models import User
|
||||
from vibes_auth.serializers import (
|
||||
MergeRecentlyViewedSerializer,
|
||||
UserSerializer,
|
||||
)
|
||||
from vibes_auth.utils.emailing import send_reset_password_email_task
|
||||
|
|
@ -141,6 +142,17 @@ class UserViewSet(
|
|||
response_data["access"] = str(tokens.access_token)
|
||||
return Response(response_data, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=True, methods=["put"], permission_classes=[IsAuthenticated])
|
||||
def merge_recently_viewed(self, request, **kwargs):
|
||||
user = self.get_object()
|
||||
if request.user != user:
|
||||
return Response(status=status.HTTP_403_FORBIDDEN)
|
||||
serializer = MergeRecentlyViewedSerializer(request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
for product_uuid in serializer.validated_data["product_uuids"]:
|
||||
user.add_to_recently_viewed(product_uuid)
|
||||
return Response(status=status.HTTP_202_ACCEPTED, data=self.serializer_class(user).data)
|
||||
|
||||
def retrieve(self, request, pk=None, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
serializer = self.get_serializer(instance)
|
||||
|
|
|
|||
Loading…
Reference in a new issue