Merge branch 'main' into storefront-nuxt
# Conflicts: # engine/core/templates/admin/dashboard/_filters.html # engine/core/templates/admin/index.html
This commit is contained in:
commit
23fb126574
324 changed files with 12048 additions and 9323 deletions
53
.gitlab-ci.yml
Normal file
53
.gitlab-ci.yml
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
image: ghcr.io/astral-sh/uv:python3.12-bookworm
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- typecheck
|
||||
- test
|
||||
|
||||
variables:
|
||||
UV_PYTHON: "3.12"
|
||||
PIP_DISABLE_PIP_VERSION_CHECK: "1"
|
||||
PYTHONDONTWRITEBYTECODE: "1"
|
||||
|
||||
before_script:
|
||||
- uv sync --frozen --extra linting
|
||||
|
||||
lint:
|
||||
stage: lint
|
||||
script:
|
||||
- uv run ruff format --check .
|
||||
- uv run ruff check --force-exclude .
|
||||
rules:
|
||||
- changes:
|
||||
- "**/*.py"
|
||||
- "pyproject.toml"
|
||||
- ".pre-commit-config.yaml"
|
||||
- "pyrightconfig.json"
|
||||
when: on_success
|
||||
- when: never
|
||||
|
||||
typecheck:
|
||||
stage: typecheck
|
||||
script:
|
||||
- uv run pyright
|
||||
rules:
|
||||
- changes:
|
||||
- "**/*.py"
|
||||
- "pyproject.toml"
|
||||
- "pyrightconfig.json"
|
||||
when: on_success
|
||||
- when: never
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- uv run pytest -q
|
||||
rules:
|
||||
- changes:
|
||||
- "**/*.py"
|
||||
- "pyproject.toml"
|
||||
- "pytest.ini"
|
||||
- "pyproject.toml"
|
||||
when: on_success
|
||||
- when: never
|
||||
18
.pre-commit-config.yaml
Normal file
18
.pre-commit-config.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.6.9
|
||||
hooks:
|
||||
- id: ruff
|
||||
name: Ruff (lint & fix)
|
||||
args: ["--fix", "--exit-non-zero-on-fix"]
|
||||
files: "\\.(py|pyi)$"
|
||||
exclude: "^storefront/"
|
||||
- id: ruff-format
|
||||
name: Ruff (format)
|
||||
files: "\\.(py|pyi)$"
|
||||
exclude: "^storefront/"
|
||||
|
||||
ci:
|
||||
autofix_commit_msg: "chore(pre-commit): auto-fix issues"
|
||||
autofix_prs: true
|
||||
autoupdate_commit_msg: "chore(pre-commit): autoupdate hooks"
|
||||
|
|
@ -9,7 +9,9 @@ from engine.core.admin import ActivationActionsMixin, FieldsetsMixin
|
|||
|
||||
|
||||
@register(Post)
|
||||
class PostAdmin(SummernoteModelAdminMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class PostAdmin(
|
||||
SummernoteModelAdminMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
list_display = ("title", "author", "slug", "created", "modified")
|
||||
list_filter = ("author", "tags", "created", "modified")
|
||||
search_fields = ("title", "content", "slug")
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from django.utils.translation import gettext_lazy as _
|
|||
from drf_spectacular.utils import extend_schema
|
||||
from rest_framework import status
|
||||
|
||||
from engine.core.docs.drf import BASE_ERRORS
|
||||
from engine.blog.serializers import PostSerializer
|
||||
from engine.core.docs.drf import BASE_ERRORS
|
||||
|
||||
POST_SCHEMA = {
|
||||
"list": extend_schema(
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@ from django_elasticsearch_dsl import fields
|
|||
from django_elasticsearch_dsl.registries import registry
|
||||
|
||||
from engine.blog.models import Post
|
||||
from engine.core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_fields
|
||||
from engine.core.elasticsearch import (
|
||||
COMMON_ANALYSIS,
|
||||
ActiveOnlyMixin,
|
||||
add_multilang_fields,
|
||||
)
|
||||
from engine.core.elasticsearch.documents import BaseDocument
|
||||
|
||||
|
||||
|
|
@ -12,7 +16,9 @@ class PostDocument(ActiveOnlyMixin, BaseDocument): # type: ignore [misc]
|
|||
analyzer="standard",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\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"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\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"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 21:44+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
|
|||
|
|
@ -48,13 +48,17 @@ class Migration(migrations.Migration):
|
|||
(
|
||||
"modified",
|
||||
django_extensions.db.fields.ModificationDateTimeField(
|
||||
auto_now=True, help_text="when the object was last modified", verbose_name="modified"
|
||||
auto_now=True,
|
||||
help_text="when the object was last modified",
|
||||
verbose_name="modified",
|
||||
),
|
||||
),
|
||||
(
|
||||
"tag_name",
|
||||
models.CharField(
|
||||
help_text="internal tag identifier for the post tag", max_length=255, verbose_name="tag name"
|
||||
help_text="internal tag identifier for the post tag",
|
||||
max_length=255,
|
||||
verbose_name="tag name",
|
||||
),
|
||||
),
|
||||
(
|
||||
|
|
@ -105,17 +109,26 @@ class Migration(migrations.Migration):
|
|||
(
|
||||
"modified",
|
||||
django_extensions.db.fields.ModificationDateTimeField(
|
||||
auto_now=True, help_text="when the object was last modified", verbose_name="modified"
|
||||
auto_now=True,
|
||||
help_text="when the object was last modified",
|
||||
verbose_name="modified",
|
||||
),
|
||||
),
|
||||
("title", models.CharField()),
|
||||
("content", markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content")),
|
||||
(
|
||||
"content",
|
||||
markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
("file", models.FileField(blank=True, null=True, upload_to="posts/")),
|
||||
("slug", models.SlugField(allow_unicode=True)),
|
||||
(
|
||||
"author",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, related_name="posts", to=settings.AUTH_USER_MODEL
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="posts",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
("tags", models.ManyToManyField(to="blog.posttag")),
|
||||
|
|
|
|||
|
|
@ -12,12 +12,21 @@ class Migration(migrations.Migration):
|
|||
model_name="post",
|
||||
name="slug",
|
||||
field=django_extensions.db.fields.AutoSlugField(
|
||||
allow_unicode=True, blank=True, editable=False, populate_from="title", unique=True
|
||||
allow_unicode=True,
|
||||
blank=True,
|
||||
editable=False,
|
||||
populate_from="title",
|
||||
unique=True,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="title",
|
||||
field=models.CharField(help_text="post title", max_length=128, unique=True, verbose_name="title"),
|
||||
field=models.CharField(
|
||||
help_text="post title",
|
||||
max_length=128,
|
||||
unique=True,
|
||||
verbose_name="title",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ class Migration(migrations.Migration):
|
|||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="tags",
|
||||
field=models.ManyToManyField(blank=True, related_name="posts", to="blog.posttag"),
|
||||
field=models.ManyToManyField(
|
||||
blank=True, related_name="posts", to="blog.posttag"
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -11,92 +11,128 @@ class Migration(migrations.Migration):
|
|||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_ar_ar",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_cs_cz",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_da_dk",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_de_de",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_en_gb",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_en_us",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_es_es",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_fr_fr",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_hi_in",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_it_it",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_ja_jp",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_kk_kz",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_nl_nl",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_pl_pl",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_pt_br",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_ro_ro",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_ru_ru",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_zh_hans",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
|
|
|
|||
|
|
@ -11,52 +11,72 @@ class Migration(migrations.Migration):
|
|||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_fa_ir",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_he_il",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_hr_hr",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_id_id",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_ko_kr",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_no_no",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_sv_se",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_th_th",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_tr_tr",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
name="content_vi_vn",
|
||||
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
|
||||
field=markdown_field.fields.MarkdownField(
|
||||
blank=True, null=True, verbose_name="content"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="post",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,12 @@
|
|||
from django.conf import settings
|
||||
from django.db.models import CASCADE, CharField, FileField, ForeignKey, ManyToManyField, BooleanField
|
||||
from django.db.models import (
|
||||
CASCADE,
|
||||
BooleanField,
|
||||
CharField,
|
||||
FileField,
|
||||
ForeignKey,
|
||||
ManyToManyField,
|
||||
)
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_extensions.db.fields import AutoSlugField
|
||||
from markdown.extensions.toc import TocExtension
|
||||
|
|
@ -19,9 +26,20 @@ class Post(NiceModel): # type: ignore [django-manager-missing]
|
|||
|
||||
is_publicly_visible = True
|
||||
|
||||
author = ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=CASCADE, blank=False, null=False, related_name="posts")
|
||||
author = ForeignKey(
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
on_delete=CASCADE,
|
||||
blank=False,
|
||||
null=False,
|
||||
related_name="posts",
|
||||
)
|
||||
title = CharField(
|
||||
unique=True, max_length=128, blank=False, null=False, help_text=_("post title"), verbose_name=_("title")
|
||||
unique=True,
|
||||
max_length=128,
|
||||
blank=False,
|
||||
null=False,
|
||||
help_text=_("post title"),
|
||||
verbose_name=_("title"),
|
||||
)
|
||||
content: MarkdownField = MarkdownField(
|
||||
"content",
|
||||
|
|
@ -61,13 +79,17 @@ class Post(NiceModel): # type: ignore [django-manager-missing]
|
|||
null=True,
|
||||
)
|
||||
file = FileField(upload_to="posts/", blank=True, null=True)
|
||||
slug = AutoSlugField(populate_from="title", allow_unicode=True, unique=True, editable=False)
|
||||
slug = AutoSlugField(
|
||||
populate_from="title", allow_unicode=True, unique=True, editable=False
|
||||
)
|
||||
tags = ManyToManyField(to="blog.PostTag", blank=True, related_name="posts")
|
||||
meta_description = CharField(max_length=150, blank=True, null=True)
|
||||
is_static_page = BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("is static page"),
|
||||
help_text=_("is this a post for a page with static URL (e.g. `/help/delivery`)?"),
|
||||
help_text=_(
|
||||
"is this a post for a page with static URL (e.g. `/help/delivery`)?"
|
||||
),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
|
|
@ -79,9 +101,15 @@ class Post(NiceModel): # type: ignore [django-manager-missing]
|
|||
|
||||
def save(self, **kwargs):
|
||||
if self.file:
|
||||
raise ValueError(_("markdown files are not supported yet - use markdown content instead"))
|
||||
raise ValueError(
|
||||
_("markdown files are not supported yet - use markdown content instead")
|
||||
)
|
||||
if not any([self.file, self.content]) or all([self.file, self.content]):
|
||||
raise ValueError(_("a markdown file or markdown content must be provided - mutually exclusive"))
|
||||
raise ValueError(
|
||||
_(
|
||||
"a markdown file or markdown content must be provided - mutually exclusive"
|
||||
)
|
||||
)
|
||||
super().save(**kwargs)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ from django_filters.rest_framework import DjangoFilterBackend
|
|||
from drf_spectacular.utils import extend_schema_view
|
||||
from rest_framework.viewsets import ReadOnlyModelViewSet
|
||||
|
||||
from engine.blog.docs.drf.viewsets import POST_SCHEMA
|
||||
from engine.blog.filters import PostFilter
|
||||
from engine.blog.models import Post
|
||||
from engine.blog.serializers import PostSerializer
|
||||
from engine.blog.docs.drf.viewsets import POST_SCHEMA
|
||||
from engine.core.permissions import EvibesPermission
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,10 +7,20 @@ from django.utils.safestring import mark_safe
|
|||
|
||||
class MarkdownEditorWidget(forms.Textarea):
|
||||
class Media:
|
||||
css = {"all": ("https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.css",)}
|
||||
css = {
|
||||
"all": (
|
||||
"https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.css",
|
||||
)
|
||||
}
|
||||
js = ("https://cdnjs.cloudflare.com/ajax/libs/easymde/2.14.0/easymde.min.js",)
|
||||
|
||||
def render(self, name: str, value: str, attrs: dict[Any, Any] | None = None, renderer: BaseRenderer | None = None):
|
||||
def render(
|
||||
self,
|
||||
name: str,
|
||||
value: str,
|
||||
attrs: dict[Any, Any] | None = None,
|
||||
renderer: BaseRenderer | None = None,
|
||||
):
|
||||
if not attrs:
|
||||
attrs = {}
|
||||
attrs["class"] = "markdown-editor"
|
||||
|
|
|
|||
|
|
@ -18,10 +18,16 @@ class NiceModel(Model):
|
|||
is_active = BooleanField(
|
||||
default=True,
|
||||
verbose_name=_("is active"),
|
||||
help_text=_("if set to false, this object can't be seen by users without needed permission"),
|
||||
help_text=_(
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
),
|
||||
)
|
||||
created = CreationDateTimeField(_("created"), help_text=_("when the object first appeared on the database")) # type: ignore [no-untyped-call]
|
||||
modified = ModificationDateTimeField(_("modified"), help_text=_("when the object was last modified")) # type: ignore [no-untyped-call]
|
||||
created = CreationDateTimeField(
|
||||
_("created"), help_text=_("when the object first appeared on the database")
|
||||
) # type: ignore [no-untyped-call]
|
||||
modified = ModificationDateTimeField(
|
||||
_("modified"), help_text=_("when the object was last modified")
|
||||
) # type: ignore [no-untyped-call]
|
||||
|
||||
def save( # type: ignore [override]
|
||||
self,
|
||||
|
|
@ -34,7 +40,10 @@ class NiceModel(Model):
|
|||
) -> None:
|
||||
self.update_modified = update_modified
|
||||
return super().save(
|
||||
force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields
|
||||
force_insert=force_insert,
|
||||
force_update=force_update,
|
||||
using=using,
|
||||
update_fields=update_fields,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
|
|
|||
|
|
@ -33,7 +33,13 @@ from unfold.contrib.import_export.forms import ExportForm, ImportForm
|
|||
from unfold.decorators import action
|
||||
from unfold.widgets import UnfoldAdminSelectWidget, UnfoldAdminTextInputWidget
|
||||
|
||||
from engine.core.forms import CRMForm, OrderForm, OrderProductForm, StockForm, VendorForm
|
||||
from engine.core.forms import (
|
||||
CRMForm,
|
||||
OrderForm,
|
||||
OrderProductForm,
|
||||
StockForm,
|
||||
VendorForm,
|
||||
)
|
||||
from engine.core.models import (
|
||||
Address,
|
||||
Attribute,
|
||||
|
|
@ -64,7 +70,9 @@ class FieldsetsMixin:
|
|||
additional_fields: list[str] | None = []
|
||||
model: ClassVar[Type[Model]]
|
||||
|
||||
def get_fieldsets(self, request: HttpRequest, obj: Any = None) -> list[tuple[str, dict[str, list[str]]]]:
|
||||
def get_fieldsets(
|
||||
self, request: HttpRequest, obj: Any = None
|
||||
) -> list[tuple[str, dict[str, list[str]]]]:
|
||||
if request:
|
||||
pass
|
||||
|
||||
|
|
@ -82,15 +90,29 @@ class FieldsetsMixin:
|
|||
for orig in transoptions.local_fields:
|
||||
translation_fields += get_translation_fields(orig)
|
||||
if translation_fields:
|
||||
fss = list(fss) + [(_("translations"), {"classes": ["tab"], "fields": translation_fields})] # type: ignore [list-item]
|
||||
fss = list(fss) + [
|
||||
(
|
||||
_("translations"),
|
||||
{"classes": ["tab"], "fields": translation_fields},
|
||||
)
|
||||
] # type: ignore [list-item]
|
||||
return fss
|
||||
|
||||
if self.general_fields:
|
||||
fieldsets.append((_("general"), {"classes": ["tab"], "fields": self.general_fields}))
|
||||
fieldsets.append(
|
||||
(_("general"), {"classes": ["tab"], "fields": self.general_fields})
|
||||
)
|
||||
if self.relation_fields:
|
||||
fieldsets.append((_("relations"), {"classes": ["tab"], "fields": self.relation_fields}))
|
||||
fieldsets.append(
|
||||
(_("relations"), {"classes": ["tab"], "fields": self.relation_fields})
|
||||
)
|
||||
if self.additional_fields:
|
||||
fieldsets.append((_("additional info"), {"classes": ["tab"], "fields": self.additional_fields}))
|
||||
fieldsets.append(
|
||||
(
|
||||
_("additional info"),
|
||||
{"classes": ["tab"], "fields": self.additional_fields},
|
||||
)
|
||||
)
|
||||
opts = self.model._meta
|
||||
|
||||
meta_fields = []
|
||||
|
|
@ -108,7 +130,9 @@ class FieldsetsMixin:
|
|||
meta_fields.append("human_readable_id")
|
||||
|
||||
if meta_fields:
|
||||
fieldsets.append((_("metadata"), {"classes": ["tab"], "fields": meta_fields}))
|
||||
fieldsets.append(
|
||||
(_("metadata"), {"classes": ["tab"], "fields": meta_fields})
|
||||
)
|
||||
|
||||
ts = []
|
||||
for name in ("created", "modified"):
|
||||
|
|
@ -130,23 +154,35 @@ class ActivationActionsMixin:
|
|||
"deactivate_selected",
|
||||
]
|
||||
|
||||
@action(description=_("activate selected %(verbose_name_plural)s").lower(), permissions=["change"])
|
||||
@action(
|
||||
description=_("activate selected %(verbose_name_plural)s").lower(),
|
||||
permissions=["change"],
|
||||
)
|
||||
def activate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None:
|
||||
try:
|
||||
queryset.update(is_active=True)
|
||||
self.message_user( # type: ignore [attr-defined]
|
||||
request=request, message=_("selected items have been activated.").lower(), level=messages.SUCCESS
|
||||
request=request,
|
||||
message=_("selected items have been activated.").lower(),
|
||||
level=messages.SUCCESS,
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
self.message_user(request=request, message=str(e), level=messages.ERROR) # type: ignore [attr-defined]
|
||||
|
||||
@action(description=_("deactivate selected %(verbose_name_plural)s").lower(), permissions=["change"])
|
||||
def deactivate_selected(self, request: HttpRequest, queryset: QuerySet[Any]) -> None:
|
||||
@action(
|
||||
description=_("deactivate selected %(verbose_name_plural)s").lower(),
|
||||
permissions=["change"],
|
||||
)
|
||||
def deactivate_selected(
|
||||
self, request: HttpRequest, queryset: QuerySet[Any]
|
||||
) -> None:
|
||||
try:
|
||||
queryset.update(is_active=False)
|
||||
self.message_user( # type: ignore [attr-defined]
|
||||
request=request, message=_("selected items have been deactivated.").lower(), level=messages.SUCCESS
|
||||
request=request,
|
||||
message=_("selected items have been deactivated.").lower(),
|
||||
level=messages.SUCCESS,
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
|
|
@ -198,7 +234,12 @@ class OrderProductInline(TabularInline): # type: ignore [type-arg]
|
|||
tab = True
|
||||
|
||||
def get_queryset(self, request):
|
||||
return super().get_queryset(request).select_related("product").only("product__name")
|
||||
return (
|
||||
super()
|
||||
.get_queryset(request)
|
||||
.select_related("product")
|
||||
.only("product__name")
|
||||
)
|
||||
|
||||
|
||||
class CategoryChildrenInline(TabularInline): # type: ignore [type-arg]
|
||||
|
|
@ -212,7 +253,9 @@ class CategoryChildrenInline(TabularInline): # type: ignore [type-arg]
|
|||
|
||||
|
||||
@register(AttributeGroup)
|
||||
class AttributeGroupAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class AttributeGroupAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = AttributeGroup # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -236,7 +279,9 @@ class AttributeGroupAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActions
|
|||
|
||||
|
||||
@register(Attribute)
|
||||
class AttributeAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class AttributeAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Attribute # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -311,7 +356,13 @@ class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
|||
|
||||
|
||||
@register(Category)
|
||||
class CategoryAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, DraggableMPTTAdmin, ModelAdmin):
|
||||
class CategoryAdmin(
|
||||
DjangoQLSearchMixin,
|
||||
FieldsetsMixin,
|
||||
ActivationActionsMixin,
|
||||
DraggableMPTTAdmin,
|
||||
ModelAdmin,
|
||||
):
|
||||
# noinspection PyClassVar
|
||||
model = Category
|
||||
list_display = (
|
||||
|
|
@ -360,7 +411,9 @@ class CategoryAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin,
|
|||
|
||||
|
||||
@register(Brand)
|
||||
class BrandAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class BrandAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Brand # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -392,7 +445,13 @@ class BrandAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, Mo
|
|||
|
||||
|
||||
@register(Product)
|
||||
class ProductAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin, ImportExportModelAdmin): # type: ignore [misc, type-arg]
|
||||
class ProductAdmin(
|
||||
DjangoQLSearchMixin,
|
||||
FieldsetsMixin,
|
||||
ActivationActionsMixin,
|
||||
ModelAdmin,
|
||||
ImportExportModelAdmin,
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Product # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -471,7 +530,9 @@ class ProductAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin,
|
|||
|
||||
|
||||
@register(ProductTag)
|
||||
class ProductTagAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class ProductTagAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = ProductTag # type: ignore [misc]
|
||||
list_display = ("tag_name",)
|
||||
|
|
@ -489,7 +550,9 @@ class ProductTagAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixi
|
|||
|
||||
|
||||
@register(CategoryTag)
|
||||
class CategoryTagAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class CategoryTagAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = CategoryTag # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -515,7 +578,9 @@ class CategoryTagAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMix
|
|||
|
||||
|
||||
@register(Vendor)
|
||||
class VendorAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class VendorAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Vendor # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -555,7 +620,9 @@ class VendorAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, M
|
|||
|
||||
|
||||
@register(Feedback)
|
||||
class FeedbackAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class FeedbackAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Feedback # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -588,7 +655,9 @@ class FeedbackAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin,
|
|||
|
||||
|
||||
@register(Order)
|
||||
class OrderAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class OrderAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Order # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -639,7 +708,9 @@ class OrderAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, Mo
|
|||
|
||||
|
||||
@register(OrderProduct)
|
||||
class OrderProductAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class OrderProductAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = OrderProduct # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -677,7 +748,9 @@ class OrderProductAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMi
|
|||
|
||||
|
||||
@register(PromoCode)
|
||||
class PromoCodeAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class PromoCodeAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = PromoCode # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -721,7 +794,9 @@ class PromoCodeAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin
|
|||
|
||||
|
||||
@register(Promotion)
|
||||
class PromotionAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class PromotionAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Promotion # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -748,7 +823,9 @@ class PromotionAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin
|
|||
|
||||
|
||||
@register(Stock)
|
||||
class StockAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class StockAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Stock # type: ignore [misc]
|
||||
form = StockForm
|
||||
|
|
@ -796,7 +873,9 @@ class StockAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, Mo
|
|||
|
||||
|
||||
@register(Wishlist)
|
||||
class WishlistAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class WishlistAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = Wishlist # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -822,7 +901,9 @@ class WishlistAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin,
|
|||
|
||||
|
||||
@register(ProductImage)
|
||||
class ProductImageAdmin(DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class ProductImageAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = ProductImage # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
@ -908,7 +989,9 @@ class AddressAdmin(DjangoQLSearchMixin, FieldsetsMixin, GISModelAdmin): # type:
|
|||
|
||||
|
||||
@register(CustomerRelationshipManagementProvider)
|
||||
class CustomerRelationshipManagementProviderAdmin(DjangoQLSearchMixin, FieldsetsMixin, ModelAdmin): # type: ignore [misc, type-arg]
|
||||
class CustomerRelationshipManagementProviderAdmin(
|
||||
DjangoQLSearchMixin, FieldsetsMixin, ModelAdmin
|
||||
): # type: ignore [misc, type-arg]
|
||||
# noinspection PyClassVar
|
||||
model = CustomerRelationshipManagementProvider # type: ignore [misc]
|
||||
list_display = (
|
||||
|
|
|
|||
|
|
@ -9,5 +9,9 @@ app_name = "core"
|
|||
|
||||
urlpatterns = [
|
||||
path("search/", GlobalSearchView.as_view(), name="global_search"),
|
||||
path("orders/buy_as_business/", BuyAsBusinessView.as_view(), name="request_cursed_url"),
|
||||
path(
|
||||
"orders/buy_as_business/",
|
||||
BuyAsBusinessView.as_view(),
|
||||
name="request_cursed_url",
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@ from django.core.cache import cache
|
|||
from django.db import transaction
|
||||
|
||||
from engine.core.crm.exceptions import CRMException
|
||||
from engine.core.models import CustomerRelationshipManagementProvider, Order, OrderCrmLink
|
||||
from engine.core.models import (
|
||||
CustomerRelationshipManagementProvider,
|
||||
Order,
|
||||
OrderCrmLink,
|
||||
)
|
||||
from engine.core.utils import is_status_code_success
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -17,7 +21,9 @@ class AmoCRM:
|
|||
|
||||
def __init__(self):
|
||||
try:
|
||||
self.instance = CustomerRelationshipManagementProvider.objects.get(name="AmoCRM")
|
||||
self.instance = CustomerRelationshipManagementProvider.objects.get(
|
||||
name="AmoCRM"
|
||||
)
|
||||
except CustomerRelationshipManagementProvider.DoesNotExist as dne:
|
||||
logger.warning("AMO CRM provider not found")
|
||||
raise CRMException("AMO CRM provider not found") from dne
|
||||
|
|
@ -70,7 +76,10 @@ class AmoCRM:
|
|||
return self.access_token
|
||||
|
||||
def _headers(self) -> dict:
|
||||
return {"Authorization": f"Bearer {self._token()}", "Content-Type": "application/json"}
|
||||
return {
|
||||
"Authorization": f"Bearer {self._token()}",
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
|
||||
def _build_lead_payload(self, order: Order) -> dict:
|
||||
name = f"Заказ #{order.human_readable_id}"
|
||||
|
|
@ -104,7 +113,8 @@ class AmoCRM:
|
|||
)
|
||||
try:
|
||||
r = requests.get(
|
||||
f"https://api-fns.ru/api/egr?req={order.business_identificator}&key={self.fns_api_key}", timeout=15
|
||||
f"https://api-fns.ru/api/egr?req={order.business_identificator}&key={self.fns_api_key}",
|
||||
timeout=15,
|
||||
)
|
||||
r.raise_for_status()
|
||||
body = r.json()
|
||||
|
|
@ -129,28 +139,43 @@ class AmoCRM:
|
|||
if customer_name:
|
||||
r = requests.get(
|
||||
f"{self.base}/api/v4/contacts",
|
||||
headers=self._headers().update({"filter[name]": customer_name, "limit": 1}),
|
||||
headers=self._headers().update(
|
||||
{"filter[name]": customer_name, "limit": 1}
|
||||
),
|
||||
timeout=15,
|
||||
)
|
||||
if r.status_code == 200:
|
||||
body = r.json()
|
||||
return body.get("_embedded", {}).get("contacts", [{}])[0].get("id", None)
|
||||
return (
|
||||
body.get("_embedded", {})
|
||||
.get("contacts", [{}])[0]
|
||||
.get("id", None)
|
||||
)
|
||||
create_contact_payload = {"name": customer_name}
|
||||
|
||||
if self.responsible_user_id:
|
||||
create_contact_payload["responsible_user_id"] = self.responsible_user_id
|
||||
create_contact_payload["responsible_user_id"] = (
|
||||
self.responsible_user_id
|
||||
)
|
||||
|
||||
if order.user:
|
||||
create_contact_payload["first_name"] = order.user.first_name or ""
|
||||
create_contact_payload["last_name"] = order.user.last_name or ""
|
||||
|
||||
r = requests.post(
|
||||
f"{self.base}/api/v4/contacts", json={"name": customer_name}, headers=self._headers(), timeout=15
|
||||
f"{self.base}/api/v4/contacts",
|
||||
json={"name": customer_name},
|
||||
headers=self._headers(),
|
||||
timeout=15,
|
||||
)
|
||||
|
||||
if r.status_code == 200:
|
||||
body = r.json()
|
||||
return body.get("_embedded", {}).get("contacts", [{}])[0].get("id", None)
|
||||
return (
|
||||
body.get("_embedded", {})
|
||||
.get("contacts", [{}])[0]
|
||||
.get("id", None)
|
||||
)
|
||||
|
||||
return None
|
||||
|
||||
|
|
@ -173,17 +198,27 @@ class AmoCRM:
|
|||
lead_id = link.crm_lead_id
|
||||
payload = self._build_lead_payload(order)
|
||||
r = requests.patch(
|
||||
f"{self.base}/api/v4/leads/{lead_id}", json=payload, headers=self._headers(), timeout=15
|
||||
f"{self.base}/api/v4/leads/{lead_id}",
|
||||
json=payload,
|
||||
headers=self._headers(),
|
||||
timeout=15,
|
||||
)
|
||||
if r.status_code not in (200, 204):
|
||||
r.raise_for_status()
|
||||
return lead_id
|
||||
payload = self._build_lead_payload(order)
|
||||
r = requests.post(f"{self.base}/api/v4/leads", json=[payload], headers=self._headers(), timeout=15)
|
||||
r = requests.post(
|
||||
f"{self.base}/api/v4/leads",
|
||||
json=[payload],
|
||||
headers=self._headers(),
|
||||
timeout=15,
|
||||
)
|
||||
r.raise_for_status()
|
||||
body = r.json()
|
||||
lead_id = str(body["_embedded"]["leads"][0]["id"])
|
||||
OrderCrmLink.objects.create(order=order, crm_lead_id=lead_id, crm=self.instance)
|
||||
OrderCrmLink.objects.create(
|
||||
order=order, crm_lead_id=lead_id, crm=self.instance
|
||||
)
|
||||
return lead_id
|
||||
|
||||
def update_order_status(self, crm_lead_id: str, new_status: str) -> None:
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ from engine.core.serializers import (
|
|||
)
|
||||
from engine.payments.serializers import TransactionProcessSerializer
|
||||
|
||||
|
||||
CUSTOM_OPENAPI_SCHEMA = {
|
||||
"get": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -48,7 +47,9 @@ CACHE_SCHEMA = {
|
|||
),
|
||||
request=CacheOperatorSerializer,
|
||||
responses={
|
||||
status.HTTP_200_OK: inline_serializer("cache", fields={"data": JSONField()}),
|
||||
status.HTTP_200_OK: inline_serializer(
|
||||
"cache", fields={"data": JSONField()}
|
||||
),
|
||||
status.HTTP_400_BAD_REQUEST: error,
|
||||
},
|
||||
),
|
||||
|
|
@ -72,7 +73,11 @@ PARAMETERS_SCHEMA = {
|
|||
"misc",
|
||||
],
|
||||
summary=_("get application's exposable parameters"),
|
||||
responses={status.HTTP_200_OK: inline_serializer("parameters", fields={"key": CharField(default="value")})},
|
||||
responses={
|
||||
status.HTTP_200_OK: inline_serializer(
|
||||
"parameters", fields={"key": CharField(default="value")}
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -96,7 +101,9 @@ REQUEST_CURSED_URL_SCHEMA = {
|
|||
"misc",
|
||||
],
|
||||
summary=_("request a CORSed URL"),
|
||||
request=inline_serializer("url", fields={"url": CharField(default="https://example.org")}),
|
||||
request=inline_serializer(
|
||||
"url", fields={"url": CharField(default="https://example.org")}
|
||||
),
|
||||
responses={
|
||||
status.HTTP_200_OK: inline_serializer("data", fields={"data": JSONField()}),
|
||||
status.HTTP_400_BAD_REQUEST: error,
|
||||
|
|
@ -121,7 +128,11 @@ SEARCH_SCHEMA = {
|
|||
responses={
|
||||
status.HTTP_200_OK: inline_serializer(
|
||||
name="GlobalSearchResponse",
|
||||
fields={"results": DictField(child=ListField(child=DictField(child=CharField())))},
|
||||
fields={
|
||||
"results": DictField(
|
||||
child=ListField(child=DictField(child=CharField()))
|
||||
)
|
||||
},
|
||||
),
|
||||
status.HTTP_400_BAD_REQUEST: inline_serializer(
|
||||
name="GlobalSearchErrorResponse", fields={"error": CharField()}
|
||||
|
|
@ -143,7 +154,9 @@ BUY_AS_BUSINESS_SCHEMA = {
|
|||
status.HTTP_400_BAD_REQUEST: error,
|
||||
},
|
||||
description=(
|
||||
_("purchase an order as a business, using the provided `products` with `product_uuid` and `attributes`.")
|
||||
_(
|
||||
"purchase an order as a business, using the provided `products` with `product_uuid` and `attributes`."
|
||||
)
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,11 @@ from engine.core.serializers import (
|
|||
WishlistSimpleSerializer,
|
||||
)
|
||||
from engine.core.serializers.seo import SeoSnapshotSerializer
|
||||
from engine.core.serializers.utility import AddressCreateSerializer, AddressSuggestionSerializer, DoFeedbackSerializer
|
||||
from engine.core.serializers.utility import (
|
||||
AddressCreateSerializer,
|
||||
AddressSuggestionSerializer,
|
||||
DoFeedbackSerializer,
|
||||
)
|
||||
from engine.payments.serializers import TransactionProcessSerializer
|
||||
|
||||
ATTRIBUTE_GROUP_SCHEMA = {
|
||||
|
|
@ -59,7 +63,10 @@ ATTRIBUTE_GROUP_SCHEMA = {
|
|||
"attributeGroups",
|
||||
],
|
||||
summary=_("list all attribute groups (simple view)"),
|
||||
responses={status.HTTP_200_OK: AttributeGroupSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: AttributeGroupSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -73,7 +80,10 @@ ATTRIBUTE_GROUP_SCHEMA = {
|
|||
"attributeGroups",
|
||||
],
|
||||
summary=_("create an attribute group"),
|
||||
responses={status.HTTP_201_CREATED: AttributeGroupDetailSerializer(), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_201_CREATED: AttributeGroupDetailSerializer(),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"destroy": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -93,7 +103,9 @@ ATTRIBUTE_GROUP_SCHEMA = {
|
|||
tags=[
|
||||
"attributeGroups",
|
||||
],
|
||||
summary=_("rewrite some fields of an existing attribute group saving non-editables"),
|
||||
summary=_(
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
),
|
||||
responses={status.HTTP_200_OK: AttributeGroupDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
}
|
||||
|
|
@ -104,7 +116,10 @@ ATTRIBUTE_SCHEMA = {
|
|||
"attributes",
|
||||
],
|
||||
summary=_("list all attributes (simple view)"),
|
||||
responses={status.HTTP_200_OK: AttributeSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: AttributeSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -149,7 +164,10 @@ ATTRIBUTE_VALUE_SCHEMA = {
|
|||
"attributeValues",
|
||||
],
|
||||
summary=_("list all attribute values (simple view)"),
|
||||
responses={status.HTTP_200_OK: AttributeValueSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: AttributeValueSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -163,7 +181,10 @@ ATTRIBUTE_VALUE_SCHEMA = {
|
|||
"attributeValues",
|
||||
],
|
||||
summary=_("create an attribute value"),
|
||||
responses={status.HTTP_201_CREATED: AttributeValueDetailSerializer(), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_201_CREATED: AttributeValueDetailSerializer(),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"destroy": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -183,7 +204,9 @@ ATTRIBUTE_VALUE_SCHEMA = {
|
|||
tags=[
|
||||
"attributeValues",
|
||||
],
|
||||
summary=_("rewrite some fields of an existing attribute value saving non-editables"),
|
||||
summary=_(
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
),
|
||||
responses={status.HTTP_200_OK: AttributeValueDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
}
|
||||
|
|
@ -195,7 +218,10 @@ CATEGORY_SCHEMA = {
|
|||
],
|
||||
summary=_("list all categories (simple view)"),
|
||||
description=_("list all categories (simple view)"),
|
||||
responses={status.HTTP_200_OK: CategorySimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: CategorySimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -242,7 +268,9 @@ CATEGORY_SCHEMA = {
|
|||
"categories",
|
||||
],
|
||||
summary=_("rewrite some fields of an existing category saving non-editables"),
|
||||
description=_("rewrite some fields of an existing category saving non-editables"),
|
||||
description=_(
|
||||
"rewrite some fields of an existing category saving non-editables"
|
||||
),
|
||||
responses={status.HTTP_200_OK: CategoryDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
"seo_meta": extend_schema(
|
||||
|
|
@ -315,7 +343,9 @@ ORDER_SCHEMA = {
|
|||
OpenApiParameter(
|
||||
name="status",
|
||||
type=OpenApiTypes.STR,
|
||||
description=_("Filter by order status (case-insensitive substring match)"),
|
||||
description=_(
|
||||
"Filter by order status (case-insensitive substring match)"
|
||||
),
|
||||
),
|
||||
OpenApiParameter(
|
||||
name="order_by",
|
||||
|
|
@ -418,7 +448,9 @@ ORDER_SCHEMA = {
|
|||
"orders",
|
||||
],
|
||||
summary=_("add product to order"),
|
||||
description=_("adds a product to an order using the provided `product_uuid` and `attributes`."),
|
||||
description=_(
|
||||
"adds a product to an order using the provided `product_uuid` and `attributes`."
|
||||
),
|
||||
request=AddOrderProductSerializer(),
|
||||
responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -427,7 +459,9 @@ ORDER_SCHEMA = {
|
|||
"orders",
|
||||
],
|
||||
summary=_("add a list of products to order, quantities will not count"),
|
||||
description=_("adds a list of products to an order using the provided `product_uuid` and `attributes`."),
|
||||
description=_(
|
||||
"adds a list of products to an order using the provided `product_uuid` and `attributes`."
|
||||
),
|
||||
request=BulkAddOrderProductsSerializer(),
|
||||
responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -436,7 +470,9 @@ ORDER_SCHEMA = {
|
|||
"orders",
|
||||
],
|
||||
summary=_("remove product from order"),
|
||||
description=_("removes a product from an order using the provided `product_uuid` and `attributes`."),
|
||||
description=_(
|
||||
"removes a product from an order using the provided `product_uuid` and `attributes`."
|
||||
),
|
||||
request=RemoveOrderProductSerializer(),
|
||||
responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -445,7 +481,9 @@ ORDER_SCHEMA = {
|
|||
"orders",
|
||||
],
|
||||
summary=_("remove product from order, quantities will not count"),
|
||||
description=_("removes a list of products from an order using the provided `product_uuid` and `attributes`"),
|
||||
description=_(
|
||||
"removes a list of products from an order using the provided `product_uuid` and `attributes`"
|
||||
),
|
||||
request=BulkRemoveOrderProductsSerializer(),
|
||||
responses={status.HTTP_200_OK: OrderDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -458,7 +496,10 @@ WISHLIST_SCHEMA = {
|
|||
],
|
||||
summary=_("list all wishlists (simple view)"),
|
||||
description=_("for non-staff users, only their own wishlists are returned."),
|
||||
responses={status.HTTP_200_OK: WishlistSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: WishlistSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -512,7 +553,9 @@ WISHLIST_SCHEMA = {
|
|||
"wishlists",
|
||||
],
|
||||
summary=_("add product to wishlist"),
|
||||
description=_("adds a product to an wishlist using the provided `product_uuid`"),
|
||||
description=_(
|
||||
"adds a product to an wishlist using the provided `product_uuid`"
|
||||
),
|
||||
request=AddWishlistProductSerializer(),
|
||||
responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -521,7 +564,9 @@ WISHLIST_SCHEMA = {
|
|||
"wishlists",
|
||||
],
|
||||
summary=_("remove product from wishlist"),
|
||||
description=_("removes a product from an wishlist using the provided `product_uuid`"),
|
||||
description=_(
|
||||
"removes a product from an wishlist using the provided `product_uuid`"
|
||||
),
|
||||
request=RemoveWishlistProductSerializer(),
|
||||
responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -530,7 +575,9 @@ WISHLIST_SCHEMA = {
|
|||
"wishlists",
|
||||
],
|
||||
summary=_("add many products to wishlist"),
|
||||
description=_("adds many products to an wishlist using the provided `product_uuids`"),
|
||||
description=_(
|
||||
"adds many products to an wishlist using the provided `product_uuids`"
|
||||
),
|
||||
request=BulkAddWishlistProductSerializer(),
|
||||
responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -539,7 +586,9 @@ WISHLIST_SCHEMA = {
|
|||
"wishlists",
|
||||
],
|
||||
summary=_("remove many products from wishlist"),
|
||||
description=_("removes many products from an wishlist using the provided `product_uuids`"),
|
||||
description=_(
|
||||
"removes many products from an wishlist using the provided `product_uuids`"
|
||||
),
|
||||
request=BulkRemoveWishlistProductSerializer(),
|
||||
responses={status.HTTP_200_OK: WishlistDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
|
|
@ -644,8 +693,12 @@ PRODUCT_SCHEMA = {
|
|||
tags=[
|
||||
"products",
|
||||
],
|
||||
summary=_("update some fields of an existing product, preserving non-editable fields"),
|
||||
description=_("update some fields of an existing product, preserving non-editable fields"),
|
||||
summary=_(
|
||||
"update some fields of an existing product, preserving non-editable fields"
|
||||
),
|
||||
description=_(
|
||||
"update some fields of an existing product, preserving non-editable fields"
|
||||
),
|
||||
parameters=[
|
||||
OpenApiParameter(
|
||||
name="lookup_value",
|
||||
|
|
@ -791,7 +844,9 @@ ADDRESS_SCHEMA = {
|
|||
OpenApiParameter(
|
||||
name="q",
|
||||
location="query",
|
||||
description=_("raw data query string, please append with data from geo-IP endpoint"),
|
||||
description=_(
|
||||
"raw data query string, please append with data from geo-IP endpoint"
|
||||
),
|
||||
type=str,
|
||||
),
|
||||
OpenApiParameter(
|
||||
|
|
@ -814,7 +869,10 @@ FEEDBACK_SCHEMA = {
|
|||
"feedbacks",
|
||||
],
|
||||
summary=_("list all feedbacks (simple view)"),
|
||||
responses={status.HTTP_200_OK: FeedbackSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: FeedbackSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1004,7 +1062,10 @@ VENDOR_SCHEMA = {
|
|||
"vendors",
|
||||
],
|
||||
summary=_("list all vendors (simple view)"),
|
||||
responses={status.HTTP_200_OK: VendorSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: VendorSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1049,7 +1110,10 @@ PRODUCT_IMAGE_SCHEMA = {
|
|||
"productImages",
|
||||
],
|
||||
summary=_("list all product images (simple view)"),
|
||||
responses={status.HTTP_200_OK: ProductImageSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: ProductImageSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1063,7 +1127,10 @@ PRODUCT_IMAGE_SCHEMA = {
|
|||
"productImages",
|
||||
],
|
||||
summary=_("create a product image"),
|
||||
responses={status.HTTP_201_CREATED: ProductImageDetailSerializer(), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_201_CREATED: ProductImageDetailSerializer(),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"destroy": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1083,7 +1150,9 @@ PRODUCT_IMAGE_SCHEMA = {
|
|||
tags=[
|
||||
"productImages",
|
||||
],
|
||||
summary=_("rewrite some fields of an existing product image saving non-editables"),
|
||||
summary=_(
|
||||
"rewrite some fields of an existing product image saving non-editables"
|
||||
),
|
||||
responses={status.HTTP_200_OK: ProductImageDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
}
|
||||
|
|
@ -1094,7 +1163,10 @@ PROMOCODE_SCHEMA = {
|
|||
"promocodes",
|
||||
],
|
||||
summary=_("list all promo codes (simple view)"),
|
||||
responses={status.HTTP_200_OK: PromoCodeSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: PromoCodeSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1139,7 +1211,10 @@ PROMOTION_SCHEMA = {
|
|||
"promotions",
|
||||
],
|
||||
summary=_("list all promotions (simple view)"),
|
||||
responses={status.HTTP_200_OK: PromotionSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: PromotionSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1218,7 +1293,9 @@ STOCK_SCHEMA = {
|
|||
tags=[
|
||||
"stocks",
|
||||
],
|
||||
summary=_("rewrite some fields of an existing stock record saving non-editables"),
|
||||
summary=_(
|
||||
"rewrite some fields of an existing stock record saving non-editables"
|
||||
),
|
||||
responses={status.HTTP_200_OK: StockDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
}
|
||||
|
|
@ -1229,7 +1306,10 @@ PRODUCT_TAG_SCHEMA = {
|
|||
"productTags",
|
||||
],
|
||||
summary=_("list all product tags (simple view)"),
|
||||
responses={status.HTTP_200_OK: ProductTagSimpleSerializer(many=True), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_200_OK: ProductTagSimpleSerializer(many=True),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"retrieve": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1243,7 +1323,10 @@ PRODUCT_TAG_SCHEMA = {
|
|||
"productTags",
|
||||
],
|
||||
summary=_("create a product tag"),
|
||||
responses={status.HTTP_201_CREATED: ProductTagDetailSerializer(), **BASE_ERRORS},
|
||||
responses={
|
||||
status.HTTP_201_CREATED: ProductTagDetailSerializer(),
|
||||
**BASE_ERRORS,
|
||||
},
|
||||
),
|
||||
"destroy": extend_schema(
|
||||
tags=[
|
||||
|
|
@ -1263,7 +1346,9 @@ PRODUCT_TAG_SCHEMA = {
|
|||
tags=[
|
||||
"productTags",
|
||||
],
|
||||
summary=_("rewrite some fields of an existing product tag saving non-editables"),
|
||||
summary=_(
|
||||
"rewrite some fields of an existing product tag saving non-editables"
|
||||
),
|
||||
responses={status.HTTP_200_OK: ProductTagDetailSerializer(), **BASE_ERRORS},
|
||||
),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import re
|
||||
from typing import Any
|
||||
from typing import Any, Callable
|
||||
|
||||
from typing import Callable
|
||||
from django.conf import settings
|
||||
from django.db.models import QuerySet
|
||||
from django.http import Http404
|
||||
|
|
@ -86,7 +85,13 @@ functions = [
|
|||
"weight": 0.3,
|
||||
},
|
||||
{
|
||||
"filter": Q("bool", must=[Q("term", **{"_index": "products"}), Q("term", **{"personal_orders_only": False})]),
|
||||
"filter": Q(
|
||||
"bool",
|
||||
must=[
|
||||
Q("term", **{"_index": "products"}),
|
||||
Q("term", **{"personal_orders_only": False}),
|
||||
],
|
||||
),
|
||||
"weight": 0.7,
|
||||
},
|
||||
{
|
||||
|
|
@ -176,9 +181,15 @@ def process_query(
|
|||
if is_code_like:
|
||||
text_shoulds.extend(
|
||||
[
|
||||
Q("term", **{"partnumber.raw": {"value": query.lower(), "boost": 14.0}}),
|
||||
Q(
|
||||
"term",
|
||||
**{"partnumber.raw": {"value": query.lower(), "boost": 14.0}},
|
||||
),
|
||||
Q("term", **{"sku.raw": {"value": query.lower(), "boost": 12.0}}),
|
||||
Q("prefix", **{"partnumber.raw": {"value": query.lower(), "boost": 4.0}}),
|
||||
Q(
|
||||
"prefix",
|
||||
**{"partnumber.raw": {"value": query.lower(), "boost": 4.0}},
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
|
|
@ -227,14 +238,25 @@ def process_query(
|
|||
search_products = build_search(["products"], size=33)
|
||||
resp_products = search_products.execute()
|
||||
|
||||
results: dict[str, list[dict[str, Any]]] = {"products": [], "categories": [], "brands": [], "posts": []}
|
||||
uuids_by_index: dict[str, list[str]] = {"products": [], "categories": [], "brands": []}
|
||||
results: dict[str, list[dict[str, Any]]] = {
|
||||
"products": [],
|
||||
"categories": [],
|
||||
"brands": [],
|
||||
"posts": [],
|
||||
}
|
||||
uuids_by_index: dict[str, list[str]] = {
|
||||
"products": [],
|
||||
"categories": [],
|
||||
"brands": [],
|
||||
}
|
||||
hit_cache: list[Any] = []
|
||||
|
||||
seen_keys: set[tuple[str, str]] = set()
|
||||
|
||||
def _hit_key(hittee: Any) -> tuple[str, str]:
|
||||
return hittee.meta.index, str(getattr(hittee, "uuid", None) or hittee.meta.id)
|
||||
return hittee.meta.index, str(
|
||||
getattr(hittee, "uuid", None) or hittee.meta.id
|
||||
)
|
||||
|
||||
def _collect_hits(hits: list[Any]) -> None:
|
||||
for hh in hits:
|
||||
|
|
@ -267,7 +289,12 @@ def process_query(
|
|||
]
|
||||
for qx in product_exact_sequence:
|
||||
try:
|
||||
resp_exact = Search(index=["products"]).query(qx).extra(size=5, track_total_hits=False).execute()
|
||||
resp_exact = (
|
||||
Search(index=["products"])
|
||||
.query(qx)
|
||||
.extra(size=5, track_total_hits=False)
|
||||
.execute()
|
||||
)
|
||||
except NotFoundError:
|
||||
resp_exact = None
|
||||
if resp_exact is not None and getattr(resp_exact, "hits", None):
|
||||
|
|
@ -314,13 +341,23 @@ def process_query(
|
|||
.prefetch_related("images")
|
||||
}
|
||||
if uuids_by_index.get("brands"):
|
||||
brands_by_uuid = {str(b.uuid): b for b in Brand.objects.filter(uuid__in=uuids_by_index["brands"])}
|
||||
brands_by_uuid = {
|
||||
str(b.uuid): b
|
||||
for b in Brand.objects.filter(uuid__in=uuids_by_index["brands"])
|
||||
}
|
||||
if uuids_by_index.get("categories"):
|
||||
cats_by_uuid = {str(c.uuid): c for c in Category.objects.filter(uuid__in=uuids_by_index["categories"])}
|
||||
cats_by_uuid = {
|
||||
str(c.uuid): c
|
||||
for c in Category.objects.filter(
|
||||
uuid__in=uuids_by_index["categories"]
|
||||
)
|
||||
}
|
||||
|
||||
for hit in hit_cache:
|
||||
obj_uuid = getattr(hit, "uuid", None) or hit.meta.id
|
||||
obj_name = getattr(hit, "name", None) or getattr(hit, "title", None) or "N/A"
|
||||
obj_name = (
|
||||
getattr(hit, "name", None) or getattr(hit, "title", None) or "N/A"
|
||||
)
|
||||
obj_slug = getattr(hit, "slug", "") or (
|
||||
slugify(obj_name) if hit.meta.index in {"brands", "categories"} else ""
|
||||
)
|
||||
|
|
@ -353,8 +390,12 @@ def process_query(
|
|||
if idx == "products":
|
||||
hit_result["rating_debug"] = getattr(hit, "rating", 0)
|
||||
hit_result["total_orders_debug"] = getattr(hit, "total_orders", 0)
|
||||
hit_result["brand_priority_debug"] = getattr(hit, "brand_priority", 0)
|
||||
hit_result["category_priority_debug"] = getattr(hit, "category_priority", 0)
|
||||
hit_result["brand_priority_debug"] = getattr(
|
||||
hit, "brand_priority", 0
|
||||
)
|
||||
hit_result["category_priority_debug"] = getattr(
|
||||
hit, "category_priority", 0
|
||||
)
|
||||
if idx in ("brands", "categories"):
|
||||
hit_result["priority_debug"] = getattr(hit, "priority", 0)
|
||||
|
||||
|
|
@ -402,14 +443,22 @@ class ActiveOnlyMixin:
|
|||
COMMON_ANALYSIS = {
|
||||
"char_filter": {
|
||||
"icu_nfkc_cf": {"type": "icu_normalizer", "name": "nfkc_cf"},
|
||||
"strip_ws_punct": {"type": "pattern_replace", "pattern": "[\\s\\p{Punct}]+", "replacement": ""},
|
||||
"strip_ws_punct": {
|
||||
"type": "pattern_replace",
|
||||
"pattern": "[\\s\\p{Punct}]+",
|
||||
"replacement": "",
|
||||
},
|
||||
},
|
||||
"filter": {
|
||||
"edge_ngram_filter": {"type": "edge_ngram", "min_gram": 1, "max_gram": 20},
|
||||
"ngram_filter": {"type": "ngram", "min_gram": 2, "max_gram": 20},
|
||||
"cjk_bigram": {"type": "cjk_bigram"},
|
||||
"icu_folding": {"type": "icu_folding"},
|
||||
"double_metaphone": {"type": "phonetic", "encoder": "double_metaphone", "replace": False},
|
||||
"double_metaphone": {
|
||||
"type": "phonetic",
|
||||
"encoder": "double_metaphone",
|
||||
"replace": False,
|
||||
},
|
||||
"arabic_norm": {"type": "arabic_normalization"},
|
||||
"indic_norm": {"type": "indic_normalization"},
|
||||
"icu_any_latin": {"type": "icu_transform", "id": "Any-Latin"},
|
||||
|
|
@ -520,9 +569,13 @@ def add_multilang_fields(cls: Any) -> None:
|
|||
copy_to="name",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
"translit": fields.TextField(analyzer="translit_index", search_analyzer="translit_query"),
|
||||
"translit": fields.TextField(
|
||||
analyzer="translit_index", search_analyzer="translit_query"
|
||||
),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
|
@ -542,9 +595,13 @@ def add_multilang_fields(cls: Any) -> None:
|
|||
copy_to="description",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
"translit": fields.TextField(analyzer="translit_index", search_analyzer="translit_query"),
|
||||
"translit": fields.TextField(
|
||||
analyzer="translit_index", search_analyzer="translit_query"
|
||||
),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
|
@ -582,7 +639,9 @@ def process_system_query(
|
|||
if is_cjk or is_rtl_or_indic:
|
||||
fields_all = [f for f in fields_all if ".phonetic" not in f]
|
||||
fields_all = [
|
||||
f.replace("ngram^6", "ngram^8").replace("ngram^5", "ngram^7").replace("ngram^3", "ngram^4")
|
||||
f.replace("ngram^6", "ngram^8")
|
||||
.replace("ngram^5", "ngram^7")
|
||||
.replace("ngram^3", "ngram^4")
|
||||
for f in fields_all
|
||||
]
|
||||
|
||||
|
|
@ -601,7 +660,11 @@ def process_system_query(
|
|||
results: dict[str, list[dict[str, Any]]] = {idx: [] for idx in indexes}
|
||||
|
||||
for idx in indexes:
|
||||
s = Search(index=[idx]).query(mm).extra(size=size_per_index, track_total_hits=False)
|
||||
s = (
|
||||
Search(index=[idx])
|
||||
.query(mm)
|
||||
.extra(size=size_per_index, track_total_hits=False)
|
||||
)
|
||||
resp = s.execute()
|
||||
for h in resp.hits:
|
||||
name = getattr(h, "name", None) or getattr(h, "title", None) or "N/A"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,11 @@ from django_elasticsearch_dsl import Document, fields
|
|||
from django_elasticsearch_dsl.registries import registry
|
||||
from health_check.db.models import TestModel
|
||||
|
||||
from engine.core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_fields
|
||||
from engine.core.elasticsearch import (
|
||||
COMMON_ANALYSIS,
|
||||
ActiveOnlyMixin,
|
||||
add_multilang_fields,
|
||||
)
|
||||
from engine.core.models import Brand, Category, Product
|
||||
|
||||
|
||||
|
|
@ -15,10 +19,16 @@ class BaseDocument(Document): # type: ignore [misc]
|
|||
analyzer="standard",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
"auto": fields.TextField(analyzer="autocomplete", search_analyzer="autocomplete_search"),
|
||||
"translit": fields.TextField(analyzer="translit_index", search_analyzer="translit_query"),
|
||||
"auto": fields.TextField(
|
||||
analyzer="autocomplete", search_analyzer="autocomplete_search"
|
||||
),
|
||||
"translit": fields.TextField(
|
||||
analyzer="translit_index", search_analyzer="translit_query"
|
||||
),
|
||||
"ci": fields.TextField(analyzer="name_exact", search_analyzer="name_exact"),
|
||||
},
|
||||
)
|
||||
|
|
@ -27,10 +37,16 @@ class BaseDocument(Document): # type: ignore [misc]
|
|||
analyzer="standard",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
"auto": fields.TextField(analyzer="autocomplete", search_analyzer="autocomplete_search"),
|
||||
"translit": fields.TextField(analyzer="translit_index", search_analyzer="translit_query"),
|
||||
"auto": fields.TextField(
|
||||
analyzer="autocomplete", search_analyzer="autocomplete_search"
|
||||
),
|
||||
"translit": fields.TextField(
|
||||
analyzer="translit_index", search_analyzer="translit_query"
|
||||
),
|
||||
},
|
||||
)
|
||||
slug = fields.KeywordField(attr="slug")
|
||||
|
|
@ -70,10 +86,16 @@ class ProductDocument(ActiveOnlyMixin, BaseDocument):
|
|||
analyzer="standard",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
"auto": fields.TextField(analyzer="autocomplete", search_analyzer="autocomplete_search"),
|
||||
"translit": fields.TextField(analyzer="translit_index", search_analyzer="translit_query"),
|
||||
"auto": fields.TextField(
|
||||
analyzer="autocomplete", search_analyzer="autocomplete_search"
|
||||
),
|
||||
"translit": fields.TextField(
|
||||
analyzer="translit_index", search_analyzer="translit_query"
|
||||
),
|
||||
},
|
||||
)
|
||||
category_name = fields.TextField(
|
||||
|
|
@ -81,10 +103,16 @@ class ProductDocument(ActiveOnlyMixin, BaseDocument):
|
|||
analyzer="standard",
|
||||
fields={
|
||||
"raw": fields.KeywordField(ignore_above=256),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
"auto": fields.TextField(analyzer="autocomplete", search_analyzer="autocomplete_search"),
|
||||
"translit": fields.TextField(analyzer="translit_index", search_analyzer="translit_query"),
|
||||
"auto": fields.TextField(
|
||||
analyzer="autocomplete", search_analyzer="autocomplete_search"
|
||||
),
|
||||
"translit": fields.TextField(
|
||||
analyzer="translit_index", search_analyzer="translit_query"
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -93,8 +121,12 @@ class ProductDocument(ActiveOnlyMixin, BaseDocument):
|
|||
normalizer="lc_norm",
|
||||
fields={
|
||||
"raw": fields.KeywordField(normalizer="lc_norm"),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"auto": fields.TextField(analyzer="autocomplete", search_analyzer="autocomplete_search"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"auto": fields.TextField(
|
||||
analyzer="autocomplete", search_analyzer="autocomplete_search"
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -103,8 +135,12 @@ class ProductDocument(ActiveOnlyMixin, BaseDocument):
|
|||
normalizer="lc_norm",
|
||||
fields={
|
||||
"raw": fields.KeywordField(normalizer="lc_norm"),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"auto": fields.TextField(analyzer="autocomplete", search_analyzer="autocomplete_search"),
|
||||
"ngram": fields.TextField(
|
||||
analyzer="name_ngram", search_analyzer="icu_query"
|
||||
),
|
||||
"auto": fields.TextField(
|
||||
analyzer="autocomplete", search_analyzer="autocomplete_search"
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,16 @@ from graphene import Context
|
|||
from rest_framework.request import Request
|
||||
|
||||
from engine.core.elasticsearch import process_query
|
||||
from engine.core.models import Address, Brand, Category, Feedback, Order, Product, Stock, Wishlist
|
||||
from engine.core.models import (
|
||||
Address,
|
||||
Brand,
|
||||
Category,
|
||||
Feedback,
|
||||
Order,
|
||||
Product,
|
||||
Stock,
|
||||
Wishlist,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -69,19 +78,31 @@ class ProductFilter(FilterSet): # type: ignore [misc]
|
|||
search = CharFilter(field_name="name", method="search_products", label=_("Search"))
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
||||
categories = CaseInsensitiveListFilter(field_name="category__name", label=_("Categories"))
|
||||
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"))
|
||||
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"))
|
||||
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"))
|
||||
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"))
|
||||
include_subcategories = BooleanFilter(
|
||||
method="filter_include_flag", label=_("Include sub-categories")
|
||||
)
|
||||
include_personal_ordered = BooleanFilter(
|
||||
method="filter_include_personal_ordered",
|
||||
label=_("Include personal ordered"),
|
||||
|
|
@ -161,7 +182,9 @@ class ProductFilter(FilterSet): # type: ignore [misc]
|
|||
)
|
||||
)
|
||||
|
||||
def search_products(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||
def search_products(
|
||||
self, queryset: QuerySet[Product], name: str, value: str
|
||||
) -> QuerySet[Product]:
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
|
|
@ -173,23 +196,35 @@ class ProductFilter(FilterSet): # type: ignore [misc]
|
|||
# Preserve ES order using a CASE expression
|
||||
when_statements = [When(uuid=u, then=pos) for pos, u in enumerate(uuids)]
|
||||
queryset = queryset.filter(uuid__in=uuids).annotate(
|
||||
es_rank=Case(*when_statements, default=Value(9999), output_field=IntegerField())
|
||||
es_rank=Case(
|
||||
*when_statements, default=Value(9999), output_field=IntegerField()
|
||||
)
|
||||
)
|
||||
# Mark that ES ranking is applied, qs() will order appropriately
|
||||
self._es_rank_applied = True
|
||||
return queryset
|
||||
|
||||
def filter_include_flag(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||
def filter_include_flag(
|
||||
self, queryset: QuerySet[Product], name: str, value: str
|
||||
) -> QuerySet[Product]:
|
||||
if not self.data.get("category_uuid"):
|
||||
raise BadRequest(_("there must be a category_uuid to use include_subcategories flag"))
|
||||
raise BadRequest(
|
||||
_("there must be a category_uuid to use include_subcategories flag")
|
||||
)
|
||||
return queryset
|
||||
|
||||
def filter_include_personal_ordered(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||
def filter_include_personal_ordered(
|
||||
self, queryset: QuerySet[Product], name: str, value: str
|
||||
) -> QuerySet[Product]:
|
||||
if self.data.get("include_personal_ordered", False):
|
||||
queryset = queryset.filter(stocks__isnull=False, stocks__quantity__gt=0, stocks__price__gt=0)
|
||||
queryset = queryset.filter(
|
||||
stocks__isnull=False, stocks__quantity__gt=0, stocks__price__gt=0
|
||||
)
|
||||
return queryset
|
||||
|
||||
def filter_attributes(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||
def filter_attributes(
|
||||
self, queryset: QuerySet[Product], name: str, value: str
|
||||
) -> QuerySet[Product]:
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
|
|
@ -251,7 +286,9 @@ class ProductFilter(FilterSet): # type: ignore [misc]
|
|||
|
||||
return queryset
|
||||
|
||||
def filter_category(self, queryset: QuerySet[Product], name: str, value: str) -> QuerySet[Product]:
|
||||
def filter_category(
|
||||
self, queryset: QuerySet[Product], name: str, value: str
|
||||
) -> QuerySet[Product]:
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
|
|
@ -313,7 +350,11 @@ class ProductFilter(FilterSet): # type: ignore [misc]
|
|||
)
|
||||
)
|
||||
|
||||
requested = [part.strip() for part in ordering_param.split(",") if part.strip()] if ordering_param else []
|
||||
requested = (
|
||||
[part.strip() for part in ordering_param.split(",") if part.strip()]
|
||||
if ordering_param
|
||||
else []
|
||||
)
|
||||
mapped_requested: list[str] = []
|
||||
|
||||
for part in requested:
|
||||
|
|
@ -327,7 +368,11 @@ class ProductFilter(FilterSet): # type: ignore [misc]
|
|||
mapped_requested.append("?")
|
||||
continue
|
||||
|
||||
if key in {"personal_orders_only", "personal_order_only", "personal_order_tail"}:
|
||||
if key in {
|
||||
"personal_orders_only",
|
||||
"personal_order_only",
|
||||
"personal_order_tail",
|
||||
}:
|
||||
continue
|
||||
|
||||
mapped_requested.append(f"-{key}" if desc else key)
|
||||
|
|
@ -353,12 +398,20 @@ class OrderFilter(FilterSet): # type: ignore [misc]
|
|||
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", label=_("User email"))
|
||||
user = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||
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",
|
||||
|
|
@ -404,8 +457,12 @@ class OrderFilter(FilterSet): # type: ignore [misc]
|
|||
|
||||
class WishlistFilter(FilterSet): # type: ignore [misc]
|
||||
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"))
|
||||
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=(
|
||||
|
|
@ -423,7 +480,9 @@ class WishlistFilter(FilterSet): # type: ignore [misc]
|
|||
|
||||
# noinspection PyUnusedLocal
|
||||
class CategoryFilter(FilterSet): # type: ignore [misc]
|
||||
search = CharFilter(field_name="name", method="search_categories", label=_("Search"))
|
||||
search = CharFilter(
|
||||
field_name="name", method="search_categories", label=_("Search")
|
||||
)
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
||||
parent_uuid = CharFilter(method="filter_parent_uuid", label=_("Parent"))
|
||||
|
|
@ -451,15 +510,24 @@ class CategoryFilter(FilterSet): # type: ignore [misc]
|
|||
"whole",
|
||||
]
|
||||
|
||||
def search_categories(self, queryset: QuerySet[Category], name: str, value: str) -> QuerySet[Category]:
|
||||
def search_categories(
|
||||
self, queryset: QuerySet[Category], name: str, value: str
|
||||
) -> QuerySet[Category]:
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
uuids = [category.get("uuid") for category in process_query(query=value, indexes=("categories",))["categories"]] # type: ignore
|
||||
uuids = [
|
||||
category.get("uuid")
|
||||
for category in process_query(query=value, indexes=("categories",))[
|
||||
"categories"
|
||||
]
|
||||
] # type: ignore
|
||||
|
||||
return queryset.filter(uuid__in=uuids)
|
||||
|
||||
def filter_order_by(self, queryset: QuerySet[Category], name: str, value: str) -> QuerySet[Category]:
|
||||
def filter_order_by(
|
||||
self, queryset: QuerySet[Category], name: str, value: str
|
||||
) -> QuerySet[Category]:
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
|
|
@ -505,7 +573,9 @@ class CategoryFilter(FilterSet): # type: ignore [misc]
|
|||
if depth <= 0:
|
||||
return None
|
||||
|
||||
children_qs = Category.objects.all().order_by(order_expression, "tree_id", "lft")
|
||||
children_qs = Category.objects.all().order_by(
|
||||
order_expression, "tree_id", "lft"
|
||||
)
|
||||
nested_prefetch = build_ordered_prefetch(depth - 1)
|
||||
|
||||
if nested_prefetch:
|
||||
|
|
@ -521,7 +591,9 @@ class CategoryFilter(FilterSet): # type: ignore [misc]
|
|||
|
||||
return qs
|
||||
|
||||
def filter_whole_categories(self, queryset: QuerySet[Category], name: str, value: str) -> QuerySet[Category]:
|
||||
def filter_whole_categories(
|
||||
self, queryset: QuerySet[Category], name: str, value: str
|
||||
) -> QuerySet[Category]:
|
||||
has_own_products = Exists(Product.objects.filter(category=OuterRef("pk")))
|
||||
has_desc_products = Exists(
|
||||
Product.objects.filter(
|
||||
|
|
@ -554,7 +626,9 @@ class BrandFilter(FilterSet): # type: ignore [misc]
|
|||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact")
|
||||
name = CharFilter(lookup_expr="icontains", label=_("Name"))
|
||||
slug = CharFilter(field_name="slug", lookup_expr="exact", label=_("Slug"))
|
||||
categories = CaseInsensitiveListFilter(field_name="categories__uuid", lookup_expr="exact", label=_("Categories"))
|
||||
categories = CaseInsensitiveListFilter(
|
||||
field_name="categories__uuid", lookup_expr="exact", label=_("Categories")
|
||||
)
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
@ -570,11 +644,16 @@ class BrandFilter(FilterSet): # type: ignore [misc]
|
|||
model = Brand
|
||||
fields = ["uuid", "name", "slug", "priority"]
|
||||
|
||||
def search_brands(self, queryset: QuerySet[Brand], name: str, value: str) -> QuerySet[Brand]:
|
||||
def search_brands(
|
||||
self, queryset: QuerySet[Brand], name: str, value: str
|
||||
) -> QuerySet[Brand]:
|
||||
if not value:
|
||||
return queryset
|
||||
|
||||
uuids = [brand.get("uuid") for brand in process_query(query=value, indexes=("brands",))["brands"]] # type: ignore
|
||||
uuids = [
|
||||
brand.get("uuid")
|
||||
for brand in process_query(query=value, indexes=("brands",))["brands"]
|
||||
] # type: ignore
|
||||
|
||||
return queryset.filter(uuid__in=uuids)
|
||||
|
||||
|
|
@ -610,8 +689,12 @@ class FeedbackFilter(FilterSet): # type: ignore [misc]
|
|||
|
||||
class AddressFilter(FilterSet): # type: ignore [misc]
|
||||
uuid = UUIDFilter(field_name="uuid", lookup_expr="exact", label=_("UUID"))
|
||||
user_uuid = UUIDFilter(field_name="user__uuid", lookup_expr="exact", label=_("User UUID"))
|
||||
user_email = CharFilter(field_name="user__email", lookup_expr="iexact", label=_("User email"))
|
||||
user_uuid = UUIDFilter(
|
||||
field_name="user__uuid", lookup_expr="exact", label=_("User UUID")
|
||||
)
|
||||
user_email = CharFilter(
|
||||
field_name="user__email", lookup_expr="iexact", label=_("User email")
|
||||
)
|
||||
|
||||
order_by = OrderingFilter(
|
||||
fields=(
|
||||
|
|
|
|||
|
|
@ -37,7 +37,9 @@ class CacheOperator(BaseMutation):
|
|||
description = _("cache I/O")
|
||||
|
||||
class Arguments:
|
||||
key = String(required=True, description=_("key to look for in or set into the cache"))
|
||||
key = String(
|
||||
required=True, description=_("key to look for in or set into the cache")
|
||||
)
|
||||
data = GenericScalar(required=False, description=_("data to store in cache"))
|
||||
timeout = Int(
|
||||
required=False,
|
||||
|
|
@ -68,7 +70,9 @@ class RequestCursedURL(BaseMutation):
|
|||
try:
|
||||
data = cache.get(url, None)
|
||||
if not data:
|
||||
response = requests.get(url, headers={"content-type": "application/json"})
|
||||
response = requests.get(
|
||||
url, headers={"content-type": "application/json"}
|
||||
)
|
||||
response.raise_for_status()
|
||||
data = camelize(response.json())
|
||||
cache.set(url, data, 86400)
|
||||
|
|
@ -97,7 +101,9 @@ class AddOrderProduct(BaseMutation):
|
|||
if not (user.has_perm("core.add_orderproduct") or user == order.user):
|
||||
raise PermissionDenied(permission_denied_message)
|
||||
|
||||
order = order.add_product(product_uuid=product_uuid, attributes=format_attributes(attributes))
|
||||
order = order.add_product(
|
||||
product_uuid=product_uuid, attributes=format_attributes(attributes)
|
||||
)
|
||||
|
||||
return AddOrderProduct(order=order)
|
||||
except Order.DoesNotExist as dne:
|
||||
|
|
@ -124,7 +130,9 @@ class RemoveOrderProduct(BaseMutation):
|
|||
if not (user.has_perm("core.change_orderproduct") or user == order.user):
|
||||
raise PermissionDenied(permission_denied_message)
|
||||
|
||||
order = order.remove_product(product_uuid=product_uuid, attributes=format_attributes(attributes))
|
||||
order = order.remove_product(
|
||||
product_uuid=product_uuid, attributes=format_attributes(attributes)
|
||||
)
|
||||
|
||||
return RemoveOrderProduct(order=order)
|
||||
except Order.DoesNotExist as dne:
|
||||
|
|
@ -208,7 +216,11 @@ class BuyOrder(BaseMutation):
|
|||
chosen_products=None,
|
||||
): # type: ignore [override]
|
||||
if not any([order_uuid, order_hr_id]) or all([order_uuid, order_hr_id]):
|
||||
raise BadRequest(_("please provide either order_uuid or order_hr_id - mutually exclusive"))
|
||||
raise BadRequest(
|
||||
_(
|
||||
"please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||
)
|
||||
)
|
||||
user = info.context.user
|
||||
try:
|
||||
order = None
|
||||
|
|
@ -233,7 +245,11 @@ class BuyOrder(BaseMutation):
|
|||
case "<class 'engine.core.models.Order'>":
|
||||
return BuyOrder(order=instance)
|
||||
case _:
|
||||
raise TypeError(_(f"wrong type came from order.buy() method: {type(instance)!s}"))
|
||||
raise TypeError(
|
||||
_(
|
||||
f"wrong type came from order.buy() method: {type(instance)!s}"
|
||||
)
|
||||
)
|
||||
|
||||
except Order.DoesNotExist as dne:
|
||||
raise Http404(_(f"order {order_uuid} not found")) from dne
|
||||
|
|
@ -262,7 +278,11 @@ class BulkOrderAction(BaseMutation):
|
|||
order_hr_id=None,
|
||||
): # type: ignore [override]
|
||||
if not any([order_uuid, order_hr_id]) or all([order_uuid, order_hr_id]):
|
||||
raise BadRequest(_("please provide either order_uuid or order_hr_id - mutually exclusive"))
|
||||
raise BadRequest(
|
||||
_(
|
||||
"please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||
)
|
||||
)
|
||||
user = info.context.user
|
||||
try:
|
||||
order = None
|
||||
|
|
@ -491,14 +511,20 @@ class BuyWishlist(BaseMutation):
|
|||
):
|
||||
order.add_product(product_uuid=product.pk)
|
||||
|
||||
instance = order.buy(force_balance=force_balance, force_payment=force_payment)
|
||||
instance = order.buy(
|
||||
force_balance=force_balance, force_payment=force_payment
|
||||
)
|
||||
match str(type(instance)):
|
||||
case "<class 'engine.payments.models.Transaction'>":
|
||||
return BuyWishlist(transaction=instance)
|
||||
case "<class 'engine.core.models.Order'>":
|
||||
return BuyWishlist(order=instance)
|
||||
case _:
|
||||
raise TypeError(_(f"wrong type came from order.buy() method: {type(instance)!s}"))
|
||||
raise TypeError(
|
||||
_(
|
||||
f"wrong type came from order.buy() method: {type(instance)!s}"
|
||||
)
|
||||
)
|
||||
|
||||
except Wishlist.DoesNotExist as dne:
|
||||
raise Http404(_(f"wishlist {wishlist_uuid} not found")) from dne
|
||||
|
|
@ -513,7 +539,9 @@ class BuyProduct(BaseMutation):
|
|||
product_uuid = UUID(required=True)
|
||||
attributes = String(
|
||||
required=False,
|
||||
description=_("please send the attributes as the string formatted like attr1=value1,attr2=value2"),
|
||||
description=_(
|
||||
"please send the attributes as the string formatted like attr1=value1,attr2=value2"
|
||||
),
|
||||
)
|
||||
force_balance = Boolean(required=False)
|
||||
force_payment = Boolean(required=False)
|
||||
|
|
@ -532,7 +560,9 @@ class BuyProduct(BaseMutation):
|
|||
): # type: ignore [override]
|
||||
user = info.context.user
|
||||
order = Order.objects.create(user=user, status="MOMENTAL")
|
||||
order.add_product(product_uuid=product_uuid, attributes=format_attributes(attributes))
|
||||
order.add_product(
|
||||
product_uuid=product_uuid, attributes=format_attributes(attributes)
|
||||
)
|
||||
instance = order.buy(force_balance=force_balance, force_payment=force_payment)
|
||||
match str(type(instance)):
|
||||
case "<class 'engine.payments.models.Transaction'>":
|
||||
|
|
@ -540,7 +570,9 @@ class BuyProduct(BaseMutation):
|
|||
case "<class 'engine.core.models.Order'>":
|
||||
return BuyProduct(order=instance)
|
||||
case _:
|
||||
raise TypeError(_(f"wrong type came from order.buy() method: {type(instance)!s}"))
|
||||
raise TypeError(
|
||||
_(f"wrong type came from order.buy() method: {type(instance)!s}")
|
||||
)
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal,PyTypeChecker
|
||||
|
|
@ -566,7 +598,9 @@ class FeedbackProductAction(BaseMutation):
|
|||
feedback = None
|
||||
match action:
|
||||
case "add":
|
||||
feedback = order_product.do_feedback(comment=comment, rating=rating, action="add")
|
||||
feedback = order_product.do_feedback(
|
||||
comment=comment, rating=rating, action="add"
|
||||
)
|
||||
case "remove":
|
||||
feedback = order_product.do_feedback(action="remove")
|
||||
case _:
|
||||
|
|
@ -579,7 +613,9 @@ class FeedbackProductAction(BaseMutation):
|
|||
# noinspection PyUnusedLocal,PyTypeChecker
|
||||
class CreateAddress(BaseMutation):
|
||||
class Arguments:
|
||||
raw_data = String(required=True, description=_("original address string provided by the user"))
|
||||
raw_data = String(
|
||||
required=True, description=_("original address string provided by the user")
|
||||
)
|
||||
|
||||
address = Field(AddressType)
|
||||
|
||||
|
|
|
|||
|
|
@ -119,7 +119,15 @@ class BrandType(DjangoObjectType): # type: ignore [misc]
|
|||
class Meta:
|
||||
model = Brand
|
||||
interfaces = (relay.Node,)
|
||||
fields = ("uuid", "categories", "name", "description", "big_logo", "small_logo", "slug")
|
||||
fields = (
|
||||
"uuid",
|
||||
"categories",
|
||||
"name",
|
||||
"description",
|
||||
"big_logo",
|
||||
"small_logo",
|
||||
"slug",
|
||||
)
|
||||
filter_fields = ["uuid", "name"]
|
||||
description = _("brands")
|
||||
|
||||
|
|
@ -129,12 +137,20 @@ class BrandType(DjangoObjectType): # type: ignore [misc]
|
|||
return self.categories.filter(is_active=True)
|
||||
|
||||
def resolve_big_logo(self: Brand, info) -> str | None:
|
||||
return info.context.build_absolute_uri(self.big_logo.url) if self.big_logo else ""
|
||||
return (
|
||||
info.context.build_absolute_uri(self.big_logo.url) if self.big_logo else ""
|
||||
)
|
||||
|
||||
def resolve_small_logo(self: Brand, info) -> str | None:
|
||||
return info.context.build_absolute_uri(self.small_logo.url) if self.small_logo else ""
|
||||
return (
|
||||
info.context.build_absolute_uri(self.small_logo.url)
|
||||
if self.small_logo
|
||||
else ""
|
||||
)
|
||||
|
||||
def resolve_seo_meta(self: Brand, info) -> dict[str, str | list[Any] | dict[str, str] | None]:
|
||||
def resolve_seo_meta(
|
||||
self: Brand, info
|
||||
) -> dict[str, str | list[Any] | dict[str, str] | None]:
|
||||
lang = graphene_current_lang()
|
||||
base = f"https://{settings.BASE_DOMAIN}"
|
||||
canonical = f"{base}/{lang}/brand/{self.slug}"
|
||||
|
|
@ -154,7 +170,12 @@ class BrandType(DjangoObjectType): # type: ignore [misc]
|
|||
"url": canonical,
|
||||
"image": logo_url or "",
|
||||
}
|
||||
tw = {"card": "summary_large_image", "title": title, "description": description, "image": logo_url or ""}
|
||||
tw = {
|
||||
"card": "summary_large_image",
|
||||
"title": title,
|
||||
"description": description,
|
||||
"image": logo_url or "",
|
||||
}
|
||||
|
||||
crumbs = [("Home", f"{base}/"), (self.name, canonical)]
|
||||
|
||||
|
|
@ -196,14 +217,22 @@ class CategoryType(DjangoObjectType): # type: ignore [misc]
|
|||
markup_percent = Float(required=False, description=_("markup percentage"))
|
||||
filterable_attributes = List(
|
||||
NonNull(FilterableAttributeType),
|
||||
description=_("which attributes and values can be used for filtering this category."),
|
||||
description=_(
|
||||
"which attributes and values can be used for filtering this category."
|
||||
),
|
||||
)
|
||||
min_max_prices = Field(
|
||||
NonNull(MinMaxPriceType),
|
||||
description=_("minimum and maximum prices for products in this category, if available."),
|
||||
description=_(
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
),
|
||||
)
|
||||
tags = DjangoFilterConnectionField(
|
||||
lambda: CategoryTagType, description=_("tags for this category")
|
||||
)
|
||||
products = DjangoFilterConnectionField(
|
||||
lambda: ProductType, description=_("products in this category")
|
||||
)
|
||||
tags = DjangoFilterConnectionField(lambda: CategoryTagType, description=_("tags for this category"))
|
||||
products = DjangoFilterConnectionField(lambda: ProductType, description=_("products in this category"))
|
||||
seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot"))
|
||||
|
||||
class Meta:
|
||||
|
|
@ -253,7 +282,9 @@ class CategoryType(DjangoObjectType): # type: ignore [misc]
|
|||
)
|
||||
min_max_prices["min_price"] = price_aggregation.get("min_price", 0.0)
|
||||
min_max_prices["max_price"] = price_aggregation.get("max_price", 0.0)
|
||||
cache.set(key=f"{self.name}_min_max_prices", value=min_max_prices, timeout=86400)
|
||||
cache.set(
|
||||
key=f"{self.name}_min_max_prices", value=min_max_prices, timeout=86400
|
||||
)
|
||||
|
||||
return {
|
||||
"min_price": min_max_prices["min_price"],
|
||||
|
|
@ -267,7 +298,11 @@ class CategoryType(DjangoObjectType): # type: ignore [misc]
|
|||
title = f"{self.name} | {settings.PROJECT_NAME}"
|
||||
description = (self.description or "")[:180]
|
||||
|
||||
og_image = graphene_abs(info.context, self.image.url) if getattr(self, "image", None) else ""
|
||||
og_image = (
|
||||
graphene_abs(info.context, self.image.url)
|
||||
if getattr(self, "image", None)
|
||||
else ""
|
||||
)
|
||||
|
||||
og = {
|
||||
"title": title,
|
||||
|
|
@ -276,14 +311,24 @@ class CategoryType(DjangoObjectType): # type: ignore [misc]
|
|||
"url": canonical,
|
||||
"image": og_image,
|
||||
}
|
||||
tw = {"card": "summary_large_image", "title": title, "description": description, "image": og_image}
|
||||
tw = {
|
||||
"card": "summary_large_image",
|
||||
"title": title,
|
||||
"description": description,
|
||||
"image": og_image,
|
||||
}
|
||||
|
||||
crumbs = [("Home", f"{base}/")]
|
||||
for c in self.get_ancestors():
|
||||
crumbs.append((c.name, f"{base}/{lang}/catalog/{c.slug}"))
|
||||
crumbs.append((self.name, canonical))
|
||||
|
||||
json_ld = [org_schema(), website_schema(), breadcrumb_schema(crumbs), category_schema(self, canonical)]
|
||||
json_ld = [
|
||||
org_schema(),
|
||||
website_schema(),
|
||||
breadcrumb_schema(crumbs),
|
||||
category_schema(self, canonical),
|
||||
]
|
||||
|
||||
product_urls = []
|
||||
qs = (
|
||||
|
|
@ -356,7 +401,9 @@ class AddressType(DjangoObjectType): # type: ignore [misc]
|
|||
|
||||
class FeedbackType(DjangoObjectType): # type: ignore [misc]
|
||||
comment = String(description=_("comment"))
|
||||
rating = Int(description=_("rating value from 1 to 10, inclusive, or 0 if not set."))
|
||||
rating = Int(
|
||||
description=_("rating value from 1 to 10, inclusive, or 0 if not set.")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Feedback
|
||||
|
|
@ -369,7 +416,9 @@ class FeedbackType(DjangoObjectType): # type: ignore [misc]
|
|||
class OrderProductType(DjangoObjectType): # type: ignore [misc]
|
||||
attributes = GenericScalar(description=_("attributes"))
|
||||
notifications = GenericScalar(description=_("notifications"))
|
||||
download_url = String(description=_("download url for this order product if applicable"))
|
||||
download_url = String(
|
||||
description=_("download url for this order product if applicable")
|
||||
)
|
||||
feedback = Field(lambda: FeedbackType, description=_("feedback"))
|
||||
|
||||
class Meta:
|
||||
|
|
@ -409,14 +458,18 @@ class OrderType(DjangoObjectType): # type: ignore [misc]
|
|||
billing_address = Field(AddressType, description=_("billing address"))
|
||||
shipping_address = Field(
|
||||
AddressType,
|
||||
description=_("shipping address for this order, leave blank if same as billing address or if not applicable"),
|
||||
description=_(
|
||||
"shipping address for this order, leave blank if same as billing address or if not applicable"
|
||||
),
|
||||
)
|
||||
total_price = Float(description=_("total price of this order"))
|
||||
total_quantity = Int(description=_("total quantity of products in order"))
|
||||
is_whole_digital = Float(description=_("are all products in the order digital"))
|
||||
attributes = GenericScalar(description=_("attributes"))
|
||||
notifications = GenericScalar(description=_("notifications"))
|
||||
payments_transactions = Field(TransactionType, description=_("transactions for this order"))
|
||||
payments_transactions = Field(
|
||||
TransactionType, description=_("transactions for this order")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Order
|
||||
|
|
@ -474,13 +527,17 @@ class ProductType(DjangoObjectType): # type: ignore [misc]
|
|||
images = DjangoFilterConnectionField(ProductImageType, description=_("images"))
|
||||
feedbacks = DjangoFilterConnectionField(FeedbackType, description=_("feedbacks"))
|
||||
brand = Field(BrandType, description=_("brand"))
|
||||
attribute_groups = DjangoFilterConnectionField(AttributeGroupType, description=_("attribute groups"))
|
||||
attribute_groups = DjangoFilterConnectionField(
|
||||
AttributeGroupType, description=_("attribute groups")
|
||||
)
|
||||
price = Float(description=_("price"))
|
||||
quantity = Float(description=_("quantity"))
|
||||
feedbacks_count = Int(description=_("number of feedbacks"))
|
||||
personal_orders_only = Boolean(description=_("only available for personal orders"))
|
||||
seo_meta = Field(SEOMetaType, description=_("SEO Meta snapshot"))
|
||||
rating = Float(description=_("rating value from 1 to 10, inclusive, or 0 if not set."))
|
||||
rating = Float(
|
||||
description=_("rating value from 1 to 10, inclusive, or 0 if not set.")
|
||||
)
|
||||
discount_price = Float(description=_("discount price"))
|
||||
|
||||
class Meta:
|
||||
|
|
@ -524,7 +581,9 @@ class ProductType(DjangoObjectType): # type: ignore [misc]
|
|||
def resolve_attribute_groups(self: Product, info):
|
||||
info.context._product_uuid = self.uuid
|
||||
|
||||
return AttributeGroup.objects.filter(attributes__values__product=self).distinct()
|
||||
return AttributeGroup.objects.filter(
|
||||
attributes__values__product=self
|
||||
).distinct()
|
||||
|
||||
def resolve_quantity(self: Product, _info) -> int:
|
||||
return self.quantity or 0
|
||||
|
|
@ -549,7 +608,12 @@ class ProductType(DjangoObjectType): # type: ignore [misc]
|
|||
"url": canonical,
|
||||
"image": og_image,
|
||||
}
|
||||
tw = {"card": "summary_large_image", "title": title, "description": description, "image": og_image}
|
||||
tw = {
|
||||
"card": "summary_large_image",
|
||||
"title": title,
|
||||
"description": description,
|
||||
"image": og_image,
|
||||
}
|
||||
|
||||
crumbs = [("Home", f"{base}/")]
|
||||
if self.category:
|
||||
|
|
@ -611,14 +675,20 @@ class PromoCodeType(DjangoObjectType): # type: ignore [misc]
|
|||
description = _("promocodes")
|
||||
|
||||
def resolve_discount(self: PromoCode, _info) -> float:
|
||||
return float(self.discount_percent) if self.discount_percent else float(self.discount_amount) # type: ignore [arg-type]
|
||||
return (
|
||||
float(self.discount_percent)
|
||||
if self.discount_percent
|
||||
else float(self.discount_amount)
|
||||
) # type: ignore [arg-type]
|
||||
|
||||
def resolve_discount_type(self: PromoCode, _info) -> str:
|
||||
return "percent" if self.discount_percent else "amount"
|
||||
|
||||
|
||||
class PromotionType(DjangoObjectType): # type: ignore [misc]
|
||||
products = DjangoFilterConnectionField(ProductType, description=_("products on sale"))
|
||||
products = DjangoFilterConnectionField(
|
||||
ProductType, description=_("products on sale")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Promotion
|
||||
|
|
@ -641,7 +711,9 @@ class StockType(DjangoObjectType): # type: ignore [misc]
|
|||
|
||||
|
||||
class WishlistType(DjangoObjectType): # type: ignore [misc]
|
||||
products = DjangoFilterConnectionField(ProductType, description=_("wishlisted products"))
|
||||
products = DjangoFilterConnectionField(
|
||||
ProductType, description=_("wishlisted products")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Wishlist
|
||||
|
|
@ -651,7 +723,9 @@ class WishlistType(DjangoObjectType): # type: ignore [misc]
|
|||
|
||||
|
||||
class ProductTagType(DjangoObjectType): # type: ignore [misc]
|
||||
product_set = DjangoFilterConnectionField(ProductType, description=_("tagged products"))
|
||||
product_set = DjangoFilterConnectionField(
|
||||
ProductType, description=_("tagged products")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = ProductTag
|
||||
|
|
@ -662,7 +736,9 @@ class ProductTagType(DjangoObjectType): # type: ignore [misc]
|
|||
|
||||
|
||||
class CategoryTagType(DjangoObjectType): # type: ignore [misc]
|
||||
category_set = DjangoFilterConnectionField(CategoryType, description=_("tagged categories"))
|
||||
category_set = DjangoFilterConnectionField(
|
||||
CategoryType, description=_("tagged categories")
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = CategoryTag
|
||||
|
|
@ -677,7 +753,11 @@ class ConfigType(ObjectType): # type: ignore [misc]
|
|||
company_name = String(description=_("company name"))
|
||||
company_address = String(description=_("company address"))
|
||||
company_phone_number = String(description=_("company phone number"))
|
||||
email_from = String(description=_("email from, sometimes it must be used instead of host user value"))
|
||||
email_from = String(
|
||||
description=_(
|
||||
"email from, sometimes it must be used instead of host user value"
|
||||
)
|
||||
)
|
||||
email_host_user = String(description=_("email host user"))
|
||||
payment_gateway_maximum = Float(description=_("maximum amount for payment"))
|
||||
payment_gateway_minimum = Float(description=_("minimum amount for payment"))
|
||||
|
|
@ -725,9 +805,15 @@ class SearchPostsResultsType(ObjectType): # type: ignore [misc]
|
|||
|
||||
|
||||
class SearchResultsType(ObjectType): # type: ignore [misc]
|
||||
products = List(description=_("products search results"), of_type=SearchProductsResultsType)
|
||||
categories = List(description=_("products search results"), of_type=SearchCategoriesResultsType)
|
||||
brands = List(description=_("products search results"), of_type=SearchBrandsResultsType)
|
||||
products = List(
|
||||
description=_("products search results"), of_type=SearchProductsResultsType
|
||||
)
|
||||
categories = List(
|
||||
description=_("products search results"), of_type=SearchCategoriesResultsType
|
||||
)
|
||||
brands = List(
|
||||
description=_("products search results"), of_type=SearchBrandsResultsType
|
||||
)
|
||||
posts = List(description=_("posts search results"), of_type=SearchPostsResultsType)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -113,13 +113,19 @@ class Query(ObjectType):
|
|||
users = DjangoFilterConnectionField(UserType, filterset_class=UserFilter)
|
||||
addresses = DjangoFilterConnectionField(AddressType, filterset_class=AddressFilter)
|
||||
attribute_groups = DjangoFilterConnectionField(AttributeGroupType)
|
||||
categories = DjangoFilterConnectionField(CategoryType, filterset_class=CategoryFilter)
|
||||
categories = DjangoFilterConnectionField(
|
||||
CategoryType, filterset_class=CategoryFilter
|
||||
)
|
||||
vendors = DjangoFilterConnectionField(VendorType)
|
||||
feedbacks = DjangoFilterConnectionField(FeedbackType, filterset_class=FeedbackFilter)
|
||||
feedbacks = DjangoFilterConnectionField(
|
||||
FeedbackType, filterset_class=FeedbackFilter
|
||||
)
|
||||
order_products = DjangoFilterConnectionField(OrderProductType)
|
||||
product_images = DjangoFilterConnectionField(ProductImageType)
|
||||
stocks = DjangoFilterConnectionField(StockType)
|
||||
wishlists = DjangoFilterConnectionField(WishlistType, filterset_class=WishlistFilter)
|
||||
wishlists = DjangoFilterConnectionField(
|
||||
WishlistType, filterset_class=WishlistFilter
|
||||
)
|
||||
product_tags = DjangoFilterConnectionField(ProductTagType)
|
||||
category_tags = DjangoFilterConnectionField(CategoryTagType)
|
||||
promotions = DjangoFilterConnectionField(PromotionType)
|
||||
|
|
@ -137,7 +143,12 @@ class Query(ObjectType):
|
|||
|
||||
if not languages:
|
||||
languages = [
|
||||
{"code": lang[0], "name": lang[1], "flag": get_flag_by_language(lang[0])} for lang in settings.LANGUAGES
|
||||
{
|
||||
"code": lang[0],
|
||||
"name": lang[1],
|
||||
"flag": get_flag_by_language(lang[0]),
|
||||
}
|
||||
for lang in settings.LANGUAGES
|
||||
]
|
||||
cache.set("languages", languages, 60 * 60)
|
||||
|
||||
|
|
@ -152,10 +163,16 @@ class Query(ObjectType):
|
|||
def resolve_products(_parent, info, **kwargs):
|
||||
if info.context.user.is_authenticated and kwargs.get("uuid"):
|
||||
product = Product.objects.get(uuid=kwargs["uuid"])
|
||||
if product.is_active and product.brand.is_active and product.category.is_active:
|
||||
if (
|
||||
product.is_active
|
||||
and product.brand.is_active
|
||||
and product.category.is_active
|
||||
):
|
||||
info.context.user.add_to_recently_viewed(product.uuid)
|
||||
base_qs = (
|
||||
Product.objects.all().select_related("brand", "category").prefetch_related("images", "stocks")
|
||||
Product.objects.all()
|
||||
.select_related("brand", "category")
|
||||
.prefetch_related("images", "stocks")
|
||||
if info.context.user.has_perm("core.view_product")
|
||||
else Product.objects.filter(
|
||||
is_active=True,
|
||||
|
|
@ -318,7 +335,10 @@ class Query(ObjectType):
|
|||
def resolve_promocodes(_parent, info, **kwargs):
|
||||
promocodes = PromoCode.objects
|
||||
if info.context.user.has_perm("core.view_promocode"):
|
||||
return promocodes.filter(user__uuid=kwargs.get("user_uuid")) or promocodes.all()
|
||||
return (
|
||||
promocodes.filter(user__uuid=kwargs.get("user_uuid"))
|
||||
or promocodes.all()
|
||||
)
|
||||
return promocodes.filter(
|
||||
is_active=True,
|
||||
user=info.context.user,
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -27,7 +27,8 @@ msgstr "نشط"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"إذا تم تعيينه على خطأ، لا يمكن للمستخدمين رؤية هذا الكائن دون الحاجة إلى إذن"
|
||||
|
||||
|
|
@ -153,7 +154,8 @@ msgstr "تم التسليم"
|
|||
msgid "canceled"
|
||||
msgstr "تم الإلغاء"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "فشل"
|
||||
|
||||
|
|
@ -205,8 +207,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"تطبيق مفتاح فقط لقراءة البيانات المسموح بها من ذاكرة التخزين المؤقت.\n"
|
||||
"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين "
|
||||
"المؤقت."
|
||||
"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين المؤقت."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -269,7 +270,8 @@ msgid "rewrite an existing attribute group saving non-editables"
|
|||
msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:106
|
||||
|
|
@ -317,7 +319,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:196 engine/core/docs/drf/viewsets.py:197
|
||||
|
|
@ -370,8 +373,8 @@ msgstr "بالنسبة للمستخدمين من غير الموظفين، يت
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"البحث في سلسلة فرعية غير حساسة لحالة الأحرف عبر human_readable_id و "
|
||||
"order_products.product.name و order_products.product.partnumber"
|
||||
|
|
@ -408,8 +411,8 @@ msgstr "تصفية حسب حالة الطلب (مطابقة سلسلة فرعي
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"الترتيب حسب واحد من: uuid، معرف_بشري_مقروء، بريد_إلكتروني_مستخدم، مستخدم، "
|
||||
"حالة، إنشاء، تعديل، وقت_الشراء، عشوائي. البادئة بحرف \"-\" للترتيب التنازلي "
|
||||
|
|
@ -491,7 +494,8 @@ msgid ""
|
|||
"adds a list of products to an order using the provided `product_uuid` and "
|
||||
"`attributes`."
|
||||
msgstr ""
|
||||
"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة."
|
||||
"يضيف قائمة من المنتجات إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" "
|
||||
"المتوفرة."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:438
|
||||
msgid "remove product from order"
|
||||
|
|
@ -501,8 +505,7 @@ msgstr "إزالة منتج من الطلب"
|
|||
msgid ""
|
||||
"removes a product from an order using the provided `product_uuid` and "
|
||||
"`attributes`."
|
||||
msgstr ""
|
||||
"يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة."
|
||||
msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:447
|
||||
msgid "remove product from order, quantities will not count"
|
||||
|
|
@ -596,32 +599,20 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"تصفية حسب زوج واحد أو أكثر من أسماء/قيم السمات. \n"
|
||||
"- **صيغة**: `attr_name=الطريقة-القيمة[ ؛ attr2=الطريقة2-القيمة2]...`\n"
|
||||
"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، "
|
||||
"\"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ "
|
||||
"ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، "
|
||||
"\"lte\"، \"gt\"، \"gte\"، \"in\n"
|
||||
"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/"
|
||||
"المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم "
|
||||
"التعامل معها كسلسلة. \n"
|
||||
"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- "
|
||||
"لتشفير القيمة الخام. \n"
|
||||
"- **الأساليب** (افتراضيًا إلى \"يحتوي على\" إذا تم حذفها): \"بالضبط\"، \"بالضبط\"، \"بالضبط\"، \"يحتوي\"، \"يحتوي\"، \"لاغية\"، \"يبدأ ب\"، \"يبدأ ب\"، \"يبدأ ب\"، \"ينتهي ب\"، \"ينتهي ب\"، \"regex\"، \"iregex\"، \"lt\"، \"lte\"، \"gt\"، \"gte\"، \"in\n"
|
||||
"- **كتابة القيمة**: تتم تجربة JSON أولًا (حتى تتمكن من تمرير القوائم/المجادلات)، \"صحيح\"/\"خطأ\" للمنطقيين والأعداد الصحيحة والعوامات؛ وإلا يتم التعامل معها كسلسلة. \n"
|
||||
"- **القاعدة 64**: البادئة ب \"b64-\" لتشفير القيمة الخام بأمان لقاعدة 64- لتشفير القيمة الخام. \n"
|
||||
"أمثلة: \n"
|
||||
"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، "
|
||||
"'fatures=in-[\"wifi\",\"bluetooth\"],\n"
|
||||
"'color=exact-red'، 'size=gt-10'، 'features=in-[\"wifi\"،\"bluetooth\"]، 'fatures=in-[\"wifi\",\"bluetooth\"],\n"
|
||||
"\"b64-description=icontains-aGVhdC1jb2xk"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569
|
||||
|
|
@ -634,8 +625,7 @@ msgstr "(بالضبط) UUID المنتج"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"قائمة مفصولة بفواصل من الحقول للفرز حسب. البادئة بـ \"-\" للفرز التنازلي. \n"
|
||||
|
|
@ -1094,7 +1084,7 @@ msgstr "البيانات المخزنة مؤقتاً"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "بيانات JSON مجمّلة من عنوان URL المطلوب"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "يُسمح فقط بعناوين URL التي تبدأ ب http(s)://"
|
||||
|
||||
|
|
@ -1178,8 +1168,8 @@ msgstr "شراء طلبية"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr "الرجاء إرسال السمات كسلسلة منسقة مثل attr1=قيمة1، attr2=قيمة2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
|
|
@ -1254,7 +1244,8 @@ msgid "which attributes and values can be used for filtering this category."
|
|||
msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة."
|
||||
|
||||
|
|
@ -1561,8 +1552,8 @@ msgstr ""
|
|||
"تفاعلهم. يتم استخدام فئة البائع لتعريف وإدارة المعلومات المتعلقة ببائع "
|
||||
"خارجي. وهو يخزن اسم البائع، وتفاصيل المصادقة المطلوبة للاتصال، والنسبة "
|
||||
"المئوية للترميز المطبقة على المنتجات المسترجعة من البائع. يحتفظ هذا النموذج "
|
||||
"أيضًا ببيانات وصفية وقيود إضافية، مما يجعله مناسبًا للاستخدام في الأنظمة التي "
|
||||
"تتفاعل مع البائعين الخارجيين."
|
||||
"أيضًا ببيانات وصفية وقيود إضافية، مما يجعله مناسبًا للاستخدام في الأنظمة "
|
||||
"التي تتفاعل مع البائعين الخارجيين."
|
||||
|
||||
#: engine/core/models.py:124
|
||||
msgid "stores credentials and endpoints required for vendor communication"
|
||||
|
|
@ -1615,9 +1606,9 @@ msgid ""
|
|||
"metadata customization for administrative purposes."
|
||||
msgstr ""
|
||||
"يمثل علامة منتج تُستخدم لتصنيف المنتجات أو تعريفها. صُممت فئة ProductTag "
|
||||
"لتعريف المنتجات وتصنيفها بشكل فريد من خلال مزيج من معرّف علامة داخلي واسم عرض "
|
||||
"سهل الاستخدام. وهي تدعم العمليات التي يتم تصديرها من خلال mixins وتوفر تخصيص "
|
||||
"البيانات الوصفية لأغراض إدارية."
|
||||
"لتعريف المنتجات وتصنيفها بشكل فريد من خلال مزيج من معرّف علامة داخلي واسم "
|
||||
"عرض سهل الاستخدام. وهي تدعم العمليات التي يتم تصديرها من خلال mixins وتوفر "
|
||||
"تخصيص البيانات الوصفية لأغراض إدارية."
|
||||
|
||||
#: engine/core/models.py:209 engine/core/models.py:240
|
||||
msgid "internal tag identifier for the product tag"
|
||||
|
|
@ -1673,8 +1664,8 @@ msgstr ""
|
|||
"حقول للبيانات الوصفية والتمثيل المرئي، والتي تعمل كأساس للميزات المتعلقة "
|
||||
"بالفئات. تُستخدم هذه الفئة عادةً لتعريف وإدارة فئات المنتجات أو غيرها من "
|
||||
"التجميعات المماثلة داخل التطبيق، مما يسمح للمستخدمين أو المسؤولين بتحديد اسم"
|
||||
"الفئات ووصفها وتسلسلها الهرمي، بالإضافة إلى تعيين سمات مثل الصور أو العلامات "
|
||||
"أو الأولوية."
|
||||
" الفئات ووصفها وتسلسلها الهرمي، بالإضافة إلى تعيين سمات مثل الصور أو "
|
||||
"العلامات أو الأولوية."
|
||||
|
||||
#: engine/core/models.py:274
|
||||
msgid "upload an image representing this category"
|
||||
|
|
@ -1725,7 +1716,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"يمثل كائن العلامة التجارية في النظام. تتعامل هذه الفئة مع المعلومات والسمات "
|
||||
"المتعلقة بالعلامة التجارية، بما في ذلك اسمها وشعاراتها ووصفها والفئات "
|
||||
|
|
@ -1866,9 +1858,9 @@ msgstr ""
|
|||
"يمثل منتجًا بخصائص مثل الفئة والعلامة التجارية والعلامات والحالة الرقمية "
|
||||
"والاسم والوصف ورقم الجزء والعلامة التجارية والحالة الرقمية والاسم والوصف "
|
||||
"ورقم الجزء والسبيكة. يوفر خصائص الأداة المساعدة ذات الصلة لاسترداد التقييمات"
|
||||
"وعدد الملاحظات والسعر والكمية وإجمالي الطلبات. مصمم للاستخدام في نظام يتعامل "
|
||||
"مع التجارة الإلكترونية أو إدارة المخزون. تتفاعل هذه الفئة مع النماذج ذات "
|
||||
"الصلة (مثل الفئة والعلامة التجارية وعلامة المنتج) وتدير التخزين المؤقت "
|
||||
" وعدد الملاحظات والسعر والكمية وإجمالي الطلبات. مصمم للاستخدام في نظام "
|
||||
"يتعامل مع التجارة الإلكترونية أو إدارة المخزون. تتفاعل هذه الفئة مع النماذج "
|
||||
"ذات الصلة (مثل الفئة والعلامة التجارية وعلامة المنتج) وتدير التخزين المؤقت "
|
||||
"للخصائص التي يتم الوصول إليها بشكل متكرر لتحسين الأداء. يتم استخدامه لتعريف "
|
||||
"ومعالجة بيانات المنتج والمعلومات المرتبطة به داخل التطبيق."
|
||||
|
||||
|
|
@ -2066,10 +2058,11 @@ msgid ""
|
|||
"applicable products. It integrates with the product catalog to determine the"
|
||||
" affected items in the campaign."
|
||||
msgstr ""
|
||||
"يمثل حملة ترويجية للمنتجات ذات الخصم. تُستخدم هذه الفئة لتعريف وإدارة الحملات "
|
||||
"الترويجية التي تقدم خصمًا على أساس النسبة المئوية للمنتجات. تتضمن الفئة سمات "
|
||||
"لتعيين معدل الخصم وتوفير تفاصيل حول العرض الترويجي وربطه بالمنتجات القابلة "
|
||||
"للتطبيق. تتكامل مع كتالوج المنتجات لتحديد العناصر المتأثرة في الحملة."
|
||||
"يمثل حملة ترويجية للمنتجات ذات الخصم. تُستخدم هذه الفئة لتعريف وإدارة "
|
||||
"الحملات الترويجية التي تقدم خصمًا على أساس النسبة المئوية للمنتجات. تتضمن "
|
||||
"الفئة سمات لتعيين معدل الخصم وتوفير تفاصيل حول العرض الترويجي وربطه "
|
||||
"بالمنتجات القابلة للتطبيق. تتكامل مع كتالوج المنتجات لتحديد العناصر المتأثرة"
|
||||
" في الحملة."
|
||||
|
||||
#: engine/core/models.py:880
|
||||
msgid "percentage discount for the selected products"
|
||||
|
|
@ -2159,18 +2152,18 @@ msgstr "لم يتم حلها"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"يمثل كيان عنوان يتضمن تفاصيل الموقع والارتباطات مع المستخدم. يوفر وظائف "
|
||||
"لتخزين البيانات الجغرافية وبيانات العنوان، بالإضافة إلى التكامل مع خدمات "
|
||||
"الترميز الجغرافي. صُممت هذه الفئة لتخزين معلومات العنوان التفصيلية بما في ذلك "
|
||||
"مكونات مثل الشارع والمدينة والمنطقة والبلد والموقع الجغرافي (خطوط الطول "
|
||||
"الترميز الجغرافي. صُممت هذه الفئة لتخزين معلومات العنوان التفصيلية بما في "
|
||||
"ذلك مكونات مثل الشارع والمدينة والمنطقة والبلد والموقع الجغرافي (خطوط الطول "
|
||||
"والعرض). وهو يدعم التكامل مع واجهات برمجة التطبيقات للترميز الجغرافي، مما "
|
||||
"يتيح تخزين استجابات واجهة برمجة التطبيقات الخام لمزيد من المعالجة أو الفحص. "
|
||||
"تسمح الفئة أيضًا بربط عنوان مع مستخدم، مما يسهل التعامل مع البيانات الشخصية."
|
||||
|
|
@ -2284,7 +2277,8 @@ msgstr "وقت بدء الصلاحية"
|
|||
|
||||
#: engine/core/models.py:1120
|
||||
msgid "timestamp when the promocode was used, blank if not used yet"
|
||||
msgstr "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد"
|
||||
msgstr ""
|
||||
"الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد"
|
||||
|
||||
#: engine/core/models.py:1121
|
||||
msgid "usage timestamp"
|
||||
|
|
@ -2503,7 +2497,8 @@ msgid "feedback comments"
|
|||
msgstr "تعليقات على الملاحظات"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات"
|
||||
|
||||
#: engine/core/models.py:1720
|
||||
|
|
@ -2534,8 +2529,8 @@ msgstr ""
|
|||
"حول المنتج الذي هو جزء من الطلب، بما في ذلك تفاصيل مثل سعر الشراء والكمية "
|
||||
"وسمات المنتج وحالته. يدير الإشعارات للمستخدم والمسؤولين ويتعامل مع عمليات "
|
||||
"مثل إرجاع رصيد المنتج أو إضافة ملاحظات. يوفر هذا النموذج أيضًا أساليب وخصائص"
|
||||
"تدعم منطق العمل، مثل حساب السعر الإجمالي أو إنشاء عنوان URL للتنزيل للمنتجات "
|
||||
"الرقمية. يتكامل النموذج مع نموذجي الطلب والمنتج ويخزن مرجعًا لهما."
|
||||
" تدعم منطق العمل، مثل حساب السعر الإجمالي أو إنشاء عنوان URL للتنزيل "
|
||||
"للمنتجات الرقمية. يتكامل النموذج مع نموذجي الطلب والمنتج ويخزن مرجعًا لهما."
|
||||
|
||||
#: engine/core/models.py:1757
|
||||
msgid "the price paid by the customer for this product at purchase time"
|
||||
|
|
@ -2650,8 +2645,8 @@ msgstr ""
|
|||
"يمثل وظيفة التنزيل للأصول الرقمية المرتبطة بالطلبات. توفر فئة "
|
||||
"DigitalAssetDownload القدرة على إدارة التنزيلات المتعلقة بمنتجات الطلبات "
|
||||
"والوصول إليها. وتحتفظ بمعلومات حول منتج الطلب المرتبط، وعدد التنزيلات، وما "
|
||||
"إذا كان الأصل مرئيًا للعامة. وتتضمن طريقة لإنشاء عنوان URL لتنزيل الأصل عندما "
|
||||
"يكون الطلب المرتبط في حالة مكتملة."
|
||||
"إذا كان الأصل مرئيًا للعامة. وتتضمن طريقة لإنشاء عنوان URL لتنزيل الأصل "
|
||||
"عندما يكون الطلب المرتبط في حالة مكتملة."
|
||||
|
||||
#: engine/core/models.py:1961
|
||||
msgid "download"
|
||||
|
|
@ -2695,8 +2690,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "لا يوجد نشاط للعملاء في آخر 30 يوماً."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "المبيعات اليومية (30 د)"
|
||||
msgid "Daily sales"
|
||||
msgstr "المبيعات اليومية"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2707,6 +2702,7 @@ msgid "Gross revenue"
|
|||
msgstr "إجمالي الإيرادات"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "الطلبات"
|
||||
|
||||
|
|
@ -2714,6 +2710,10 @@ msgstr "الطلبات"
|
|||
msgid "Gross"
|
||||
msgstr "الإجمالي"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "لوحة التحكم"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "نظرة عامة على الدخل"
|
||||
|
|
@ -2742,20 +2742,32 @@ msgid "No data"
|
|||
msgstr "لا يوجد تاريخ"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "الإيرادات (الإجمالي، 30 د)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "الإيرادات (الصافي، 30 د)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "المرتجعات (30 د)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "صافي الإيرادات"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "الطلبات التي تمت معالجتها (30 د)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "معدل الاسترداد"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "تم الإرجاع"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "مخزون منخفض"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "لا توجد عناصر منخفضة المخزون."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2770,11 +2782,11 @@ msgid "Most wished product"
|
|||
msgstr "أكثر المنتجات المرغوبة"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "لا توجد بيانات بعد."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "المنتج الأكثر شعبية"
|
||||
|
||||
|
|
@ -2810,10 +2822,6 @@ msgstr "لم يتم بيع أي فئة في آخر 30 يوماً."
|
|||
msgid "Django site admin"
|
||||
msgstr "مشرف موقع جانغو"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "لوحة التحكم"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2843,8 +2851,7 @@ msgstr "مرحباً %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل."
|
||||
|
|
@ -2955,8 +2962,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr "شكرًا لك على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:"
|
||||
|
||||
|
|
@ -3026,7 +3032,7 @@ msgstr "يجب تكوين معلمة NOMINATIM_URL!"
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr "يجب ألا تتجاوز أبعاد الصورة w{max_width} x h{max_height} بكسل!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3034,7 +3040,7 @@ msgstr ""
|
|||
"يتعامل مع طلب فهرس خريطة الموقع ويعيد استجابة XML. يضمن أن تتضمن الاستجابة "
|
||||
"رأس نوع المحتوى المناسب ل XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3043,16 +3049,16 @@ msgstr ""
|
|||
"يعالج استجابة العرض التفصيلي لخريطة الموقع. تقوم هذه الدالة بمعالجة الطلب، "
|
||||
"وجلب استجابة تفاصيل خريطة الموقع المناسبة، وتعيين رأس نوع المحتوى ل XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "إرجاع قائمة باللغات المدعومة والمعلومات الخاصة بها."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "إرجاع معلمات الموقع الإلكتروني ككائن JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3060,11 +3066,11 @@ msgstr ""
|
|||
"يعالج عمليات ذاكرة التخزين المؤقت مثل قراءة بيانات ذاكرة التخزين المؤقت "
|
||||
"وتعيينها بمفتاح ومهلة محددة."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "يتعامل مع عمليات إرسال نموذج \"اتصل بنا\"."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3072,63 +3078,55 @@ msgstr ""
|
|||
"يعالج طلبات معالجة عناوين URL والتحقق من صحة عناوين URL من طلبات POST "
|
||||
"الواردة."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "يتعامل مع استعلامات البحث العامة."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "يتعامل بمنطق الشراء كشركة تجارية دون تسجيل."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"يتعامل مع تنزيل الأصل الرقمي المرتبط بأمر ما.\n"
|
||||
"تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص "
|
||||
"بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن "
|
||||
"المورد غير متوفر."
|
||||
"تحاول هذه الدالة خدمة ملف الأصل الرقمي الموجود في دليل التخزين الخاص بالمشروع. إذا لم يتم العثور على الملف، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "الطلب_برو_منتج_uuid مطلوب"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "طلب المنتج غير موجود"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "يجب دفع الطلب قبل تنزيل الأصل الرقمي"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "لا يحتوي منتج الطلب على منتج"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "الرمز المفضل غير موجود"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"يتعامل مع طلبات الرمز المفضل لموقع ويب.\n"
|
||||
"تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. "
|
||||
"إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى "
|
||||
"أن المورد غير متوفر."
|
||||
"تحاول هذه الدالة عرض ملف الأيقونة المفضلة الموجود في الدليل الثابت للمشروع. إذا لم يتم العثور على ملف الأيقونة المفضلة، يتم رفع خطأ HTTP 404 للإشارة إلى أن المورد غير متوفر."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3138,11 +3136,16 @@ msgstr ""
|
|||
" توجيهها إلى صفحة فهرس واجهة إدارة Django. تستخدم دالة \"إعادة التوجيه\" في "
|
||||
"Django للتعامل مع إعادة توجيه HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "إرجاع الإصدار الحالي من eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "الإيرادات والطلبات (آخر %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "إرجاع المتغيرات المخصصة للوحة التحكم."
|
||||
|
||||
|
|
@ -3156,20 +3159,21 @@ msgid ""
|
|||
msgstr ""
|
||||
"يحدد مجموعة طرق عرض لإدارة العمليات المتعلقة ب Evibes. يرث صنف EvibesViewSet"
|
||||
" من ModelViewSet ويوفر وظائف للتعامل مع الإجراءات والعمليات على كيانات "
|
||||
"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء الحالي، "
|
||||
"والأذونات القابلة للتخصيص، وتنسيقات العرض."
|
||||
"Evibes. وتتضمن دعمًا لفئات المتسلسلات الديناميكية استنادًا إلى الإجراء "
|
||||
"الحالي، والأذونات القابلة للتخصيص، وتنسيقات العرض."
|
||||
|
||||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"يمثل مجموعة طرق عرض لإدارة كائنات AttributeGroup. يتعامل مع العمليات "
|
||||
"المتعلقة ب AttributeGroup، بما في ذلك التصفية والتسلسل واسترجاع البيانات. "
|
||||
"تعد هذه الفئة جزءًا من طبقة واجهة برمجة التطبيقات الخاصة بالتطبيق وتوفر طريقة "
|
||||
"موحدة لمعالجة الطلبات والاستجابات لبيانات AttributeGroup."
|
||||
"تعد هذه الفئة جزءًا من طبقة واجهة برمجة التطبيقات الخاصة بالتطبيق وتوفر "
|
||||
"طريقة موحدة لمعالجة الطلبات والاستجابات لبيانات AttributeGroup."
|
||||
|
||||
#: engine/core/viewsets.py:175
|
||||
msgid ""
|
||||
|
|
@ -3195,9 +3199,10 @@ msgid ""
|
|||
" capabilities are provided through the DjangoFilterBackend."
|
||||
msgstr ""
|
||||
"مجموعة طرق عرض لإدارة كائنات AttributeValue. توفر مجموعة طرق العرض هذه وظائف"
|
||||
"لإدراج كائنات AttributeValue واسترجاعها وإنشائها وتحديثها وحذفها. وهي تتكامل "
|
||||
"مع آليات مجموعة طرق عرض Django REST Framework وتستخدم المتسلسلات المناسبة "
|
||||
"للإجراءات المختلفة. يتم توفير إمكانيات التصفية من خلال DjangoFilterBackend."
|
||||
" لإدراج كائنات AttributeValue واسترجاعها وإنشائها وتحديثها وحذفها. وهي "
|
||||
"تتكامل مع آليات مجموعة طرق عرض Django REST Framework وتستخدم المتسلسلات "
|
||||
"المناسبة للإجراءات المختلفة. يتم توفير إمكانيات التصفية من خلال "
|
||||
"DjangoFilterBackend."
|
||||
|
||||
#: engine/core/viewsets.py:213
|
||||
msgid ""
|
||||
|
|
@ -3249,9 +3254,10 @@ msgid ""
|
|||
"Vendor-related resources through the Django REST framework."
|
||||
msgstr ""
|
||||
"يمثل مجموعة طرق عرض لإدارة كائنات المورد. تسمح مجموعة العرض هذه بجلب بيانات "
|
||||
"البائع وتصفيتها وتسلسلها. وهي تُعرِّف مجموعة الاستعلام، وتكوينات التصفية، وفئات "
|
||||
"أداة التسلسل المستخدمة للتعامل مع الإجراءات المختلفة. الغرض من هذه الفئة هو "
|
||||
"توفير وصول مبسط إلى الموارد المتعلقة بالمورد من خلال إطار عمل Django REST."
|
||||
"البائع وتصفيتها وتسلسلها. وهي تُعرِّف مجموعة الاستعلام، وتكوينات التصفية، "
|
||||
"وفئات أداة التسلسل المستخدمة للتعامل مع الإجراءات المختلفة. الغرض من هذه "
|
||||
"الفئة هو توفير وصول مبسط إلى الموارد المتعلقة بالمورد من خلال إطار عمل "
|
||||
"Django REST."
|
||||
|
||||
#: engine/core/viewsets.py:594
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -28,7 +28,8 @@ msgstr "Je aktivní"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Pokud je nastaveno na false, nemohou tento objekt vidět uživatelé bez "
|
||||
"potřebného oprávnění."
|
||||
|
|
@ -155,7 +156,8 @@ msgstr "Doručeno na"
|
|||
msgid "canceled"
|
||||
msgstr "Zrušeno"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Neúspěšný"
|
||||
|
||||
|
|
@ -272,7 +274,8 @@ msgstr ""
|
|||
"Přepsání existující skupiny atributů s uložením neupravitelných položek"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Přepsání některých polí existující skupiny atributů s uložením "
|
||||
"neupravitelných položek"
|
||||
|
|
@ -324,7 +327,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "Přepsání existující hodnoty atributu uložením neupravitelných položek"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Přepsání některých polí existující hodnoty atributu s uložením "
|
||||
"neupravitelných položek"
|
||||
|
|
@ -382,12 +386,12 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Vyhledávání podřetězců bez ohledu na velikost písmen v položkách "
|
||||
"human_readable_id, order_products.product.name a order_products.product."
|
||||
"partnumber"
|
||||
"human_readable_id, order_products.product.name a "
|
||||
"order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -424,8 +428,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Řazení podle jedné z následujících možností: uuid, human_readable_id, "
|
||||
"user_email, user, status, created, modified, buy_time, random. Pro sestupné "
|
||||
|
|
@ -602,7 +606,8 @@ msgstr "Přidání mnoha produktů do seznamu přání"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:533
|
||||
msgid "adds many products to an wishlist using the provided `product_uuids`"
|
||||
msgstr "Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`."
|
||||
msgstr ""
|
||||
"Přidá mnoho produktů do seznamu přání pomocí zadaných `product_uuids`."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:541
|
||||
msgid "remove many products from wishlist"
|
||||
|
|
@ -618,28 +623,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrování podle jedné nebo více dvojic název/hodnota atributu. \n"
|
||||
"- **Syntaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n"
|
||||
"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, "
|
||||
"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, "
|
||||
"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší "
|
||||
"JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi "
|
||||
"zachází jako s řetězci. \n"
|
||||
"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL "
|
||||
"base64. \n"
|
||||
"- **Metody** (pokud je vynecháno, výchozí hodnota je `obsahuje`): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Typování hodnot**: Pro booleany, celá čísla, floaty se nejprve zkouší JSON (takže můžete předávat seznamy/dicty), `true`/`false`; jinak se s nimi zachází jako s řetězci. \n"
|
||||
"- **Base64**: předpona `b64-` pro bezpečné zakódování surové hodnoty do URL base64. \n"
|
||||
"Příklady: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -654,12 +649,10 @@ msgstr "(přesně) UUID produktu"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné "
|
||||
"řazení použijte předponu `-`. \n"
|
||||
"Seznam polí oddělených čárkou, podle kterých se má třídit. Pro sestupné řazení použijte předponu `-`. \n"
|
||||
"**Povolené:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -917,7 +910,8 @@ msgstr "Odstranění povýšení"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1169
|
||||
msgid "rewrite an existing promotion saving non-editables"
|
||||
msgstr "Přepsání existující propagační akce s uložením neupravitelných položek"
|
||||
msgstr ""
|
||||
"Přepsání existující propagační akce s uložením neupravitelných položek"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1176
|
||||
msgid "rewrite some fields of an existing promotion saving non-editables"
|
||||
|
|
@ -968,7 +962,8 @@ msgstr "Odstranění značky produktu"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1259
|
||||
msgid "rewrite an existing product tag saving non-editables"
|
||||
msgstr "Přepsání existující značky produktu s uložením neupravitelných položek"
|
||||
msgstr ""
|
||||
"Přepsání existující značky produktu s uložením neupravitelných položek"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1266
|
||||
msgid "rewrite some fields of an existing product tag saving non-editables"
|
||||
|
|
@ -1124,7 +1119,7 @@ msgstr "Data uložená v mezipaměti"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Kamelizovaná data JSON z požadované adresy URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Povoleny jsou pouze adresy URL začínající http(s)://."
|
||||
|
||||
|
|
@ -1208,11 +1203,11 @@ msgstr "Koupit objednávku"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Prosím, pošlete atributy jako řetězec ve formátu attr1=hodnota1,"
|
||||
"attr2=hodnota2."
|
||||
"Prosím, pošlete atributy jako řetězec ve formátu "
|
||||
"attr1=hodnota1,attr2=hodnota2."
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
msgid "add or delete a feedback for orderproduct"
|
||||
|
|
@ -1286,9 +1281,11 @@ msgid "which attributes and values can be used for filtering this category."
|
|||
msgstr "Které atributy a hodnoty lze použít pro filtrování této kategorie."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimální a maximální ceny produktů v této kategorii, pokud jsou k dispozici."
|
||||
"Minimální a maximální ceny produktů v této kategorii, pokud jsou k "
|
||||
"dispozici."
|
||||
|
||||
#: engine/core/graphene/object_types.py:205
|
||||
msgid "tags for this category"
|
||||
|
|
@ -1763,7 +1760,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Reprezentuje objekt značky v systému. Tato třída zpracovává informace a "
|
||||
"atributy související se značkou, včetně jejího názvu, loga, popisu, "
|
||||
|
|
@ -2111,8 +2109,8 @@ msgid ""
|
|||
" affected items in the campaign."
|
||||
msgstr ""
|
||||
"Představuje propagační kampaň na produkty se slevou. Tato třída se používá k"
|
||||
"definici a správě propagačních kampaní, které nabízejí procentuální slevu na "
|
||||
"produkty. Třída obsahuje atributy pro nastavení slevové sazby, poskytnutí "
|
||||
" definici a správě propagačních kampaní, které nabízejí procentuální slevu "
|
||||
"na produkty. Třída obsahuje atributy pro nastavení slevové sazby, poskytnutí"
|
||||
" podrobností o akci a její propojení s příslušnými produkty. Integruje se s "
|
||||
"katalogem produktů, aby bylo možné určit položky, kterých se kampaň týká."
|
||||
|
||||
|
|
@ -2206,13 +2204,13 @@ msgstr "Nevyřešené"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Reprezentuje entitu adresy, která obsahuje údaje o umístění a asociace s "
|
||||
"uživatelem. Poskytuje funkce pro ukládání geografických a adresních dat a "
|
||||
|
|
@ -2461,7 +2459,8 @@ msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!"
|
|||
|
||||
#: engine/core/models.py:1351
|
||||
msgid "you cannot add products to an order that is not a pending one"
|
||||
msgstr "Do objednávky, která není v procesu vyřizování, nelze přidat produkty."
|
||||
msgstr ""
|
||||
"Do objednávky, která není v procesu vyřizování, nelze přidat produkty."
|
||||
|
||||
#: engine/core/models.py:1356
|
||||
msgid "you cannot add inactive products to order"
|
||||
|
|
@ -2556,7 +2555,8 @@ msgid "feedback comments"
|
|||
msgstr "Zpětná vazba"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Odkazuje na konkrétní produkt v objednávce, kterého se tato zpětná vazba "
|
||||
"týká."
|
||||
|
|
@ -2755,8 +2755,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Žádná aktivita zákazníka za posledních 30 dní."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Denní tržby (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Denní prodej"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2767,6 +2767,7 @@ msgid "Gross revenue"
|
|||
msgstr "Hrubé příjmy"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Objednávky"
|
||||
|
||||
|
|
@ -2774,6 +2775,10 @@ msgstr "Objednávky"
|
|||
msgid "Gross"
|
||||
msgstr "Hrubý"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Přístrojová deska"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Přehled příjmů"
|
||||
|
|
@ -2802,20 +2807,32 @@ msgid "No data"
|
|||
msgstr "Bez data"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Příjmy (hrubé, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Příjmy (čisté, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Návraty (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Čistý příjem"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Zpracované objednávky (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Míra vrácení peněz"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Vrácené"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Nízké zásoby"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Žádné nízké skladové zásoby."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2830,11 +2847,11 @@ msgid "Most wished product"
|
|||
msgstr "Nejžádanější produkt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Zatím nejsou k dispozici žádné údaje."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Nejoblíbenější produkt"
|
||||
|
||||
|
|
@ -2870,10 +2887,6 @@ msgstr "Žádný prodej v kategorii za posledních 30 dní."
|
|||
msgid "Django site admin"
|
||||
msgstr "Správce webu Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Přístrojová deska"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2903,8 +2916,7 @@ msgstr "Ahoj %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Děkujeme vám za vaši objednávku #%(order.pk)s! S potěšením Vám oznamujeme, "
|
||||
|
|
@ -3019,8 +3031,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Děkujeme vám za vaši objednávku! S potěšením potvrzujeme váš nákup. Níže "
|
||||
|
|
@ -3093,7 +3104,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"Rozměry obrázku by neměly přesáhnout w{max_width} x h{max_height} pixelů."
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3101,7 +3112,7 @@ msgstr ""
|
|||
"Zpracuje požadavek na index mapy stránek a vrátí odpověď XML. Zajistí, aby "
|
||||
"odpověď obsahovala odpovídající hlavičku typu obsahu XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3111,16 +3122,16 @@ msgstr ""
|
|||
"požadavek, načte příslušnou podrobnou odpověď mapy stránek a nastaví "
|
||||
"hlavičku Content-Type pro XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "Vrátí seznam podporovaných jazyků a odpovídajících informací."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Vrátí parametry webové stránky jako objekt JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3128,11 +3139,11 @@ msgstr ""
|
|||
"Zpracovává operace mezipaměti, jako je čtení a nastavování dat mezipaměti se"
|
||||
" zadaným klíčem a časovým limitem."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Zpracovává odeslání formuláře `contact us`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3140,63 +3151,55 @@ msgstr ""
|
|||
"Zpracovává požadavky na zpracování a ověřování adres URL z příchozích "
|
||||
"požadavků POST."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Zpracovává globální vyhledávací dotazy."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Řeší logiku nákupu jako firmy bez registrace."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Zpracovává stahování digitálního aktiva spojeného s objednávkou.\n"
|
||||
"Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v "
|
||||
"adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba "
|
||||
"HTTP 404, která označuje, že zdroj není k dispozici."
|
||||
"Tato funkce se pokusí obsloužit soubor digitálního aktiva umístěný v adresáři úložiště projektu. Pokud soubor není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid je povinné"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "objednávka produktu neexistuje"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Digitální aktivum můžete stáhnout pouze jednou"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "objednávka musí být zaplacena před stažením digitálního aktiva."
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Objednaný produkt nemá produkt"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon nebyl nalezen"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Zpracovává požadavky na favicon webové stránky.\n"
|
||||
"Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém "
|
||||
"adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP "
|
||||
"404, která označuje, že zdroj není k dispozici."
|
||||
"Tato funkce se pokusí obsloužit soubor favicon umístěný ve statickém adresáři projektu. Pokud soubor favicon není nalezen, je vyvolána chyba HTTP 404, která označuje, že zdroj není k dispozici."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3207,11 +3210,16 @@ msgstr ""
|
|||
"administrátorského rozhraní Django. Pro zpracování přesměrování HTTP používá"
|
||||
" funkci `redirect` Djanga."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Vrací aktuální verzi systému eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Příjmy a objednávky (poslední %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Vrací vlastní proměnné pro Dashboard."
|
||||
|
||||
|
|
@ -3226,14 +3234,16 @@ msgstr ""
|
|||
"Definuje sadu pohledů pro správu operací souvisejících s Evibes. Třída "
|
||||
"EvibesViewSet dědí z ModelViewSet a poskytuje funkce pro zpracování akcí a "
|
||||
"operací s entitami Evibes. Zahrnuje podporu dynamických tříd serializátorů "
|
||||
"na základě aktuální akce, přizpůsobitelných oprávnění a formátů vykreslování."
|
||||
"na základě aktuální akce, přizpůsobitelných oprávnění a formátů "
|
||||
"vykreslování."
|
||||
|
||||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Představuje sadu pohledů pro správu objektů AttributeGroup. Zpracovává "
|
||||
"operace související s AttributeGroup, včetně filtrování, serializace a "
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -27,7 +27,8 @@ msgstr "Er aktiv"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Hvis det er sat til false, kan dette objekt ikke ses af brugere uden den "
|
||||
"nødvendige tilladelse."
|
||||
|
|
@ -154,7 +155,8 @@ msgstr "Leveret"
|
|||
msgid "canceled"
|
||||
msgstr "Annulleret"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Mislykket"
|
||||
|
||||
|
|
@ -205,8 +207,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Anvend kun en nøgle til at læse tilladte data fra cachen.\n"
|
||||
"Anvend nøgle, data og timeout med autentificering for at skrive data til "
|
||||
"cachen."
|
||||
"Anvend nøgle, data og timeout med autentificering for at skrive data til cachen."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -271,7 +272,8 @@ msgstr ""
|
|||
"attributter"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Omskriv nogle felter i en eksisterende attributgruppe og gem ikke-"
|
||||
"redigerbare felter"
|
||||
|
|
@ -324,7 +326,8 @@ msgstr ""
|
|||
"Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare"
|
||||
" felter"
|
||||
|
|
@ -377,16 +380,17 @@ msgstr "Liste over alle kategorier (enkel visning)"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:275
|
||||
msgid "for non-staff users, only their own orders are returned."
|
||||
msgstr "For ikke-ansatte brugere er det kun deres egne ordrer, der returneres."
|
||||
msgstr ""
|
||||
"For ikke-ansatte brugere er det kun deres egne ordrer, der returneres."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Substringsøgning uden brug af store og små bogstaver på tværs af "
|
||||
"human_readable_id, order_products.product.name og order_products.product."
|
||||
"partnumber"
|
||||
"human_readable_id, order_products.product.name og "
|
||||
"order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -419,8 +423,8 @@ msgstr "Filtrer efter ordrestatus (case-insensitive substring match)"
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Bestil efter en af: uuid, human_readable_id, user_email, user, status, "
|
||||
"created, modified, buy_time, random. Præfiks med '-' for faldende rækkefølge"
|
||||
|
|
@ -594,7 +598,8 @@ msgstr "Fjern et produkt fra ønskelisten"
|
|||
#: engine/core/docs/drf/viewsets.py:524
|
||||
msgid "removes a product from an wishlist using the provided `product_uuid`"
|
||||
msgstr ""
|
||||
"Fjerner et produkt fra en ønskeliste ved hjælp af den angivne `product_uuid`."
|
||||
"Fjerner et produkt fra en ønskeliste ved hjælp af den angivne "
|
||||
"`product_uuid`."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:532
|
||||
msgid "add many products to wishlist"
|
||||
|
|
@ -621,28 +626,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrer efter et eller flere attributnavn/værdipar. \n"
|
||||
"- **Syntaks**: `attr_name=method-value[;attr2=method2-value2]...`.\n"
|
||||
"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), "
|
||||
"`true`/`false` for booleans, heltal, floats; ellers behandles de som "
|
||||
"strenge. \n"
|
||||
"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå "
|
||||
"værdi. \n"
|
||||
"- **Metoder** (standard er `icontains`, hvis udeladt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- Værdiindtastning**: JSON forsøges først (så du kan sende lister/dikter), `true`/`false` for booleans, heltal, floats; ellers behandles de som strenge. \n"
|
||||
"- **Base64**: præfiks med `b64-` for URL-sikker base64-kodning af den rå værdi. \n"
|
||||
"Eksempler på dette: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`."
|
||||
|
|
@ -657,12 +652,10 @@ msgstr "(præcis) Produkt-UUID"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` "
|
||||
"for faldende. \n"
|
||||
"Kommasepareret liste over felter, der skal sorteres efter. Præfiks med `-` for faldende. \n"
|
||||
"**Tilladt:** uuid, vurdering, navn, slug, oprettet, ændret, pris, tilfældig"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1131,7 +1124,7 @@ msgstr "Cachelagrede data"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Cameliserede JSON-data fra den ønskede URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Kun URL'er, der starter med http(s)://, er tilladt."
|
||||
|
||||
|
|
@ -1215,11 +1208,11 @@ msgstr "Køb en ordre"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Send venligst attributterne som en streng formateret som attr1=værdi1,"
|
||||
"attr2=værdi2"
|
||||
"Send venligst attributterne som en streng formateret som "
|
||||
"attr1=værdi1,attr2=værdi2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
msgid "add or delete a feedback for orderproduct"
|
||||
|
|
@ -1291,10 +1284,12 @@ msgstr "Markup-procentdel"
|
|||
#: engine/core/graphene/object_types.py:199
|
||||
msgid "which attributes and values can be used for filtering this category."
|
||||
msgstr ""
|
||||
"Hvilke attributter og værdier, der kan bruges til at filtrere denne kategori."
|
||||
"Hvilke attributter og værdier, der kan bruges til at filtrere denne "
|
||||
"kategori."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimums- og maksimumspriser for produkter i denne kategori, hvis de er "
|
||||
"tilgængelige."
|
||||
|
|
@ -1724,8 +1719,8 @@ msgstr ""
|
|||
"fungerer som et fundament for kategorirelaterede funktioner. Denne klasse "
|
||||
"bruges typisk til at definere og administrere produktkategorier eller andre "
|
||||
"lignende grupperinger i en applikation, så brugere eller administratorer kan"
|
||||
"angive navn, beskrivelse og hierarki for kategorier samt tildele attributter "
|
||||
"som billeder, tags eller prioritet."
|
||||
" angive navn, beskrivelse og hierarki for kategorier samt tildele "
|
||||
"attributter som billeder, tags eller prioritet."
|
||||
|
||||
#: engine/core/models.py:274
|
||||
msgid "upload an image representing this category"
|
||||
|
|
@ -1776,7 +1771,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Repræsenterer et brand-objekt i systemet. Denne klasse håndterer oplysninger"
|
||||
" og attributter relateret til et brand, herunder dets navn, logoer, "
|
||||
|
|
@ -1983,8 +1979,8 @@ msgid ""
|
|||
"for dynamic and flexible data structuring."
|
||||
msgstr ""
|
||||
"Repræsenterer en attribut i systemet. Denne klasse bruges til at definere og"
|
||||
"administrere attributter, som er data, der kan tilpasses, og som kan knyttes "
|
||||
"til andre enheder. Attributter har tilknyttede kategorier, grupper, "
|
||||
" administrere attributter, som er data, der kan tilpasses, og som kan "
|
||||
"knyttes til andre enheder. Attributter har tilknyttede kategorier, grupper, "
|
||||
"værdityper og navne. Modellen understøtter flere typer værdier, herunder "
|
||||
"string, integer, float, boolean, array og object. Det giver mulighed for "
|
||||
"dynamisk og fleksibel datastrukturering."
|
||||
|
|
@ -2040,7 +2036,8 @@ msgstr "er filtrerbar"
|
|||
#: engine/core/models.py:759
|
||||
msgid "designates whether this attribute can be used for filtering or not"
|
||||
msgstr ""
|
||||
"Hvilke attributter og værdier, der kan bruges til at filtrere denne kategori."
|
||||
"Hvilke attributter og værdier, der kan bruges til at filtrere denne "
|
||||
"kategori."
|
||||
|
||||
#: engine/core/models.py:771 engine/core/models.py:789
|
||||
#: engine/core/templates/digital_order_delivered_email.html:134
|
||||
|
|
@ -2224,13 +2221,13 @@ msgstr "Uafklaret"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Repræsenterer en adresseenhed, der indeholder placeringsoplysninger og "
|
||||
"tilknytninger til en bruger. Indeholder funktionalitet til lagring af "
|
||||
|
|
@ -2495,7 +2492,8 @@ msgstr "Du kan ikke tilføje flere produkter, end der er på lager"
|
|||
#: engine/core/models.py:1428
|
||||
msgid "you cannot remove products from an order that is not a pending one"
|
||||
msgstr ""
|
||||
"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre."
|
||||
"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende "
|
||||
"ordre."
|
||||
|
||||
#: engine/core/models.py:1416
|
||||
#, python-brace-format
|
||||
|
|
@ -2529,7 +2527,8 @@ msgstr "Du kan ikke købe en tom ordre!"
|
|||
#: engine/core/models.py:1522
|
||||
msgid "you cannot buy an order without a user"
|
||||
msgstr ""
|
||||
"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre."
|
||||
"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende "
|
||||
"ordre."
|
||||
|
||||
#: engine/core/models.py:1536
|
||||
msgid "a user without a balance cannot buy with balance"
|
||||
|
|
@ -2578,9 +2577,11 @@ msgid "feedback comments"
|
|||
msgstr "Kommentarer til feedback"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Henviser til det specifikke produkt i en ordre, som denne feedback handler om"
|
||||
"Henviser til det specifikke produkt i en ordre, som denne feedback handler "
|
||||
"om"
|
||||
|
||||
#: engine/core/models.py:1720
|
||||
msgid "related order product"
|
||||
|
|
@ -2684,7 +2685,8 @@ msgstr "Forkert handling angivet for feedback: {action}!"
|
|||
#: engine/core/models.py:1888
|
||||
msgid "you cannot feedback an order which is not received"
|
||||
msgstr ""
|
||||
"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende ordre."
|
||||
"Du kan ikke fjerne produkter fra en ordre, der ikke er en igangværende "
|
||||
"ordre."
|
||||
|
||||
#: engine/core/models.py:1894
|
||||
msgid "name"
|
||||
|
|
@ -2779,8 +2781,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Ingen kundeaktivitet i de sidste 30 dage."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Dagligt salg (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Dagligt salg"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2791,6 +2793,7 @@ msgid "Gross revenue"
|
|||
msgstr "Bruttoindtægter"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Bestillinger"
|
||||
|
||||
|
|
@ -2798,6 +2801,10 @@ msgstr "Bestillinger"
|
|||
msgid "Gross"
|
||||
msgstr "Brutto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Oversigt over indtægter"
|
||||
|
|
@ -2826,20 +2833,32 @@ msgid "No data"
|
|||
msgstr "Ingen dato"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Indtægter (brutto, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Indtægter (netto, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Returnerer (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Nettoomsætning"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Behandlede ordrer (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Tilbagebetalingssats"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Returneret"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Lavt lager"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Ingen varer på lavt lager."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2854,11 +2873,11 @@ msgid "Most wished product"
|
|||
msgstr "Mest ønskede produkt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Ingen data endnu."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Mest populære produkt"
|
||||
|
||||
|
|
@ -2894,10 +2913,6 @@ msgstr "Ingen kategorisalg inden for de sidste 30 dage."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django site-administrator"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2927,8 +2942,7 @@ msgstr "Hej %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Tak for din ordre #%(order.pk)s! Vi er glade for at kunne informere dig om, "
|
||||
|
|
@ -3042,8 +3056,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Tak for din bestilling! Vi er glade for at kunne bekræfte dit køb. Nedenfor "
|
||||
|
|
@ -3114,9 +3127,10 @@ msgstr "Parameteren NOMINATIM_URL skal være konfigureret!"
|
|||
#, python-brace-format
|
||||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr ""
|
||||
"Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} pixels."
|
||||
"Billedets dimensioner bør ikke overstige w{max_width} x h{max_height} "
|
||||
"pixels."
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3124,7 +3138,7 @@ msgstr ""
|
|||
"Håndterer anmodningen om sitemap-indekset og returnerer et XML-svar. Den "
|
||||
"sikrer, at svaret indeholder den passende indholdstypeheader for XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3134,17 +3148,17 @@ msgstr ""
|
|||
"behandler anmodningen, henter det relevante sitemap-detaljesvar og "
|
||||
"indstiller Content-Type-headeren til XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Returnerer en liste over understøttede sprog og de tilhørende oplysninger."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Returnerer hjemmesidens parametre som et JSON-objekt."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3152,11 +3166,11 @@ msgstr ""
|
|||
"Håndterer cache-operationer som f.eks. læsning og indstilling af cachedata "
|
||||
"med en specificeret nøgle og timeout."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Håndterer indsendelser af `kontakt os`-formularer."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3164,63 +3178,55 @@ msgstr ""
|
|||
"Håndterer anmodninger om behandling og validering af URL'er fra indgående "
|
||||
"POST-anmodninger."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Håndterer globale søgeforespørgsler."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Håndterer logikken i at købe som en virksomhed uden registrering."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Håndterer download af et digitalt aktiv, der er knyttet til en ordre.\n"
|
||||
"Denne funktion forsøger at betjene den digitale aktivfil, der ligger i "
|
||||
"projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som "
|
||||
"tegn på, at ressourcen ikke er tilgængelig."
|
||||
"Denne funktion forsøger at betjene den digitale aktivfil, der ligger i projektets lagermappe. Hvis filen ikke findes, udløses en HTTP 404-fejl som tegn på, at ressourcen ikke er tilgængelig."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid er påkrævet"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "Bestil produkt findes ikke"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Du kan kun downloade det digitale aktiv én gang"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "Ordren skal betales, før det digitale aktiv downloades."
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Ordreproduktet har ikke et produkt"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "Favicon ikke fundet"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Håndterer anmodninger om et websteds favicon.\n"
|
||||
"Denne funktion forsøger at servere favicon-filen, der ligger i projektets "
|
||||
"statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for "
|
||||
"at angive, at ressourcen ikke er tilgængelig."
|
||||
"Denne funktion forsøger at servere favicon-filen, der ligger i projektets statiske mappe. Hvis favicon-filen ikke findes, udløses en HTTP 404-fejl for at angive, at ressourcen ikke er tilgængelig."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3231,11 +3237,16 @@ msgstr ""
|
|||
"administratorinterfacets indeksside. Den bruger Djangos `redirect`-funktion "
|
||||
"til at håndtere HTTP-omdirigeringen."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Returnerer den aktuelle version af eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Indtægter og ordrer (sidste %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Returnerer brugerdefinerede variabler til Dashboard."
|
||||
|
||||
|
|
@ -3256,9 +3267,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Repræsenterer et visningssæt til håndtering af AttributeGroup-objekter. "
|
||||
"Håndterer operationer relateret til AttributeGroup, herunder filtrering, "
|
||||
|
|
@ -3452,11 +3464,11 @@ msgid ""
|
|||
"different HTTP methods, serializer overrides, and permission handling based "
|
||||
"on the request context."
|
||||
msgstr ""
|
||||
"Denne klasse giver viewset-funktionalitet til håndtering af `Address`-"
|
||||
"objekter. AddressViewSet-klassen muliggør CRUD-operationer, filtrering og "
|
||||
"brugerdefinerede handlinger relateret til adresseenheder. Den omfatter "
|
||||
"specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse af "
|
||||
"serializer og håndtering af tilladelser baseret på anmodningskonteksten."
|
||||
"Denne klasse giver viewset-funktionalitet til håndtering af "
|
||||
"`Address`-objekter. AddressViewSet-klassen muliggør CRUD-operationer, "
|
||||
"filtrering og brugerdefinerede handlinger relateret til adresseenheder. Den "
|
||||
"omfatter specialiseret adfærd for forskellige HTTP-metoder, tilsidesættelse "
|
||||
"af serializer og håndtering af tilladelser baseret på anmodningskonteksten."
|
||||
|
||||
#: engine/core/viewsets.py:1123
|
||||
#, python-brace-format
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Ist aktiv"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Wenn auf false gesetzt, kann dieses Objekt von Benutzern ohne die "
|
||||
"erforderliche Berechtigung nicht gesehen werden."
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Geliefert"
|
|||
msgid "canceled"
|
||||
msgstr "Abgesagt"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Gescheitert"
|
||||
|
||||
|
|
@ -207,10 +209,8 @@ msgid ""
|
|||
"apply only a key to read permitted data from cache.\n"
|
||||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Wenden Sie nur einen Schlüssel an, um erlaubte Daten aus dem Cache zu "
|
||||
"lesen.\n"
|
||||
"Schlüssel, Daten und Timeout mit Authentifizierung anwenden, um Daten in den "
|
||||
"Cache zu schreiben."
|
||||
"Wenden Sie nur einen Schlüssel an, um erlaubte Daten aus dem Cache zu lesen.\n"
|
||||
"Schlüssel, Daten und Timeout mit Authentifizierung anwenden, um Daten in den Cache zu schreiben."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -276,7 +276,8 @@ msgstr ""
|
|||
"Editierbarkeit"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Umschreiben einiger Felder einer bestehenden Attributgruppe, wobei nicht "
|
||||
"editierbare Felder gespeichert werden"
|
||||
|
|
@ -332,7 +333,8 @@ msgstr ""
|
|||
"Editierbarkeit"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Umschreiben einiger Felder eines vorhandenen Attributwerts, wobei nicht "
|
||||
"bearbeitbare Daten gespeichert werden"
|
||||
|
|
@ -391,12 +393,12 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Groß- und Kleinschreibung unempfindliche Teilstringsuche über "
|
||||
"human_readable_id, order_products.product.name und order_products.product."
|
||||
"partnumber"
|
||||
"human_readable_id, order_products.product.name und "
|
||||
"order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -433,8 +435,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Sortierung nach einem von: uuid, human_readable_id, user_email, user, "
|
||||
"status, created, modified, buy_time, random. Präfix mit '-' für absteigend "
|
||||
|
|
@ -502,7 +504,8 @@ msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen"
|
|||
#: engine/core/docs/drf/viewsets.py:409
|
||||
msgid "finalizes the order purchase for a non-registered user."
|
||||
msgstr ""
|
||||
"schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer ab."
|
||||
"schließt den Kauf einer Bestellung für einen nicht registrierten Benutzer "
|
||||
"ab."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:420
|
||||
msgid "add product to order"
|
||||
|
|
@ -647,29 +650,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtern Sie nach einem oder mehreren Attributnamen/Wertpaaren. \n"
|
||||
"- **Syntax**: `attr_name=Methode-Wert[;attr2=Methode2-Wert2]...`\n"
|
||||
"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): "
|
||||
"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, "
|
||||
"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, "
|
||||
"`gt`, `gte`, `in`\n"
|
||||
"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts "
|
||||
"übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten "
|
||||
"als String behandelt. \n"
|
||||
"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des "
|
||||
"Rohwertes. \n"
|
||||
"- **Methoden** (Standardwert ist \"icontains\", wenn nicht angegeben): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Wert-Typisierung**: JSON wird zuerst versucht (damit man Listen/Dicts übergeben kann), `true`/`false` für Booleans, Integers, Floats; ansonsten als String behandelt. \n"
|
||||
"- Base64**: Präfix \"b64-\" für URL-sichere Base64-Kodierung des Rohwertes. \n"
|
||||
"Beispiele: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -684,12 +676,10 @@ msgstr "(genaue) Produkt-UUID"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. "
|
||||
"Präfix mit \"-\" für absteigend. \n"
|
||||
"Durch Kommata getrennte Liste der Felder, nach denen sortiert werden soll. Präfix mit \"-\" für absteigend. \n"
|
||||
"**Erlaubt:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1173,7 +1163,7 @@ msgstr "Zwischengespeicherte Daten"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Camelized JSON-Daten aus der angeforderten URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Nur URLs, die mit http(s):// beginnen, sind zulässig"
|
||||
|
||||
|
|
@ -1224,7 +1214,8 @@ msgstr "Aktion muss entweder \"Hinzufügen\" oder \"Entfernen\" sein!"
|
|||
|
||||
#: engine/core/graphene/mutations.py:293
|
||||
msgid "perform an action on a list of products in the wishlist"
|
||||
msgstr "Ausführen einer Aktion für eine Liste von Produkten in der Wunschliste"
|
||||
msgstr ""
|
||||
"Ausführen einer Aktion für eine Liste von Produkten in der Wunschliste"
|
||||
|
||||
#: engine/core/graphene/mutations.py:311
|
||||
msgid "please provide wishlist_uuid value"
|
||||
|
|
@ -1259,8 +1250,8 @@ msgstr "Eine Bestellung kaufen"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Bitte senden Sie die Attribute als String im Format attr1=wert1,attr2=wert2"
|
||||
|
||||
|
|
@ -1339,9 +1330,11 @@ msgstr ""
|
|||
"verwendet werden."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern verfügbar."
|
||||
"Mindest- und Höchstpreise für Produkte in dieser Kategorie, sofern "
|
||||
"verfügbar."
|
||||
|
||||
#: engine/core/graphene/object_types.py:205
|
||||
msgid "tags for this category"
|
||||
|
|
@ -1824,7 +1817,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Stellt ein Markenobjekt im System dar. Diese Klasse verwaltet Informationen "
|
||||
"und Attribute in Bezug auf eine Marke, einschließlich ihres Namens, Logos, "
|
||||
|
|
@ -1940,7 +1934,8 @@ msgstr "SKU des Verkäufers"
|
|||
|
||||
#: engine/core/models.py:556
|
||||
msgid "digital file associated with this stock if applicable"
|
||||
msgstr "Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend"
|
||||
msgstr ""
|
||||
"Digitale Datei, die mit diesem Bestand verbunden ist, falls zutreffend"
|
||||
|
||||
#: engine/core/models.py:557
|
||||
msgid "digital file"
|
||||
|
|
@ -1998,7 +1993,8 @@ msgstr "Ist das Produkt digital"
|
|||
|
||||
#: engine/core/models.py:612
|
||||
msgid "provide a clear identifying name for the product"
|
||||
msgstr "Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an."
|
||||
msgstr ""
|
||||
"Geben Sie einen eindeutigen Namen zur Identifizierung des Produkts an."
|
||||
|
||||
#: engine/core/models.py:613
|
||||
msgid "product name"
|
||||
|
|
@ -2282,13 +2278,13 @@ msgstr "Ungelöst"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Stellt eine Adresseinheit dar, die Standortdetails und Assoziationen mit "
|
||||
"einem Benutzer enthält. Bietet Funktionen für die Speicherung von "
|
||||
|
|
@ -2383,7 +2379,8 @@ msgstr "Kennung des Promo-Codes"
|
|||
#: engine/core/models.py:1095
|
||||
msgid "fixed discount amount applied if percent is not used"
|
||||
msgstr ""
|
||||
"Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet wird"
|
||||
"Fester Rabattbetrag, der angewandt wird, wenn kein Prozentsatz verwendet "
|
||||
"wird"
|
||||
|
||||
#: engine/core/models.py:1096
|
||||
msgid "fixed discount amount"
|
||||
|
|
@ -2650,7 +2647,8 @@ msgid "feedback comments"
|
|||
msgstr "Kommentare zum Feedback"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese"
|
||||
" Rückmeldung bezieht"
|
||||
|
|
@ -2680,8 +2678,8 @@ msgid ""
|
|||
"Product models and stores a reference to them."
|
||||
msgstr ""
|
||||
"Stellt die mit Bestellungen verbundenen Produkte und ihre Attribute dar. Das"
|
||||
"OrderProduct-Modell verwaltet Informationen über ein Produkt, das Teil einer "
|
||||
"Bestellung ist, einschließlich Details wie Kaufpreis, Menge, "
|
||||
" OrderProduct-Modell verwaltet Informationen über ein Produkt, das Teil "
|
||||
"einer Bestellung ist, einschließlich Details wie Kaufpreis, Menge, "
|
||||
"Produktattribute und Status. Es verwaltet Benachrichtigungen für Benutzer "
|
||||
"und Administratoren und führt Vorgänge wie die Rückgabe des Produktsaldos "
|
||||
"oder das Hinzufügen von Feedback durch. Dieses Modell bietet auch Methoden "
|
||||
|
|
@ -2856,8 +2854,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Keine Kundenaktivität in den letzten 30 Tagen."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Tägliche Verkäufe (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Tägliche Verkäufe"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2868,6 +2866,7 @@ msgid "Gross revenue"
|
|||
msgstr "Bruttoeinnahmen"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Bestellungen"
|
||||
|
||||
|
|
@ -2875,6 +2874,10 @@ msgstr "Bestellungen"
|
|||
msgid "Gross"
|
||||
msgstr "Brutto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Einkommensübersicht"
|
||||
|
|
@ -2903,20 +2906,32 @@ msgid "No data"
|
|||
msgstr "Kein Datum"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Einkommen (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Einnahmen (netto, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Rückgaben (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Nettoeinkommen"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Bearbeitete Aufträge (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Erstattungssatz"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Zurückgeschickt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Niedriger Bestand"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Keine Artikel mit geringem Lagerbestand."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2931,11 +2946,11 @@ msgid "Most wished product"
|
|||
msgstr "Meistgewünschtes Produkt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Noch keine Daten."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Beliebtestes Produkt"
|
||||
|
||||
|
|
@ -2971,10 +2986,6 @@ msgstr "Keine Kategorieverkäufe in den letzten 30 Tagen."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django-Website-Administrator"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -3004,8 +3015,7 @@ msgstr "Hallo %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Vielen Dank für Ihre Bestellung #%(order.pk)s! Wir freuen uns, Ihnen "
|
||||
|
|
@ -3120,8 +3130,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Vielen Dank für Ihre Bestellung! Wir freuen uns, Ihren Kauf zu bestätigen. "
|
||||
|
|
@ -3158,7 +3167,8 @@ msgstr "Sowohl Daten als auch Timeout sind erforderlich"
|
|||
|
||||
#: engine/core/utils/caching.py:46
|
||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||
msgstr "Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen"
|
||||
msgstr ""
|
||||
"Ungültiger Timeout-Wert, er muss zwischen 0 und 216000 Sekunden liegen"
|
||||
|
||||
#: engine/core/utils/emailing.py:27
|
||||
#, python-brace-format
|
||||
|
|
@ -3195,7 +3205,7 @@ msgstr ""
|
|||
"Die Bildabmessungen sollten w{max_width} x h{max_height} Pixel nicht "
|
||||
"überschreiten"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3204,7 +3214,7 @@ msgstr ""
|
|||
"zurück. Sie stellt sicher, dass die Antwort den entsprechenden Content-Type-"
|
||||
"Header für XML enthält."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3214,18 +3224,18 @@ msgstr ""
|
|||
"Funktion verarbeitet die Anfrage, holt die entsprechende Sitemap-"
|
||||
"Detailantwort ab und setzt den Content-Type-Header für XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Gibt eine Liste der unterstützten Sprachen und der entsprechenden "
|
||||
"Informationen zurück."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Gibt die Parameter der Website als JSON-Objekt zurück."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3233,11 +3243,11 @@ msgstr ""
|
|||
"Erledigt Cache-Operationen wie das Lesen und Setzen von Cache-Daten mit "
|
||||
"einem bestimmten Schlüssel und Timeout."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Verarbeitet Übermittlungen des Formulars \"Kontaktieren Sie uns\"."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3245,67 +3255,57 @@ msgstr ""
|
|||
"Bearbeitet Anfragen zur Verarbeitung und Validierung von URLs aus "
|
||||
"eingehenden POST-Anfragen."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Bearbeitet globale Suchanfragen."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Behandelt die Logik des Kaufs als Unternehmen ohne Registrierung."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag "
|
||||
"verbunden ist.\n"
|
||||
"Diese Funktion versucht, die Datei des digitalen Assets, die sich im "
|
||||
"Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei "
|
||||
"nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass "
|
||||
"die Ressource nicht verfügbar ist."
|
||||
"Bearbeitet das Herunterladen eines digitalen Assets, das mit einem Auftrag verbunden ist.\n"
|
||||
"Diese Funktion versucht, die Datei des digitalen Assets, die sich im Speicherverzeichnis des Projekts befindet, bereitzustellen. Wenn die Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgelöst, um anzuzeigen, dass die Ressource nicht verfügbar ist."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid ist erforderlich"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "Produkt bestellen existiert nicht"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Sie können das digitale Asset nur einmal herunterladen"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr ""
|
||||
"die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt werden"
|
||||
"die Bestellung muss vor dem Herunterladen des digitalen Assets bezahlt "
|
||||
"werden"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Das Bestellprodukt hat kein Produkt"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "Favicon nicht gefunden"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Bearbeitet Anfragen nach dem Favicon einer Website.\n"
|
||||
"Diese Funktion versucht, die Favicon-Datei, die sich im statischen "
|
||||
"Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei "
|
||||
"nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, "
|
||||
"dass die Ressource nicht verfügbar ist."
|
||||
"Diese Funktion versucht, die Favicon-Datei, die sich im statischen Verzeichnis des Projekts befindet, bereitzustellen. Wenn die Favicon-Datei nicht gefunden wird, wird ein HTTP 404-Fehler ausgegeben, um anzuzeigen, dass die Ressource nicht verfügbar ist."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3316,11 +3316,16 @@ msgstr ""
|
|||
"Administrationsoberfläche um. Sie verwendet die Funktion `redirect` von "
|
||||
"Django für die Bearbeitung der HTTP-Umleitung."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Gibt die aktuelle Version von eVibes zurück."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Einnahmen und Aufträge (zuletzt %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Gibt benutzerdefinierte Variablen für das Dashboard zurück."
|
||||
|
||||
|
|
@ -3341,14 +3346,15 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Stellt ein Viewset für die Verwaltung von AttributeGroup-Objekten dar. "
|
||||
"Bearbeitet Vorgänge im Zusammenhang mit AttributeGroup, einschließlich "
|
||||
"Filterung, Serialisierung und Abruf von Daten. Diese Klasse ist Teil der API-"
|
||||
"Schicht der Anwendung und bietet eine standardisierte Methode zur "
|
||||
"Filterung, Serialisierung und Abruf von Daten. Diese Klasse ist Teil der "
|
||||
"API-Schicht der Anwendung und bietet eine standardisierte Methode zur "
|
||||
"Verarbeitung von Anfragen und Antworten für AttributeGroup-Daten."
|
||||
|
||||
#: engine/core/viewsets.py:175
|
||||
|
|
@ -3472,10 +3478,10 @@ msgid ""
|
|||
"enforces permissions accordingly while interacting with order data."
|
||||
msgstr ""
|
||||
"ViewSet zur Verwaltung von Aufträgen und zugehörigen Vorgängen. Diese Klasse"
|
||||
"bietet Funktionen zum Abrufen, Ändern und Verwalten von Bestellobjekten. Sie "
|
||||
"enthält verschiedene Endpunkte für die Handhabung von Bestellvorgängen wie "
|
||||
"das Hinzufügen oder Entfernen von Produkten, die Durchführung von Käufen für "
|
||||
"registrierte und nicht registrierte Benutzer und das Abrufen der "
|
||||
" bietet Funktionen zum Abrufen, Ändern und Verwalten von Bestellobjekten. "
|
||||
"Sie enthält verschiedene Endpunkte für die Handhabung von Bestellvorgängen "
|
||||
"wie das Hinzufügen oder Entfernen von Produkten, die Durchführung von Käufen"
|
||||
" für registrierte und nicht registrierte Benutzer und das Abrufen der "
|
||||
"ausstehenden Bestellungen des aktuell authentifizierten Benutzers. Das "
|
||||
"ViewSet verwendet mehrere Serialisierer, die auf der spezifischen Aktion "
|
||||
"basieren, die durchgeführt wird, und erzwingt die entsprechenden "
|
||||
|
|
@ -3567,6 +3573,6 @@ msgstr ""
|
|||
"Bearbeitet Vorgänge im Zusammenhang mit Produkt-Tags innerhalb der "
|
||||
"Anwendung. Diese Klasse bietet Funktionen zum Abrufen, Filtern und "
|
||||
"Serialisieren von Produkt-Tag-Objekten. Sie unterstützt die flexible "
|
||||
"Filterung nach bestimmten Attributen unter Verwendung des angegebenen Filter-"
|
||||
"Backends und verwendet dynamisch verschiedene Serialisierer auf der "
|
||||
"Filterung nach bestimmten Attributen unter Verwendung des angegebenen "
|
||||
"Filter-Backends und verwendet dynamisch verschiedene Serialisierer auf der "
|
||||
"Grundlage der durchgeführten Aktion."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -31,9 +31,11 @@ msgstr "Is Active"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"If set to false, this object can't be seen by users without needed permission"
|
||||
"If set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
|
||||
#: engine/core/abstract.py:23 engine/core/choices.py:18
|
||||
msgid "created"
|
||||
|
|
@ -157,7 +159,8 @@ msgstr "Delivered"
|
|||
msgid "canceled"
|
||||
msgstr "Canceled"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Failed"
|
||||
|
||||
|
|
@ -272,7 +275,8 @@ msgid "rewrite an existing attribute group saving non-editables"
|
|||
msgstr "Rewrite an existing attribute group saving non-editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Rewrite some fields of an existing attribute group saving non-editables"
|
||||
|
||||
|
|
@ -321,7 +325,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "Rewrite an existing attribute value saving non-editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Rewrite some fields of an existing attribute value saving non-editables"
|
||||
|
||||
|
|
@ -375,11 +380,11 @@ msgstr "For non-staff users, only their own orders are returned."
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -412,12 +417,12 @@ msgstr "Filter by order status (case-insensitive substring match)"
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:336
|
||||
msgid "retrieve a single order (detailed view)"
|
||||
|
|
@ -603,30 +608,20 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569
|
||||
|
|
@ -639,12 +634,10 @@ msgstr "(exact) Product UUID"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1094,7 +1087,7 @@ msgstr "Cached data"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Camelized JSON data from the requested URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Only URLs starting with http(s):// are allowed"
|
||||
|
||||
|
|
@ -1178,11 +1171,11 @@ msgstr "Buy an order"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"Please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
msgid "add or delete a feedback for orderproduct"
|
||||
|
|
@ -1256,7 +1249,8 @@ msgid "which attributes and values can be used for filtering this category."
|
|||
msgstr "Which attributes and values can be used for filtering this category."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimum and maximum prices for products in this category, if available."
|
||||
|
||||
|
|
@ -1729,12 +1723,14 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
|
||||
#: engine/core/models.py:448
|
||||
msgid "name of this brand"
|
||||
|
|
@ -2173,22 +2169,22 @@ msgstr "Unresolved"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
|
||||
#: engine/core/models.py:1029
|
||||
msgid "address line for the customer"
|
||||
|
|
@ -2522,7 +2518,8 @@ msgid "feedback comments"
|
|||
msgstr "Feedback comments"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"References the specific product in an order that this feedback is about"
|
||||
|
||||
|
|
@ -2720,8 +2717,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "No customer activity in the last 30 days."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Daily sales (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Daily sales"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2732,6 +2729,7 @@ msgid "Gross revenue"
|
|||
msgstr "Gross revenue"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Orders"
|
||||
|
||||
|
|
@ -2739,6 +2737,10 @@ msgstr "Orders"
|
|||
msgid "Gross"
|
||||
msgstr "Gross"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Income overview"
|
||||
|
|
@ -2767,20 +2769,32 @@ msgid "No data"
|
|||
msgstr "No data"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Returns (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Net revenue"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Processed orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Refund rate"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Returned"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Low stock"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "No low stock items."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2795,11 +2809,11 @@ msgid "Most wished product"
|
|||
msgstr "Most wished products"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "No data yet."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Most popular products"
|
||||
|
||||
|
|
@ -2835,10 +2849,6 @@ msgstr "No category sales in the last 30 days."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django site admin"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2868,8 +2878,7 @@ msgstr "Hello %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Thank you for your order #%(order.pk)s! We are pleased to inform you that we"
|
||||
|
|
@ -2983,8 +2992,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Thank you for your order! We are pleased to confirm your purchase. Below are"
|
||||
|
|
@ -3057,7 +3065,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"Image dimensions should not exceed w{max_width} x h{max_height} pixels!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3065,7 +3073,7 @@ msgstr ""
|
|||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3075,17 +3083,17 @@ msgstr ""
|
|||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
"Content-Type header for XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Returns the parameters of the website as a JSON object."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3093,11 +3101,11 @@ msgstr ""
|
|||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Handles `contact us` form submissions."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3105,63 +3113,55 @@ msgstr ""
|
|||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Handles global search queries."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Handles the logic of buying as a business without registration."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid is required"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "order product does not exist"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "You can only download the digital asset once"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "the order must be paid before downloading the digital asset"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "The order product does not have a product"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon not found"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3171,11 +3171,16 @@ msgstr ""
|
|||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Returns current version of the eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Revenue & Orders (last %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Returns custom variables for Dashboard."
|
||||
|
||||
|
|
@ -3196,14 +3201,16 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
|
||||
#: engine/core/viewsets.py:175
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -27,9 +27,11 @@ msgstr "Is Active"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"If set to false, this object can't be seen by users without needed permission"
|
||||
"If set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
|
||||
#: engine/core/abstract.py:23 engine/core/choices.py:18
|
||||
msgid "created"
|
||||
|
|
@ -153,7 +155,8 @@ msgstr "Delivered"
|
|||
msgid "canceled"
|
||||
msgstr "Canceled"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Failed"
|
||||
|
||||
|
|
@ -268,7 +271,8 @@ msgid "rewrite an existing attribute group saving non-editables"
|
|||
msgstr "Rewrite an existing attribute group saving non-editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Rewrite some fields of an existing attribute group saving non-editables"
|
||||
|
||||
|
|
@ -317,7 +321,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "Rewrite an existing attribute value saving non-editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Rewrite some fields of an existing attribute value saving non-editables"
|
||||
|
||||
|
|
@ -371,11 +376,11 @@ msgstr "For non-staff users, only their own orders are returned."
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -408,12 +413,12 @@ msgstr "Filter by order status (case-insensitive substring match)"
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:336
|
||||
msgid "retrieve a single order (detailed view)"
|
||||
|
|
@ -599,26 +604,17 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…`\n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n"
|
||||
|
|
@ -634,12 +630,10 @@ msgstr "(exact) Product UUID"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1089,7 +1083,7 @@ msgstr "Cached data"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Camelized JSON data from the requested URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Only URLs starting with http(s):// are allowed"
|
||||
|
||||
|
|
@ -1173,11 +1167,11 @@ msgstr "Buy an order"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"Please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
msgid "add or delete a feedback for orderproduct"
|
||||
|
|
@ -1251,7 +1245,8 @@ msgid "which attributes and values can be used for filtering this category."
|
|||
msgstr "Which attributes and values can be used for filtering this category."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimum and maximum prices for products in this category, if available."
|
||||
|
||||
|
|
@ -1724,12 +1719,14 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
|
||||
#: engine/core/models.py:448
|
||||
msgid "name of this brand"
|
||||
|
|
@ -2168,22 +2165,22 @@ msgstr "Unresolved"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
|
||||
#: engine/core/models.py:1029
|
||||
msgid "address line for the customer"
|
||||
|
|
@ -2517,7 +2514,8 @@ msgid "feedback comments"
|
|||
msgstr "Feedback comments"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"References the specific product in an order that this feedback is about"
|
||||
|
||||
|
|
@ -2715,8 +2713,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "No customer activity in the last 30 days."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Daily sales (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Daily sales"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2727,6 +2725,7 @@ msgid "Gross revenue"
|
|||
msgstr "Gross revenue"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Orders"
|
||||
|
||||
|
|
@ -2734,6 +2733,10 @@ msgstr "Orders"
|
|||
msgid "Gross"
|
||||
msgstr "Gross"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Income overview"
|
||||
|
|
@ -2762,20 +2765,32 @@ msgid "No data"
|
|||
msgstr "No date"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Returns (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Net revenue"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Processed orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Refund rate"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Returned"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Low stock"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "No low stock items."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2790,11 +2805,11 @@ msgid "Most wished product"
|
|||
msgstr "Most wished products"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "No data yet."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Most popular products"
|
||||
|
||||
|
|
@ -2830,10 +2845,6 @@ msgstr "No category sales in the last 30 days."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django site admin"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2863,8 +2874,7 @@ msgstr "Hello %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Thank you for your order #%(order.pk)s! We are pleased to inform you that we"
|
||||
|
|
@ -2978,8 +2988,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Thank you for your order! We are pleased to confirm your purchase. Below are"
|
||||
|
|
@ -3052,7 +3061,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"Image dimensions should not exceed w{max_width} x h{max_height} pixels!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3060,7 +3069,7 @@ msgstr ""
|
|||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3070,17 +3079,17 @@ msgstr ""
|
|||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
"Content-Type header for XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Returns the parameters of the website as a JSON object."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3088,11 +3097,11 @@ msgstr ""
|
|||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Handles `contact us` form submissions."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3100,63 +3109,55 @@ msgstr ""
|
|||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Handles global search queries."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Handles the logic of buying as a business without registration."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid is required"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "order product does not exist"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "You can only download the digital asset once"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "the order must be paid before downloading the digital asset"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "The order product does not have a product"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon not found"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3166,11 +3167,16 @@ msgstr ""
|
|||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Returns current version of the eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Revenue & Orders (last %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Returns custom variables for Dashboard."
|
||||
|
||||
|
|
@ -3191,14 +3197,16 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
|
||||
#: engine/core/viewsets.py:175
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Está activo"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Si se establece en false, este objeto no puede ser visto por los usuarios "
|
||||
"sin el permiso necesario"
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Entregado"
|
|||
msgid "canceled"
|
||||
msgstr "Cancelado"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Fallido"
|
||||
|
||||
|
|
@ -208,8 +210,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Aplicar sólo una clave para leer datos permitidos de la caché.\n"
|
||||
"Aplicar clave, datos y tiempo de espera con autenticación para escribir "
|
||||
"datos en la caché."
|
||||
"Aplicar clave, datos y tiempo de espera con autenticación para escribir datos en la caché."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -273,7 +274,8 @@ msgid "rewrite an existing attribute group saving non-editables"
|
|||
msgstr "Reescribir un grupo de atributos existente guardando los no editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Reescribir algunos campos de un grupo de atributos existente guardando los "
|
||||
"no editables"
|
||||
|
|
@ -301,7 +303,8 @@ msgstr "Reescribir un atributo existente guardando los no editables"
|
|||
#: engine/core/docs/drf/viewsets.py:141
|
||||
msgid "rewrite some fields of an existing attribute saving non-editables"
|
||||
msgstr ""
|
||||
"Reescribir algunos campos de un atributo existente guardando los no editables"
|
||||
"Reescribir algunos campos de un atributo existente guardando los no "
|
||||
"editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:151
|
||||
msgid "list all attribute values (simple view)"
|
||||
|
|
@ -324,7 +327,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "Reescribir un valor de atributo existente guardando los no editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Reescribir algunos campos de un valor de atributo existente guardando los no"
|
||||
" editables"
|
||||
|
|
@ -383,12 +387,12 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Búsqueda de subcadenas sin distinción entre mayúsculas y minúsculas en "
|
||||
"human_readable_id, order_products.product.name y order_products.product."
|
||||
"partnumber"
|
||||
"human_readable_id, order_products.product.name y "
|
||||
"order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -425,8 +429,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Ordenar por: uuid, human_readable_id, user_email, user, status, created, "
|
||||
"modified, buy_time, random. Utilice el prefijo '-' para orden descendente "
|
||||
|
|
@ -573,7 +577,8 @@ msgstr "Reescribir un atributo existente guardando los no editables"
|
|||
#: engine/core/docs/drf/viewsets.py:496
|
||||
msgid "rewrite some fields of an existing wishlist saving non-editables"
|
||||
msgstr ""
|
||||
"Reescribir algunos campos de un atributo existente guardando los no editables"
|
||||
"Reescribir algunos campos de un atributo existente guardando los no "
|
||||
"editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:503
|
||||
msgid "retrieve current pending wishlist of a user"
|
||||
|
|
@ -628,31 +633,20 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrar por uno o varios pares nombre/valor de atributo. \n"
|
||||
"- Sintaxis**: `nombre_attr=método-valor[;attr2=método2-valor2]...`.\n"
|
||||
"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- Tipificación de valores**: Se intenta primero JSON (para poder pasar "
|
||||
"listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso "
|
||||
"contrario se trata como cadena. \n"
|
||||
"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin "
|
||||
"procesar. \n"
|
||||
"- Métodos** (por defecto `icontiene` si se omite): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- Tipificación de valores**: Se intenta primero JSON (para poder pasar listas/dictos), `true`/`false` para booleanos, enteros, flotantes; en caso contrario se trata como cadena. \n"
|
||||
"- Base64**: prefiérelo con `b64-` para codificar en base64 el valor sin procesar. \n"
|
||||
"Ejemplos: \n"
|
||||
"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", "
|
||||
"\"bluetooth\"]`,\n"
|
||||
"`color=rojo exacto`, `tamaño=gt-10`, `características=en-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569
|
||||
|
|
@ -665,12 +659,10 @@ msgstr "UUID (exacto) del producto"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` "
|
||||
"para que sea descendente. \n"
|
||||
"Lista separada por comas de campos por los que ordenar. Prefiérela con `-` para que sea descendente. \n"
|
||||
"**Permitido:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -879,7 +871,8 @@ msgstr "Eliminar la imagen de un producto"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1079
|
||||
msgid "rewrite an existing product image saving non-editables"
|
||||
msgstr "Reescribir una imagen de producto existente guardando los no editables"
|
||||
msgstr ""
|
||||
"Reescribir una imagen de producto existente guardando los no editables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1086
|
||||
msgid "rewrite some fields of an existing product image saving non-editables"
|
||||
|
|
@ -1073,7 +1066,8 @@ msgstr "SKU"
|
|||
|
||||
#: engine/core/filters.py:184
|
||||
msgid "there must be a category_uuid to use include_subcategories flag"
|
||||
msgstr "Debe haber un category_uuid para usar la bandera include_subcategories"
|
||||
msgstr ""
|
||||
"Debe haber un category_uuid para usar la bandera include_subcategories"
|
||||
|
||||
#: engine/core/filters.py:353
|
||||
msgid "Search (ID, product name or part number)"
|
||||
|
|
@ -1141,7 +1135,7 @@ msgstr "Datos en caché"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Datos JSON camelizados de la URL solicitada"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Sólo se permiten URL que empiecen por http(s)://."
|
||||
|
||||
|
|
@ -1174,7 +1168,8 @@ msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!"
|
|||
#: engine/core/graphene/mutations.py:236 engine/core/graphene/mutations.py:501
|
||||
#: engine/core/graphene/mutations.py:543 engine/core/viewsets.py:712
|
||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||
msgstr "Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}"
|
||||
msgstr ""
|
||||
"Tipo incorrecto proveniente del método order.buy(): {type(instance)!s}"
|
||||
|
||||
#: engine/core/graphene/mutations.py:245
|
||||
msgid "perform an action on a list of products in the order"
|
||||
|
|
@ -1225,11 +1220,11 @@ msgstr "Comprar un pedido"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Por favor, envíe los atributos como una cadena formateada como attr1=valor1,"
|
||||
"attr2=valor2"
|
||||
"Por favor, envíe los atributos como una cadena formateada como "
|
||||
"attr1=valor1,attr2=valor2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
msgid "add or delete a feedback for orderproduct"
|
||||
|
|
@ -1304,7 +1299,8 @@ msgstr ""
|
|||
"Qué atributos y valores se pueden utilizar para filtrar esta categoría."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Precios mínimo y máximo de los productos de esta categoría, si están "
|
||||
"disponibles."
|
||||
|
|
@ -1337,7 +1333,8 @@ msgstr "Cómo"
|
|||
#: engine/core/graphene/object_types.py:483
|
||||
msgid "rating value from 1 to 10, inclusive, or 0 if not set."
|
||||
msgstr ""
|
||||
"Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está configurado."
|
||||
"Valor de calificación de 1 a 10, ambos inclusive, o 0 si no está "
|
||||
"configurado."
|
||||
|
||||
#: engine/core/graphene/object_types.py:366
|
||||
msgid "represents feedback from a user."
|
||||
|
|
@ -1788,7 +1785,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Representa un objeto Marca en el sistema. Esta clase maneja información y "
|
||||
"atributos relacionados con una marca, incluyendo su nombre, logotipos, "
|
||||
|
|
@ -1933,12 +1931,12 @@ msgstr ""
|
|||
"estado digital, nombre, descripción, número de pieza y babosa. Proporciona "
|
||||
"propiedades de utilidad relacionadas para recuperar valoraciones, recuentos "
|
||||
"de comentarios, precio, cantidad y total de pedidos. Diseñado para su uso en"
|
||||
"un sistema que gestiona el comercio electrónico o la gestión de inventarios. "
|
||||
"Esta clase interactúa con modelos relacionados (como Category, Brand y "
|
||||
"ProductTag) y gestiona el almacenamiento en caché de las propiedades a las "
|
||||
"que se accede con frecuencia para mejorar el rendimiento. Se utiliza para "
|
||||
"definir y manipular datos de productos y su información asociada dentro de "
|
||||
"una aplicación."
|
||||
" un sistema que gestiona el comercio electrónico o la gestión de "
|
||||
"inventarios. Esta clase interactúa con modelos relacionados (como Category, "
|
||||
"Brand y ProductTag) y gestiona el almacenamiento en caché de las propiedades"
|
||||
" a las que se accede con frecuencia para mejorar el rendimiento. Se utiliza "
|
||||
"para definir y manipular datos de productos y su información asociada dentro"
|
||||
" de una aplicación."
|
||||
|
||||
#: engine/core/models.py:585
|
||||
msgid "category this product belongs to"
|
||||
|
|
@ -2239,13 +2237,13 @@ msgstr "Sin resolver"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Representa una entidad de dirección que incluye detalles de ubicación y "
|
||||
"asociaciones con un usuario. Proporciona funcionalidad para el "
|
||||
|
|
@ -2597,7 +2595,8 @@ msgid "feedback comments"
|
|||
msgstr "Comentarios"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Hace referencia al producto específico de un pedido sobre el que trata esta "
|
||||
"opinión"
|
||||
|
|
@ -2754,7 +2753,8 @@ msgstr ""
|
|||
" y acceder a descargas relacionadas con productos de pedidos. Mantiene "
|
||||
"información sobre el producto del pedido asociado, el número de descargas y "
|
||||
"si el activo es visible públicamente. Incluye un método para generar una URL"
|
||||
"para descargar el activo cuando el pedido asociado está en estado completado."
|
||||
" para descargar el activo cuando el pedido asociado está en estado "
|
||||
"completado."
|
||||
|
||||
#: engine/core/models.py:1961
|
||||
msgid "download"
|
||||
|
|
@ -2800,8 +2800,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Sin actividad de clientes en los últimos 30 días."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Ventas diarias (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Ventas diarias"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2812,6 +2812,7 @@ msgid "Gross revenue"
|
|||
msgstr "Ingresos brutos"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Pedidos"
|
||||
|
||||
|
|
@ -2819,6 +2820,10 @@ msgstr "Pedidos"
|
|||
msgid "Gross"
|
||||
msgstr "Bruto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Cuadro de mandos"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Resumen de ingresos"
|
||||
|
|
@ -2847,20 +2852,32 @@ msgid "No data"
|
|||
msgstr "Sin fecha"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Ingresos (brutos, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Ingresos (netos, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Devoluciones (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Ingresos netos"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Pedidos procesados (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Tasa de devolución"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Devuelto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Pocas existencias"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "No hay artículos de bajo stock."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2875,11 +2892,11 @@ msgid "Most wished product"
|
|||
msgstr "Producto más deseado"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Aún no hay datos."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Producto más popular"
|
||||
|
||||
|
|
@ -2915,10 +2932,6 @@ msgstr "Ninguna venta de categoría en los últimos 30 días."
|
|||
msgid "Django site admin"
|
||||
msgstr "Administrador del sitio Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Cuadro de mandos"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2948,8 +2961,7 @@ msgstr "Hola %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"¡Gracias por su pedido #%(order.pk)s! Nos complace informarle de que hemos "
|
||||
|
|
@ -3063,8 +3075,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Gracias por su pedido. Nos complace confirmarle su compra. A continuación "
|
||||
|
|
@ -3139,7 +3150,7 @@ msgstr ""
|
|||
"Las dimensiones de la imagen no deben superar w{max_width} x h{max_height} "
|
||||
"píxeles."
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3148,7 +3159,7 @@ msgstr ""
|
|||
" XML. Se asegura de que la respuesta incluya el encabezado de tipo de "
|
||||
"contenido apropiado para XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3158,17 +3169,18 @@ msgstr ""
|
|||
"función procesa la solicitud, obtiene la respuesta detallada del mapa del "
|
||||
"sitio y establece el encabezado Content-Type para XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Devuelve una lista de los idiomas admitidos y su información correspondiente."
|
||||
"Devuelve una lista de los idiomas admitidos y su información "
|
||||
"correspondiente."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Devuelve los parámetros del sitio web como un objeto JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3176,11 +3188,11 @@ msgstr ""
|
|||
"Gestiona las operaciones de caché, como la lectura y el establecimiento de "
|
||||
"datos de caché con una clave y un tiempo de espera especificados."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Gestiona los formularios de contacto."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3188,63 +3200,55 @@ msgstr ""
|
|||
"Gestiona las solicitudes de procesamiento y validación de URL de las "
|
||||
"solicitudes POST entrantes."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Gestiona las consultas de búsqueda global."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Maneja la lógica de la compra como empresa sin registro."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gestiona la descarga de un activo digital asociado a un pedido.\n"
|
||||
"Esta función intenta servir el archivo del activo digital ubicado en el "
|
||||
"directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se "
|
||||
"genera un error HTTP 404 para indicar que el recurso no está disponible."
|
||||
"Esta función intenta servir el archivo del activo digital ubicado en el directorio de almacenamiento del proyecto. Si no se encuentra el archivo, se genera un error HTTP 404 para indicar que el recurso no está disponible."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid es obligatorio"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "pedir producto no existe"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Sólo puede descargar el activo digital una vez"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "el pedido debe pagarse antes de descargar el activo digital"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "El producto del pedido no tiene un producto"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon no encontrado"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gestiona las peticiones del favicon de un sitio web.\n"
|
||||
"Esta función intenta servir el archivo favicon ubicado en el directorio "
|
||||
"estático del proyecto. Si no se encuentra el archivo favicon, se genera un "
|
||||
"error HTTP 404 para indicar que el recurso no está disponible."
|
||||
"Esta función intenta servir el archivo favicon ubicado en el directorio estático del proyecto. Si no se encuentra el archivo favicon, se genera un error HTTP 404 para indicar que el recurso no está disponible."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3255,11 +3259,16 @@ msgstr ""
|
|||
"de la interfaz de administración de Django. Utiliza la función `redirect` de"
|
||||
" Django para gestionar la redirección HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Devuelve la versión actual del eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Ingresos y pedidos (últimos %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Devuelve variables personalizadas para Dashboard."
|
||||
|
||||
|
|
@ -3280,9 +3289,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Representa un conjunto de vistas para gestionar objetos AttributeGroup. "
|
||||
"Maneja operaciones relacionadas con AttributeGroup, incluyendo filtrado, "
|
||||
|
|
@ -3345,8 +3355,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Representa un conjunto de vistas para gestionar instancias de Brand. Esta "
|
||||
"clase proporciona funcionalidad para consultar, filtrar y serializar objetos"
|
||||
"Brand. Utiliza el marco ViewSet de Django para simplificar la implementación "
|
||||
"de puntos finales de API para objetos Brand."
|
||||
" Brand. Utiliza el marco ViewSet de Django para simplificar la "
|
||||
"implementación de puntos finales de API para objetos Brand."
|
||||
|
||||
#: engine/core/viewsets.py:438
|
||||
msgid ""
|
||||
|
|
@ -3361,10 +3371,11 @@ msgstr ""
|
|||
"Gestiona las operaciones relacionadas con el modelo `Producto` en el "
|
||||
"sistema. Esta clase proporciona un conjunto de vistas para la gestión de "
|
||||
"productos, incluyendo su filtrado, serialización y operaciones en instancias"
|
||||
"específicas. Se extiende desde `EvibesViewSet` para utilizar funcionalidades "
|
||||
"comunes y se integra con el framework Django REST para operaciones RESTful "
|
||||
"API. Incluye métodos para recuperar detalles del producto, aplicar permisos "
|
||||
"y acceder a comentarios relacionados de un producto."
|
||||
" específicas. Se extiende desde `EvibesViewSet` para utilizar "
|
||||
"funcionalidades comunes y se integra con el framework Django REST para "
|
||||
"operaciones RESTful API. Incluye métodos para recuperar detalles del "
|
||||
"producto, aplicar permisos y acceder a comentarios relacionados de un "
|
||||
"producto."
|
||||
|
||||
#: engine/core/viewsets.py:574
|
||||
msgid ""
|
||||
|
|
@ -3411,11 +3422,11 @@ msgstr ""
|
|||
"ViewSet para la gestión de pedidos y operaciones relacionadas. Esta clase "
|
||||
"proporciona funcionalidad para recuperar, modificar y gestionar objetos de "
|
||||
"pedido. Incluye varios puntos finales para gestionar operaciones de pedidos,"
|
||||
"como añadir o eliminar productos, realizar compras para usuarios registrados "
|
||||
"y no registrados, y recuperar los pedidos pendientes del usuario autenticado "
|
||||
"actual. ViewSet utiliza varios serializadores en función de la acción "
|
||||
"específica que se esté realizando y aplica los permisos correspondientes al "
|
||||
"interactuar con los datos del pedido."
|
||||
" como añadir o eliminar productos, realizar compras para usuarios "
|
||||
"registrados y no registrados, y recuperar los pedidos pendientes del usuario"
|
||||
" autenticado actual. ViewSet utiliza varios serializadores en función de la "
|
||||
"acción específica que se esté realizando y aplica los permisos "
|
||||
"correspondientes al interactuar con los datos del pedido."
|
||||
|
||||
#: engine/core/viewsets.py:825
|
||||
msgid ""
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -1049,7 +1049,7 @@ msgstr ""
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2543,7 +2543,7 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
|
|
@ -2555,6 +2555,7 @@ msgid "Gross revenue"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2562,6 +2563,10 @@ msgstr ""
|
|||
msgid "Gross"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr ""
|
||||
|
|
@ -2590,19 +2595,31 @@ msgid "No data"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
|
|
@ -2618,11 +2635,11 @@ msgid "Most wished product"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2658,10 +2675,6 @@ msgstr ""
|
|||
msgid "Django site admin"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2863,53 +2876,53 @@ msgstr ""
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
"Content-Type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
|
|
@ -2917,31 +2930,31 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
|
|
@ -2949,18 +2962,23 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming "
|
||||
"HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Est actif"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Si la valeur est fixée à false, cet objet ne peut pas être vu par les "
|
||||
"utilisateurs qui n'ont pas l'autorisation nécessaire."
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Livré"
|
|||
msgid "canceled"
|
||||
msgstr "Annulé"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Échec"
|
||||
|
||||
|
|
@ -207,10 +209,8 @@ msgid ""
|
|||
"apply only a key to read permitted data from cache.\n"
|
||||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Appliquer uniquement une clé pour lire les données autorisées dans la "
|
||||
"mémoire cache.\n"
|
||||
"Appliquer une clé, des données et un délai d'attente avec authentification "
|
||||
"pour écrire des données dans la mémoire cache."
|
||||
"Appliquer uniquement une clé pour lire les données autorisées dans la mémoire cache.\n"
|
||||
"Appliquer une clé, des données et un délai d'attente avec authentification pour écrire des données dans la mémoire cache."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -277,7 +277,8 @@ msgstr ""
|
|||
"modifiables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Réécrire certains champs d'un groupe d'attributs existant en sauvegardant "
|
||||
"les non-éditables"
|
||||
|
|
@ -332,7 +333,8 @@ msgstr ""
|
|||
"modifiables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Réécrire certains champs d'une valeur d'attribut existante en sauvegardant "
|
||||
"les éléments non modifiables"
|
||||
|
|
@ -391,11 +393,11 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Recherche insensible à la casse dans human_readable_id, order_products."
|
||||
"product.name, et order_products.product.partnumber"
|
||||
"Recherche insensible à la casse dans human_readable_id, "
|
||||
"order_products.product.name, et order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -432,8 +434,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Ordonner par l'un des éléments suivants : uuid, human_readable_id, "
|
||||
"user_email, user, status, created, modified, buy_time, random. Préfixer avec"
|
||||
|
|
@ -642,29 +644,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtre sur une ou plusieurs paires nom/valeur d'attribut. \n"
|
||||
"- **Syntaxe** : `nom_attr=méthode-valeur[;attr2=méthode2-valeur2]...`\n"
|
||||
"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : "
|
||||
"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, "
|
||||
"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, "
|
||||
"`gt`, `gte`, `in`\n"
|
||||
"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez "
|
||||
"passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les "
|
||||
"flottants ; sinon traité comme une chaîne de caractères. \n"
|
||||
"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de "
|
||||
"manière sûre pour l'URL. \n"
|
||||
"- **Méthodes** (la valeur par défaut est `icontains` si elle est omise) : `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Type de valeur** : JSON est essayé en premier (pour que vous puissiez passer des listes/dicts), `true`/`false` pour les booléens, les entiers, les flottants ; sinon traité comme une chaîne de caractères. \n"
|
||||
"- **Base64** : préfixe avec `b64-` pour encoder la valeur brute en base64 de manière sûre pour l'URL. \n"
|
||||
"Exemples : \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -679,12 +670,10 @@ msgstr "UUID (exact) du produit"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un "
|
||||
"tri descendant. \n"
|
||||
"Liste de champs séparés par des virgules à trier. Préfixer avec `-` pour un tri descendant. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -952,7 +941,8 @@ msgstr "Supprimer une promotion"
|
|||
#: engine/core/docs/drf/viewsets.py:1169
|
||||
msgid "rewrite an existing promotion saving non-editables"
|
||||
msgstr ""
|
||||
"Réécrire une promotion existante en sauvegardant les éléments non modifiables"
|
||||
"Réécrire une promotion existante en sauvegardant les éléments non "
|
||||
"modifiables"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1176
|
||||
msgid "rewrite some fields of an existing promotion saving non-editables"
|
||||
|
|
@ -1166,7 +1156,7 @@ msgstr "Données mises en cache"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Données JSON camélisées provenant de l'URL demandée"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Seuls les URL commençant par http(s):// sont autorisés."
|
||||
|
||||
|
|
@ -1254,8 +1244,8 @@ msgstr "Acheter une commande"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Veuillez envoyer les attributs sous la forme d'une chaîne formatée comme "
|
||||
"attr1=valeur1,attr2=valeur2."
|
||||
|
|
@ -1336,7 +1326,8 @@ msgstr ""
|
|||
"catégorie."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Prix minimum et maximum pour les produits de cette catégorie, s'ils sont "
|
||||
"disponibles."
|
||||
|
|
@ -1822,7 +1813,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Représente un objet Marque dans le système. Cette classe gère les "
|
||||
"informations et les attributs liés à une marque, y compris son nom, ses "
|
||||
|
|
@ -2105,7 +2097,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Représente une valeur spécifique pour un attribut lié à un produit. Il relie"
|
||||
" l'\"attribut\" à une \"valeur\" unique, ce qui permet une meilleure "
|
||||
"organisation et une représentation dynamique des caractéristiques du produit."
|
||||
"organisation et une représentation dynamique des caractéristiques du "
|
||||
"produit."
|
||||
|
||||
#: engine/core/models.py:788
|
||||
msgid "attribute of this value"
|
||||
|
|
@ -2226,7 +2219,8 @@ msgstr ""
|
|||
"gestion des produits souhaités. La classe fournit des fonctionnalités "
|
||||
"permettant de gérer une collection de produits, en prenant en charge des "
|
||||
"opérations telles que l'ajout et la suppression de produits, ainsi que des "
|
||||
"opérations permettant d'ajouter et de supprimer plusieurs produits à la fois."
|
||||
"opérations permettant d'ajouter et de supprimer plusieurs produits à la "
|
||||
"fois."
|
||||
|
||||
#: engine/core/models.py:926
|
||||
msgid "products that the user has marked as wanted"
|
||||
|
|
@ -2276,13 +2270,13 @@ msgstr "Non résolu"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Représente une entité d'adresse qui comprend des détails de localisation et "
|
||||
"des associations avec un utilisateur. Elle fournit des fonctionnalités de "
|
||||
|
|
@ -2368,7 +2362,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/models.py:1087
|
||||
msgid "unique code used by a user to redeem a discount"
|
||||
msgstr "Code unique utilisé par un utilisateur pour bénéficier d'une réduction"
|
||||
msgstr ""
|
||||
"Code unique utilisé par un utilisateur pour bénéficier d'une réduction"
|
||||
|
||||
#: engine/core/models.py:1088
|
||||
msgid "promo code identifier"
|
||||
|
|
@ -2376,7 +2371,8 @@ msgstr "Identifiant du code promotionnel"
|
|||
|
||||
#: engine/core/models.py:1095
|
||||
msgid "fixed discount amount applied if percent is not used"
|
||||
msgstr "Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé"
|
||||
msgstr ""
|
||||
"Montant fixe de la remise appliqué si le pourcentage n'est pas utilisé"
|
||||
|
||||
#: engine/core/models.py:1096
|
||||
msgid "fixed discount amount"
|
||||
|
|
@ -2384,7 +2380,8 @@ msgstr "Montant de l'escompte fixe"
|
|||
|
||||
#: engine/core/models.py:1102
|
||||
msgid "percentage discount applied if fixed amount is not used"
|
||||
msgstr "Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé"
|
||||
msgstr ""
|
||||
"Pourcentage de réduction appliqué si le montant fixe n'est pas utilisé"
|
||||
|
||||
#: engine/core/models.py:1103
|
||||
msgid "percentage discount"
|
||||
|
|
@ -2459,8 +2456,8 @@ msgid ""
|
|||
"supports managing the products in the order lifecycle."
|
||||
msgstr ""
|
||||
"Représente une commande passée par un utilisateur. Cette classe modélise une"
|
||||
"commande dans l'application, y compris ses différents attributs tels que les "
|
||||
"informations de facturation et d'expédition, le statut, l'utilisateur "
|
||||
" commande dans l'application, y compris ses différents attributs tels que "
|
||||
"les informations de facturation et d'expédition, le statut, l'utilisateur "
|
||||
"associé, les notifications et les opérations connexes. Les commandes peuvent"
|
||||
" être associées à des produits, des promotions peuvent être appliquées, des "
|
||||
"adresses peuvent être définies et les détails d'expédition ou de facturation"
|
||||
|
|
@ -2540,7 +2537,8 @@ msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !"
|
|||
#: engine/core/models.py:1351
|
||||
msgid "you cannot add products to an order that is not a pending one"
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en cours."
|
||||
"Vous ne pouvez pas ajouter de produits à une commande qui n'est pas en "
|
||||
"cours."
|
||||
|
||||
#: engine/core/models.py:1356
|
||||
msgid "you cannot add inactive products to order"
|
||||
|
|
@ -2647,7 +2645,8 @@ msgid "feedback comments"
|
|||
msgstr "Commentaires"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Fait référence au produit spécifique d'une commande sur lequel porte le "
|
||||
"retour d'information."
|
||||
|
|
@ -2677,15 +2676,16 @@ msgid ""
|
|||
"Product models and stores a reference to them."
|
||||
msgstr ""
|
||||
"Représente les produits associés aux commandes et leurs attributs. Le modèle"
|
||||
"OrderProduct conserve les informations relatives à un produit faisant partie "
|
||||
"d'une commande, y compris des détails tels que le prix d'achat, la quantité, "
|
||||
"les attributs du produit et le statut. Il gère les notifications destinées à "
|
||||
"l'utilisateur et aux administrateurs, ainsi que des opérations telles que le "
|
||||
"renvoi du solde du produit ou l'ajout de commentaires. Ce modèle fournit "
|
||||
"également des méthodes et des propriétés qui prennent en charge la logique "
|
||||
"commerciale, comme le calcul du prix total ou la génération d'une URL de "
|
||||
"téléchargement pour les produits numériques. Le modèle s'intègre aux modèles "
|
||||
"de commande et de produit et stocke une référence à ces derniers."
|
||||
" OrderProduct conserve les informations relatives à un produit faisant "
|
||||
"partie d'une commande, y compris des détails tels que le prix d'achat, la "
|
||||
"quantité, les attributs du produit et le statut. Il gère les notifications "
|
||||
"destinées à l'utilisateur et aux administrateurs, ainsi que des opérations "
|
||||
"telles que le renvoi du solde du produit ou l'ajout de commentaires. Ce "
|
||||
"modèle fournit également des méthodes et des propriétés qui prennent en "
|
||||
"charge la logique commerciale, comme le calcul du prix total ou la "
|
||||
"génération d'une URL de téléchargement pour les produits numériques. Le "
|
||||
"modèle s'intègre aux modèles de commande et de produit et stocke une "
|
||||
"référence à ces derniers."
|
||||
|
||||
#: engine/core/models.py:1757
|
||||
msgid "the price paid by the customer for this product at purchase time"
|
||||
|
|
@ -2697,7 +2697,8 @@ msgstr "Prix d'achat au moment de la commande"
|
|||
|
||||
#: engine/core/models.py:1763
|
||||
msgid "internal comments for admins about this ordered product"
|
||||
msgstr "Commentaires internes pour les administrateurs sur ce produit commandé"
|
||||
msgstr ""
|
||||
"Commentaires internes pour les administrateurs sur ce produit commandé"
|
||||
|
||||
#: engine/core/models.py:1764
|
||||
msgid "internal comments"
|
||||
|
|
@ -2851,8 +2852,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Pas d'activité client au cours des 30 derniers jours."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Ventes quotidiennes (30j)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Ventes quotidiennes"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2863,6 +2864,7 @@ msgid "Gross revenue"
|
|||
msgstr "Recettes brutes"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Commandes"
|
||||
|
||||
|
|
@ -2870,6 +2872,10 @@ msgstr "Commandes"
|
|||
msgid "Gross"
|
||||
msgstr "Brut"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Tableau de bord"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Aperçu des revenus"
|
||||
|
|
@ -2898,20 +2904,32 @@ msgid "No data"
|
|||
msgstr "Pas de date"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Retours (30j)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Net revenue"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Commandes traitées (30j)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Taux de remboursement"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Renvoyé"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Faible stock"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Pas d'articles en rupture de stock."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2926,11 +2944,11 @@ msgid "Most wished product"
|
|||
msgstr "Produit le plus souhaité"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Pas encore de données."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Produit le plus populaire"
|
||||
|
||||
|
|
@ -2966,10 +2984,6 @@ msgstr "Aucune vente par catégorie au cours des 30 derniers jours."
|
|||
msgid "Django site admin"
|
||||
msgstr "Administrateur de site Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Tableau de bord"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2999,8 +3013,7 @@ msgstr "Bonjour %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Merci pour votre commande #%(order.pk)s ! Nous avons le plaisir de vous "
|
||||
|
|
@ -3115,8 +3128,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Nous vous remercions pour votre commande ! Nous avons le plaisir de "
|
||||
|
|
@ -3193,7 +3205,7 @@ msgstr ""
|
|||
"Les dimensions de l'image ne doivent pas dépasser w{max_width} x "
|
||||
"h{max_height} pixels."
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3201,7 +3213,7 @@ msgstr ""
|
|||
"Gère la demande d'index sitemap et renvoie une réponse XML. Il s'assure que "
|
||||
"la réponse inclut l'en-tête de type de contenu approprié pour XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3211,18 +3223,18 @@ msgstr ""
|
|||
"demande, récupère la réponse détaillée appropriée du plan du site et définit"
|
||||
" l'en-tête Content-Type pour XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Renvoie une liste des langues prises en charge et des informations "
|
||||
"correspondantes."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Renvoie les paramètres du site web sous la forme d'un objet JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3230,11 +3242,11 @@ msgstr ""
|
|||
"Gère les opérations de cache telles que la lecture et la définition des "
|
||||
"données de cache avec une clé et un délai spécifiés."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Gère les soumissions du formulaire `contact us`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3242,64 +3254,55 @@ msgstr ""
|
|||
"Gère les demandes de traitement et de validation des URL à partir des "
|
||||
"requêtes POST entrantes."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Traite les demandes de recherche globales."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Gère la logique de l'achat en tant qu'entreprise sans enregistrement."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gère le téléchargement d'un bien numérique associé à une commande.\n"
|
||||
"Cette fonction tente de servir le fichier de ressource numérique situé dans "
|
||||
"le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une "
|
||||
"erreur HTTP 404 est générée pour indiquer que la ressource n'est pas "
|
||||
"disponible."
|
||||
"Cette fonction tente de servir le fichier de ressource numérique situé dans le répertoire de stockage du projet. Si le fichier n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid est obligatoire"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "le produit de la commande n'existe pas"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "la commande doit être payée avant le téléchargement du bien numérique"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Le produit de la commande n'a pas de produit"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon introuvable"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gère les demandes de favicon d'un site web.\n"
|
||||
"Cette fonction tente de servir le fichier favicon situé dans le répertoire "
|
||||
"statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP "
|
||||
"404 est générée pour indiquer que la ressource n'est pas disponible."
|
||||
"Cette fonction tente de servir le fichier favicon situé dans le répertoire statique du projet. Si le fichier favicon n'est pas trouvé, une erreur HTTP 404 est générée pour indiquer que la ressource n'est pas disponible."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3310,11 +3313,16 @@ msgstr ""
|
|||
" d'index de l'interface d'administration de Django. Elle utilise la fonction"
|
||||
" `redirect` de Django pour gérer la redirection HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Renvoie la version actuelle d'eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Recettes et commandes (dernier %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Renvoie les variables personnalisées pour le tableau de bord."
|
||||
|
||||
|
|
@ -3336,9 +3344,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Représente un jeu de vues pour la gestion des objets AttributeGroup. Gère "
|
||||
"les opérations liées à l'AttributeGroup, notamment le filtrage, la "
|
||||
|
|
@ -3375,7 +3384,8 @@ msgstr ""
|
|||
" fonctionnalités pour lister, récupérer, créer, mettre à jour et supprimer "
|
||||
"des objets AttributeValue. Il s'intègre aux mécanismes de viewset du cadre "
|
||||
"REST de Django et utilise les sérialiseurs appropriés pour les différentes "
|
||||
"actions. Les capacités de filtrage sont fournies par le backend DjangoFilter."
|
||||
"actions. Les capacités de filtrage sont fournies par le backend "
|
||||
"DjangoFilter."
|
||||
|
||||
#: engine/core/viewsets.py:213
|
||||
msgid ""
|
||||
|
|
@ -3542,10 +3552,10 @@ msgid ""
|
|||
msgstr ""
|
||||
"Cette classe fournit une fonctionnalité de viewset pour la gestion des "
|
||||
"objets `Address`. La classe AddressViewSet permet d'effectuer des opérations"
|
||||
"CRUD, des filtrages et des actions personnalisées liées aux entités adresse. "
|
||||
"Elle inclut des comportements spécialisés pour différentes méthodes HTTP, "
|
||||
"des dérogations au sérialiseur et une gestion des autorisations basée sur le "
|
||||
"contexte de la demande."
|
||||
" CRUD, des filtrages et des actions personnalisées liées aux entités "
|
||||
"adresse. Elle inclut des comportements spécialisés pour différentes méthodes"
|
||||
" HTTP, des dérogations au sérialiseur et une gestion des autorisations basée"
|
||||
" sur le contexte de la demande."
|
||||
|
||||
#: engine/core/viewsets.py:1123
|
||||
#, python-brace-format
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -27,7 +27,8 @@ msgstr "פעיל"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr "אם מוגדר כ-false, אובייקט זה לא יהיה גלוי למשתמשים ללא ההרשאה הנדרשת."
|
||||
|
||||
#: engine/core/abstract.py:23 engine/core/choices.py:18
|
||||
|
|
@ -152,7 +153,8 @@ msgstr "נמסר"
|
|||
msgid "canceled"
|
||||
msgstr "בוטל"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "נכשל"
|
||||
|
||||
|
|
@ -265,7 +267,8 @@ msgid "rewrite an existing attribute group saving non-editables"
|
|||
msgstr "שכתוב קבוצת תכונות קיימת תוך שמירת תכונות שאינן ניתנות לעריכה"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"שכתוב שדות מסוימים בקבוצת תכונות קיימת תוך שמירת תכונות שאינן ניתנות לעריכה"
|
||||
|
||||
|
|
@ -314,7 +317,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "שכתוב ערך תכונה קיים תוך שמירת תכונות שאינן ניתנות לעריכה"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"שכתוב שדות מסוימים של ערך תכונה קיים תוך שמירת שדות שאינם ניתנים לעריכה"
|
||||
|
||||
|
|
@ -368,8 +372,8 @@ msgstr "למשתמשים שאינם אנשי צוות, מוצגות רק ההז
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"חיפוש תת-מחרוזת ללא הבחנה בין אותיות גדולות וקטנות ב-human_readable_id, "
|
||||
"order_products.product.name ו-order_products.product.partnumber"
|
||||
|
|
@ -408,8 +412,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"מיין לפי אחד מהפרמטרים הבאים: uuid, human_readable_id, user_email, user, "
|
||||
"status, created, modified, buy_time, random. הוסף קידומת '-' עבור מיון יורד "
|
||||
|
|
@ -511,7 +515,8 @@ msgstr "הסר מוצר מההזמנה, הכמויות לא ייספרו"
|
|||
msgid ""
|
||||
"removes a list of products from an order using the provided `product_uuid` "
|
||||
"and `attributes`"
|
||||
msgstr "מסיר רשימת מוצרים מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו."
|
||||
msgstr ""
|
||||
"מסיר רשימת מוצרים מהזמנה באמצעות `product_uuid` ו-`attributes` שסופקו."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:459
|
||||
msgid "list all wishlists (simple view)"
|
||||
|
|
@ -590,28 +595,15 @@ msgstr "מסיר מוצרים רבים מרשימת המשאלות באמצעו
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"סינון לפי זוגות שם/ערך של תכונה אחת או יותר. • **תחביר**: `attr_name=method-"
|
||||
"value[;attr2=method2-value2]…` • **שיטות** (ברירת המחדל היא `icontains` אם "
|
||||
"לא צוין): `iexact`, `exact`, `icontains`, `contains`, `isnull`, "
|
||||
"`startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, "
|
||||
"`lt`, `lte`, `gt`, `gte`, `in` • **הקלדת ערכים**: תחילה מתבצע ניסיון JSON "
|
||||
"(כך שניתן להעביר רשימות/מילונים), `true`/`false` עבור ערכי בוליאניים, מספרים "
|
||||
"שלמים, מספרים צפים; אחרת מטופל כמחרוזת. • **Base64**: קידומת עם `b64-` כדי "
|
||||
"לקודד את הערך הגולמי ב-base64 בטוח ל-URL. \n"
|
||||
"דוגמאות: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`"
|
||||
"סינון לפי זוגות שם/ערך של תכונה אחת או יותר. • **תחביר**: `attr_name=method-value[;attr2=method2-value2]…` • **שיטות** (ברירת המחדל היא `icontains` אם לא צוין): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` • **הקלדת ערכים**: תחילה מתבצע ניסיון JSON (כך שניתן להעביר רשימות/מילונים), `true`/`false` עבור ערכי בוליאניים, מספרים שלמים, מספרים צפים; אחרת מטופל כמחרוזת. • **Base64**: קידומת עם `b64-` כדי לקודד את הערך הגולמי ב-base64 בטוח ל-URL. \n"
|
||||
"דוגמאות: `color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, `b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569
|
||||
msgid "list all products (simple view)"
|
||||
|
|
@ -623,8 +615,7 @@ msgstr "(מדויק) UUID של המוצר"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"רשימה של שדות למיון, מופרדים בפסיקים. קידומת `-` למיון יורד. **מותר:** uuid,"
|
||||
|
|
@ -930,7 +921,8 @@ msgstr "שכתוב תגית מוצר קיימת תוך שמירת תוכן שא
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1266
|
||||
msgid "rewrite some fields of an existing product tag saving non-editables"
|
||||
msgstr "שכתוב שדות מסוימים בתגית מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה"
|
||||
msgstr ""
|
||||
"שכתוב שדות מסוימים בתגית מוצר קיימת תוך שמירת שדות שאינם ניתנים לעריכה"
|
||||
|
||||
#: engine/core/elasticsearch/__init__.py:122
|
||||
#: engine/core/elasticsearch/__init__.py:570
|
||||
|
|
@ -1080,7 +1072,7 @@ msgstr "נתונים במטמון"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "נתוני JSON שעברו קמלאיזציה מה-URL המבוקש"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "רק כתובות URL המתחילות ב-http(s):// מותרות"
|
||||
|
||||
|
|
@ -1164,8 +1156,8 @@ msgstr "קנה הזמנה"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr "אנא שלחו את התכונות כמחרוזת מעוצבת כך: attr1=value1,attr2=value2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
|
|
@ -1240,7 +1232,8 @@ msgid "which attributes and values can be used for filtering this category."
|
|||
msgstr "אילו תכונות וערכים ניתן להשתמש בהם לסינון קטגוריה זו."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr "מחירים מינימליים ומקסימליים עבור מוצרים בקטגוריה זו, אם זמינים."
|
||||
|
||||
#: engine/core/graphene/object_types.py:205
|
||||
|
|
@ -1703,7 +1696,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"מייצג אובייקט מותג במערכת. מחלקה זו מטפלת במידע ובתכונות הקשורים למותג, כולל"
|
||||
" שמו, לוגואים, תיאור, קטגוריות קשורות, סלוגן ייחודי וסדר עדיפות. היא מאפשרת "
|
||||
|
|
@ -1905,8 +1899,9 @@ msgid ""
|
|||
msgstr ""
|
||||
"מייצג תכונה במערכת. מחלקה זו משמשת להגדרת תכונות ולניהולן. תכונות הן נתונים "
|
||||
"הניתנים להתאמה אישית, שניתן לקשר לישויות אחרות. לתכונות יש קטגוריות, קבוצות,"
|
||||
"סוגי ערכים ושמות משויכים. המודל תומך בסוגים רבים של ערכים, כולל מחרוזת, מספר "
|
||||
"שלם, מספר צף, בוליאני, מערך ואובייקט. הדבר מאפשר בניית נתונים דינמית וגמישה."
|
||||
" סוגי ערכים ושמות משויכים. המודל תומך בסוגים רבים של ערכים, כולל מחרוזת, "
|
||||
"מספר שלם, מספר צף, בוליאני, מערך ואובייקט. הדבר מאפשר בניית נתונים דינמית "
|
||||
"וגמישה."
|
||||
|
||||
#: engine/core/models.py:733
|
||||
msgid "group of this attribute"
|
||||
|
|
@ -2132,20 +2127,21 @@ msgstr "לא פתור"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"מייצג ישות כתובת הכוללת פרטים על מיקום וקשרים עם משתמש. מספק פונקציונליות "
|
||||
"לאחסון נתונים גיאוגרפיים וכתובות, וכן אינטגרציה עם שירותי קידוד גיאוגרפי. "
|
||||
"מחלקה זו נועדה לאחסן מידע מפורט על כתובות, כולל רכיבים כגון רחוב, עיר, אזור,"
|
||||
" מדינה ומיקום גיאוגרפי (קו אורך וקו רוחב). היא תומכת באינטגרציה עם ממשקי API"
|
||||
"לקידוד גיאוגרפי, ומאפשרת אחסון של תגובות API גולמיות לעיבוד או בדיקה נוספים. "
|
||||
"הסוג גם מאפשר לקשר כתובת למשתמש, מה שמקל על טיפול בנתונים מותאמים אישית."
|
||||
" לקידוד גיאוגרפי, ומאפשרת אחסון של תגובות API גולמיות לעיבוד או בדיקה "
|
||||
"נוספים. הסוג גם מאפשר לקשר כתובת למשתמש, מה שמקל על טיפול בנתונים מותאמים "
|
||||
"אישית."
|
||||
|
||||
#: engine/core/models.py:1029
|
||||
msgid "address line for the customer"
|
||||
|
|
@ -2473,7 +2469,8 @@ msgid "feedback comments"
|
|||
msgstr "הערות משוב"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr "מתייחס למוצר הספציפי בהזמנה שעליה מתייחס משוב זה."
|
||||
|
||||
#: engine/core/models.py:1720
|
||||
|
|
@ -2665,8 +2662,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "אין פעילות של לקוחות ב-30 הימים האחרונים."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "מכירות יומיות (30 יום)"
|
||||
msgid "Daily sales"
|
||||
msgstr "מכירות יומיות"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2677,6 +2674,7 @@ msgid "Gross revenue"
|
|||
msgstr "הכנסות ברוטו"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "הזמנות"
|
||||
|
||||
|
|
@ -2684,6 +2682,10 @@ msgstr "הזמנות"
|
|||
msgid "Gross"
|
||||
msgstr "גרוס"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "לוח מחוונים"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "סקירת הכנסות"
|
||||
|
|
@ -2712,20 +2714,32 @@ msgid "No data"
|
|||
msgstr "בנתונים"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "הכנסה (ברוטו, 30 יום)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "הכנסות (נטו, 30 יום)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "החזרות (30 יום)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "הכנסות נטו"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "הזמנות מעובדות (30 יום)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "שיעור ההחזר"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "הוחזר"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "מלאי נמוך"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "אין פריטים במלאי נמוך."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2740,11 +2754,11 @@ msgid "Most wished product"
|
|||
msgstr "המוצר המבוקש ביותר"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "אין עדיין נתונים."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "המוצר הפופולרי ביותר"
|
||||
|
||||
|
|
@ -2780,10 +2794,6 @@ msgstr "אין מכירות בקטגוריה זו ב-30 הימים האחרונ
|
|||
msgid "Django site admin"
|
||||
msgstr "מנהל אתר Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "לוח מחוונים"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2813,8 +2823,7 @@ msgstr "שלום %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"תודה על הזמנתך #%(order.pk)s! אנו שמחים להודיע לך שהזמנתך נכנסה לעיבוד. להלן"
|
||||
|
|
@ -2919,8 +2928,7 @@ msgstr "תודה על שהייתכם איתנו! הענקנו לכם קוד קי
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr "תודה על הזמנתך! אנו שמחים לאשר את רכישתך. להלן פרטי הזמנתך:"
|
||||
|
||||
|
|
@ -2988,7 +2996,7 @@ msgstr "יש להגדיר את הפרמטר NOMINATIM_URL!"
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr "מידות התמונה לא יעלו על w{max_width} x h{max_height} פיקסלים!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -2996,7 +3004,7 @@ msgstr ""
|
|||
"מטפל בבקשה לאינדקס מפת האתר ומחזיר תגובה בפורמט XML. הוא מבטיח שהתגובה תכלול"
|
||||
" את כותרת סוג התוכן המתאימה ל-XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3005,101 +3013,102 @@ msgstr ""
|
|||
"מטפל בתגובה לתצוגה מפורטת של מפת אתר. פונקציה זו מעבדת את הבקשה, משיגה את "
|
||||
"התגובה המתאימה לפרטי מפת האתר, וקובעת את כותרת Content-Type עבור XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "מחזיר רשימה של שפות נתמכות והמידע המתאים להן."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "מחזיר את הפרמטרים של האתר כאובייקט JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
msgstr ""
|
||||
"מטפל בפעולות מטמון כגון קריאה והגדרת נתוני מטמון עם מפתח וזמן המתנה מוגדרים."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "מטפל בהגשת טפסי \"צור קשר\"."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
msgstr "מטפל בבקשות לעיבוד ואימות כתובות URL מבקשות POST נכנסות."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "מטפל בשאילתות חיפוש גלובליות."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "מטפל בהיגיון הרכישה כעסק ללא רישום."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"מטפל בהורדת נכס דיגיטלי הקשור להזמנה. פונקציה זו מנסה להציג את קובץ הנכס "
|
||||
"הדיגיטלי הנמצא בספריית האחסון של הפרויקט. אם הקובץ לא נמצא, מתקבלת שגיאת "
|
||||
"HTTP 404 המציינת שהמשאב אינו זמין."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid נדרש"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "המוצר שהוזמן אינו קיים"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "ניתן להוריד את הנכס הדיגיטלי פעם אחת בלבד"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "יש לשלם את ההזמנה לפני הורדת הנכס הדיגיטלי"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "למוצר ההזמנה אין מוצר"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "לא נמצא סמל מועדף"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"מטפל בבקשות לסמל המועדף של אתר אינטרנט. פונקציה זו מנסה להציג את קובץ הסמל "
|
||||
"המועדף הנמצא בספרייה הסטטית של הפרויקט. אם קובץ הסמל המועדף לא נמצא, מתקבלת "
|
||||
"שגיאת HTTP 404 המציינת שהמשאב אינו זמין."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
msgstr ""
|
||||
"מנתב את הבקשה לדף האינדקס של המנהל. הפונקציה מטפלת בבקשות HTTP נכנסות ומנתבת"
|
||||
"אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` של "
|
||||
"Django לטיפול בהפניה HTTP."
|
||||
" אותן לדף האינדקס של ממשק המנהל של Django. היא משתמשת בפונקציית `redirect` "
|
||||
"של Django לטיפול בהפניה HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "מחזיר את הגרסה הנוכחית של eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "הכנסות והזמנות (אחרון %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "מחזיר משתנים מותאמים אישית עבור לוח המחוונים."
|
||||
|
||||
|
|
@ -3112,16 +3121,17 @@ msgid ""
|
|||
"and rendering formats."
|
||||
msgstr ""
|
||||
"מגדיר קבוצת תצוגות לניהול פעולות הקשורות ל-Evibes. מחלקת EvibesViewSet יורשת"
|
||||
"מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות Evibes. "
|
||||
"היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה הנוכחית, "
|
||||
"הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד."
|
||||
" מ-ModelViewSet ומספקת פונקציונליות לטיפול בפעולות ובפעולות על ישויות "
|
||||
"Evibes. היא כוללת תמיכה במחלוקות סריאליזציה דינמיות המבוססות על הפעולה "
|
||||
"הנוכחית, הרשאות הניתנות להתאמה אישית ופורמטים של עיבוד."
|
||||
|
||||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"מייצג קבוצת תצוגות לניהול אובייקטי AttributeGroup. מטפל בפעולות הקשורות "
|
||||
"ל-AttributeGroup, כולל סינון, סידור סדרתי ואחזור נתונים. מחלקה זו היא חלק "
|
||||
|
|
@ -3220,8 +3230,8 @@ msgstr ""
|
|||
"ייצוג של קבוצת תצוגה המטפלת באובייקטי משוב. מחלקה זו מנהלת פעולות הקשורות "
|
||||
"לאובייקטי משוב, כולל רישום, סינון ואחזור פרטים. מטרת קבוצת תצוגה זו היא לספק"
|
||||
" סדרנים שונים לפעולות שונות וליישם טיפול מבוסס הרשאות באובייקטי משוב נגישים."
|
||||
"היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django לשאילתת "
|
||||
"נתונים."
|
||||
" היא מרחיבה את `EvibesViewSet` הבסיסי ומשתמשת במערכת הסינון של Django "
|
||||
"לשאילתת נתונים."
|
||||
|
||||
#: engine/core/viewsets.py:621
|
||||
msgid ""
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -1049,7 +1049,7 @@ msgstr ""
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2543,7 +2543,7 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
|
|
@ -2555,6 +2555,7 @@ msgid "Gross revenue"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2562,6 +2563,10 @@ msgstr ""
|
|||
msgid "Gross"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr ""
|
||||
|
|
@ -2590,19 +2595,31 @@ msgid "No data"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
|
|
@ -2618,11 +2635,11 @@ msgid "Most wished product"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2658,10 +2675,6 @@ msgstr ""
|
|||
msgid "Django site admin"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2863,53 +2876,53 @@ msgstr ""
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
"Content-Type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
|
|
@ -2917,31 +2930,31 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
|
|
@ -2949,18 +2962,23 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming "
|
||||
"HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -1049,7 +1049,7 @@ msgstr ""
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2543,7 +2543,7 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
|
|
@ -2555,6 +2555,7 @@ msgid "Gross revenue"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2562,6 +2563,10 @@ msgstr ""
|
|||
msgid "Gross"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr ""
|
||||
|
|
@ -2590,19 +2595,31 @@ msgid "No data"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
|
|
@ -2618,11 +2635,11 @@ msgid "Most wished product"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2658,10 +2675,6 @@ msgstr ""
|
|||
msgid "Django site admin"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2863,53 +2876,53 @@ msgstr ""
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
"Content-Type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
|
|
@ -2917,31 +2930,31 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
|
|
@ -2949,18 +2962,23 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming "
|
||||
"HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -19,7 +19,8 @@ msgstr "ID unik"
|
|||
|
||||
#: engine/core/abstract.py:13
|
||||
msgid "unique id is used to surely identify any database object"
|
||||
msgstr "ID unik digunakan untuk mengidentifikasi objek basis data secara pasti"
|
||||
msgstr ""
|
||||
"ID unik digunakan untuk mengidentifikasi objek basis data secara pasti"
|
||||
|
||||
#: engine/core/abstract.py:20
|
||||
msgid "is active"
|
||||
|
|
@ -27,7 +28,8 @@ msgstr "Aktif"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Jika diset ke false, objek ini tidak dapat dilihat oleh pengguna tanpa izin "
|
||||
"yang diperlukan"
|
||||
|
|
@ -154,7 +156,8 @@ msgstr "Disampaikan."
|
|||
msgid "canceled"
|
||||
msgstr "Dibatalkan"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Gagal"
|
||||
|
||||
|
|
@ -205,8 +208,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Terapkan hanya kunci untuk membaca data yang diizinkan dari cache.\n"
|
||||
"Menerapkan kunci, data, dan batas waktu dengan autentikasi untuk menulis "
|
||||
"data ke cache."
|
||||
"Menerapkan kunci, data, dan batas waktu dengan autentikasi untuk menulis data ke cache."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -272,7 +274,8 @@ msgstr ""
|
|||
"dapat diedit"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Menulis ulang beberapa bidang dari grup atribut yang sudah ada sehingga "
|
||||
"tidak dapat diedit"
|
||||
|
|
@ -328,7 +331,8 @@ msgstr ""
|
|||
"dapat diedit"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Menulis ulang beberapa bidang dari nilai atribut yang sudah ada sehingga "
|
||||
"tidak dapat diedit"
|
||||
|
|
@ -388,8 +392,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Pencarian substring yang tidak peka huruf besar/kecil di human_readable_id, "
|
||||
"order_produk.product.name, dan order_produk.product.partnumber"
|
||||
|
|
@ -413,7 +417,8 @@ msgstr "Filter berdasarkan ID pesanan yang dapat dibaca manusia"
|
|||
#: engine/core/docs/drf/viewsets.py:308
|
||||
msgid "Filter by user's email (case-insensitive exact match)"
|
||||
msgstr ""
|
||||
"Filter berdasarkan email pengguna (pencocokan persis tanpa huruf besar-kecil)"
|
||||
"Filter berdasarkan email pengguna (pencocokan persis tanpa huruf besar-"
|
||||
"kecil)"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:313
|
||||
msgid "Filter by user's UUID"
|
||||
|
|
@ -428,8 +433,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Urutkan berdasarkan salah satu dari: uuid, human_readable_id, user_email, "
|
||||
"user, status, created, modified, buy_time, random. Awalan dengan '-' untuk "
|
||||
|
|
@ -638,31 +643,20 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Memfilter berdasarkan satu atau beberapa pasangan nama/nilai atribut. \n"
|
||||
"- **Sintaks**: `attr_name = metode-nilai[;attr2 = metode2-nilai2]...`\n"
|
||||
"- **Metode** (default ke `icontains` jika dihilangkan): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- Pengetikan nilai**: JSON dicoba terlebih dahulu (sehingga Anda dapat "
|
||||
"mengoper daftar/diktat), `true`/`false` untuk boolean, bilangan bulat, "
|
||||
"float; jika tidak, maka akan diperlakukan sebagai string. \n"
|
||||
"- **Base64**: awalan dengan `b64-` untuk menyandikan base64 yang aman bagi "
|
||||
"URL untuk menyandikan nilai mentah. \n"
|
||||
"- **Metode** (default ke `icontains` jika dihilangkan): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- Pengetikan nilai**: JSON dicoba terlebih dahulu (sehingga Anda dapat mengoper daftar/diktat), `true`/`false` untuk boolean, bilangan bulat, float; jika tidak, maka akan diperlakukan sebagai string. \n"
|
||||
"- **Base64**: awalan dengan `b64-` untuk menyandikan base64 yang aman bagi URL untuk menyandikan nilai mentah. \n"
|
||||
"Contoh: \n"
|
||||
"`warna=merah-pasti`, `ukuran=gt-10`, `fitur=dalam-[\"wifi\", "
|
||||
"\"bluetooth\"]`,\n"
|
||||
"`warna=merah-pasti`, `ukuran=gt-10`, `fitur=dalam-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description = berisi-aGVhdC1jb2xk`"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:568 engine/core/docs/drf/viewsets.py:569
|
||||
|
|
@ -675,14 +669,11 @@ msgstr "UUID Produk (persis)"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Daftar bidang yang dipisahkan koma untuk mengurutkan. Awalan dengan `-` "
|
||||
"untuk mengurutkan. \n"
|
||||
"**Diizinkan:** uuid, peringkat, nama, siput, dibuat, dimodifikasi, harga, "
|
||||
"acak"
|
||||
"Daftar bidang yang dipisahkan koma untuk mengurutkan. Awalan dengan `-` untuk mengurutkan. \n"
|
||||
"**Diizinkan:** uuid, peringkat, nama, siput, dibuat, dimodifikasi, harga, acak"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
msgid "retrieve a single product (detailed view)"
|
||||
|
|
@ -757,7 +748,8 @@ msgstr "Masukan alamat pelengkapan otomatis"
|
|||
#: engine/core/docs/drf/viewsets.py:794
|
||||
msgid "raw data query string, please append with data from geo-IP endpoint"
|
||||
msgstr ""
|
||||
"String kueri data mentah, harap tambahkan dengan data dari titik akhir geo-IP"
|
||||
"String kueri data mentah, harap tambahkan dengan data dari titik akhir geo-"
|
||||
"IP"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:800
|
||||
msgid "limit the results amount, 1 < limit < 10, default: 5"
|
||||
|
|
@ -1165,7 +1157,7 @@ msgstr "Data yang di-cache"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Data JSON yang di-camel dari URL yang diminta"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Hanya URL yang dimulai dengan http(s):// yang diperbolehkan"
|
||||
|
||||
|
|
@ -1250,8 +1242,8 @@ msgstr "Beli pesanan"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Kirimkan atribut dalam bentuk string seperti attr1 = nilai1, attr2 = nilai2"
|
||||
|
||||
|
|
@ -1328,7 +1320,8 @@ msgstr ""
|
|||
"Atribut dan nilai mana yang dapat digunakan untuk memfilter kategori ini."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Harga minimum dan maksimum untuk produk dalam kategori ini, jika tersedia."
|
||||
|
||||
|
|
@ -1541,7 +1534,8 @@ msgstr "Nomor Telepon Perusahaan"
|
|||
#: engine/core/graphene/object_types.py:680
|
||||
msgid "email from, sometimes it must be used instead of host user value"
|
||||
msgstr ""
|
||||
"'email from', terkadang harus digunakan sebagai pengganti nilai pengguna host"
|
||||
"'email from', terkadang harus digunakan sebagai pengganti nilai pengguna "
|
||||
"host"
|
||||
|
||||
#: engine/core/graphene/object_types.py:681
|
||||
msgid "email host user"
|
||||
|
|
@ -1603,8 +1597,8 @@ msgstr ""
|
|||
"Mewakili sekelompok atribut, yang dapat berupa hirarki. Kelas ini digunakan "
|
||||
"untuk mengelola dan mengatur grup atribut. Sebuah grup atribut dapat "
|
||||
"memiliki grup induk, membentuk struktur hirarki. Hal ini dapat berguna untuk"
|
||||
"mengkategorikan dan mengelola atribut secara lebih efektif dalam sistem yang "
|
||||
"kompleks."
|
||||
" mengkategorikan dan mengelola atribut secara lebih efektif dalam sistem "
|
||||
"yang kompleks."
|
||||
|
||||
#: engine/core/models.py:91
|
||||
msgid "parent of this group"
|
||||
|
|
@ -1752,8 +1746,8 @@ msgstr ""
|
|||
"Merupakan entitas kategori untuk mengatur dan mengelompokkan item terkait "
|
||||
"dalam struktur hierarki. Kategori dapat memiliki hubungan hierarkis dengan "
|
||||
"kategori lain, yang mendukung hubungan induk-anak. Kelas ini mencakup bidang"
|
||||
"untuk metadata dan representasi visual, yang berfungsi sebagai fondasi untuk "
|
||||
"fitur-fitur terkait kategori. Kelas ini biasanya digunakan untuk "
|
||||
" untuk metadata dan representasi visual, yang berfungsi sebagai fondasi "
|
||||
"untuk fitur-fitur terkait kategori. Kelas ini biasanya digunakan untuk "
|
||||
"mendefinisikan dan mengelola kategori produk atau pengelompokan serupa "
|
||||
"lainnya dalam aplikasi, yang memungkinkan pengguna atau administrator "
|
||||
"menentukan nama, deskripsi, dan hierarki kategori, serta menetapkan atribut "
|
||||
|
|
@ -1808,12 +1802,13 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Mewakili objek Merek dalam sistem. Kelas ini menangani informasi dan atribut"
|
||||
"yang terkait dengan merek, termasuk nama, logo, deskripsi, kategori terkait, "
|
||||
"siput unik, dan urutan prioritas. Kelas ini memungkinkan pengaturan dan "
|
||||
"representasi data yang terkait dengan merek di dalam aplikasi."
|
||||
" yang terkait dengan merek, termasuk nama, logo, deskripsi, kategori "
|
||||
"terkait, siput unik, dan urutan prioritas. Kelas ini memungkinkan pengaturan"
|
||||
" dan representasi data yang terkait dengan merek di dalam aplikasi."
|
||||
|
||||
#: engine/core/models.py:448
|
||||
msgid "name of this brand"
|
||||
|
|
@ -2255,13 +2250,13 @@ msgstr "Belum terselesaikan"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Mewakili entitas alamat yang mencakup detail lokasi dan asosiasi dengan "
|
||||
"pengguna. Menyediakan fungsionalitas untuk penyimpanan data geografis dan "
|
||||
|
|
@ -2619,7 +2614,8 @@ msgid "feedback comments"
|
|||
msgstr "Komentar umpan balik"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr "Merujuk ke produk tertentu sesuai dengan urutan umpan balik ini"
|
||||
|
||||
#: engine/core/models.py:1720
|
||||
|
|
@ -2820,8 +2816,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Tidak ada aktivitas nasabah dalam 30 hari terakhir."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Penjualan harian (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Penjualan harian"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2832,6 +2828,7 @@ msgid "Gross revenue"
|
|||
msgstr "Pendapatan kotor"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Pesanan"
|
||||
|
||||
|
|
@ -2839,6 +2836,10 @@ msgstr "Pesanan"
|
|||
msgid "Gross"
|
||||
msgstr "Kotor"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dasbor"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Ikhtisar pendapatan"
|
||||
|
|
@ -2867,20 +2868,32 @@ msgid "No data"
|
|||
msgstr "Tidak ada tanggal"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Pendapatan (kotor, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Pendapatan (bersih, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Pengembalian (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Pendapatan bersih"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Pesanan yang diproses (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Tingkat pengembalian dana"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Kembali"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Stok rendah"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Tidak ada stok barang yang rendah."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2895,11 +2908,11 @@ msgid "Most wished product"
|
|||
msgstr "Produk yang paling diharapkan"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Belum ada data."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Produk paling populer"
|
||||
|
||||
|
|
@ -2935,10 +2948,6 @@ msgstr "Tidak ada penjualan kategori dalam 30 hari terakhir."
|
|||
msgid "Django site admin"
|
||||
msgstr "Admin situs Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dasbor"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2968,8 +2977,7 @@ msgstr "Halo %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Terima kasih atas pesanan Anda #%(order.pk)s! Dengan senang hati kami "
|
||||
|
|
@ -3078,15 +3086,13 @@ msgid ""
|
|||
"Thank you for staying with us! We have granted you with a promocode\n"
|
||||
" for "
|
||||
msgstr ""
|
||||
"Terima kasih telah tinggal bersama kami! Kami telah memberikan Anda kode "
|
||||
"promo\n"
|
||||
"Terima kasih telah tinggal bersama kami! Kami telah memberikan Anda kode promo\n"
|
||||
" untuk"
|
||||
|
||||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Terima kasih atas pesanan Anda! Dengan senang hati kami mengkonfirmasi "
|
||||
|
|
@ -3159,7 +3165,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"Dimensi gambar tidak boleh melebihi w{max_width} x h{max_height} piksel!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3167,7 +3173,7 @@ msgstr ""
|
|||
"Menangani permintaan indeks peta situs dan mengembalikan respons XML. "
|
||||
"Memastikan respons menyertakan header jenis konten yang sesuai untuk XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3177,16 +3183,16 @@ msgstr ""
|
|||
"permintaan, mengambil respons detail peta situs yang sesuai, dan menetapkan "
|
||||
"header Jenis Konten untuk XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "Mengembalikan daftar bahasa yang didukung dan informasi terkait."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Mengembalikan parameter situs web sebagai objek JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3194,11 +3200,11 @@ msgstr ""
|
|||
"Menangani operasi cache seperti membaca dan mengatur data cache dengan kunci"
|
||||
" dan batas waktu tertentu."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Menangani pengiriman formulir `hubungi kami`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3206,63 +3212,55 @@ msgstr ""
|
|||
"Menangani permintaan untuk memproses dan memvalidasi URL dari permintaan "
|
||||
"POST yang masuk."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Menangani kueri penelusuran global."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Menangani logika pembelian sebagai bisnis tanpa registrasi."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Menangani pengunduhan aset digital yang terkait dengan pesanan.\n"
|
||||
"Fungsi ini mencoba untuk menyajikan file aset digital yang terletak di "
|
||||
"direktori penyimpanan proyek. Jika file tidak ditemukan, kesalahan HTTP 404 "
|
||||
"akan muncul untuk mengindikasikan bahwa sumber daya tidak tersedia."
|
||||
"Fungsi ini mencoba untuk menyajikan file aset digital yang terletak di direktori penyimpanan proyek. Jika file tidak ditemukan, kesalahan HTTP 404 akan muncul untuk mengindikasikan bahwa sumber daya tidak tersedia."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid diperlukan"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "produk pesanan tidak ada"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Anda hanya dapat mengunduh aset digital sekali saja"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "pesanan harus dibayar sebelum mengunduh aset digital"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Produk pesanan tidak memiliki produk"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon tidak ditemukan"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Menangani permintaan favicon dari sebuah situs web.\n"
|
||||
"Fungsi ini mencoba menyajikan file favicon yang terletak di direktori statis "
|
||||
"proyek. Jika file favicon tidak ditemukan, kesalahan HTTP 404 akan "
|
||||
"dimunculkan untuk mengindikasikan bahwa sumber daya tidak tersedia."
|
||||
"Fungsi ini mencoba menyajikan file favicon yang terletak di direktori statis proyek. Jika file favicon tidak ditemukan, kesalahan HTTP 404 akan dimunculkan untuk mengindikasikan bahwa sumber daya tidak tersedia."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3273,11 +3271,16 @@ msgstr ""
|
|||
"admin Django. Fungsi ini menggunakan fungsi `redirect` Django untuk "
|
||||
"menangani pengalihan HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Mengembalikan versi eVibes saat ini."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Pendapatan & Pesanan (terakhir %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Mengembalikan variabel khusus untuk Dasbor."
|
||||
|
||||
|
|
@ -3298,9 +3301,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Mewakili sebuah viewset untuk mengelola objek AttributeGroup. Menangani "
|
||||
"operasi yang terkait dengan AttributeGroup, termasuk pemfilteran, "
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "È attivo"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Se impostato a false, questo oggetto non può essere visto dagli utenti senza"
|
||||
" i necessari permessi."
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Consegnato"
|
|||
msgid "canceled"
|
||||
msgstr "Annullato"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Fallito"
|
||||
|
||||
|
|
@ -195,8 +197,8 @@ msgid ""
|
|||
"parameter both."
|
||||
msgstr ""
|
||||
"Schema OpenApi3 per questa API. Il formato può essere selezionato tramite la"
|
||||
"negoziazione dei contenuti. La lingua può essere selezionata sia con Accept-"
|
||||
"Language che con il parametro query."
|
||||
" negoziazione dei contenuti. La lingua può essere selezionata sia con "
|
||||
"Accept-Language che con il parametro query."
|
||||
|
||||
#: engine/core/docs/drf/views.py:44 engine/core/graphene/mutations.py:37
|
||||
msgid "cache I/O"
|
||||
|
|
@ -208,8 +210,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Applicare solo una chiave per leggere i dati consentiti dalla cache.\n"
|
||||
"Applicare chiave, dati e timeout con autenticazione per scrivere dati nella "
|
||||
"cache."
|
||||
"Applicare chiave, dati e timeout con autenticazione per scrivere dati nella cache."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -274,7 +275,8 @@ msgstr ""
|
|||
"Riscrivere un gruppo di attributi esistente salvando i non modificabili"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Riscrivere alcuni campi di un gruppo di attributi esistente salvando quelli "
|
||||
"non modificabili"
|
||||
|
|
@ -329,7 +331,8 @@ msgstr ""
|
|||
"modificabili"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Riscrivere alcuni campi di un valore di attributo esistente salvando i "
|
||||
"valori non modificabili"
|
||||
|
|
@ -389,12 +392,12 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Ricerca di sottostringhe senza distinzione di maiuscole e minuscole tra "
|
||||
"human_readable_id, order_products.product.name e order_products.product."
|
||||
"partnumber"
|
||||
"human_readable_id, order_products.product.name e "
|
||||
"order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -431,8 +434,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Ordinare per uno dei seguenti criteri: uuid, human_readable_id, user_email, "
|
||||
"user, status, created, modified, buy_time, random. Prefisso con '-' per la "
|
||||
|
|
@ -639,28 +642,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrare in base a una o più coppie nome/valore dell'attributo. \n"
|
||||
"- **Sintassi**: `nome_attraverso=metodo-valore[;attr2=metodo2-valore2]...`\n"
|
||||
"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare "
|
||||
"liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene "
|
||||
"trattato come stringa. \n"
|
||||
"- **Base64**: prefisso con `b64-` per codificare in base64 il valore "
|
||||
"grezzo. \n"
|
||||
"- **Metodi** (predefiniti a `icontains` se omessi): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- **Tipo di valore**: JSON viene tentato per primo (in modo da poter passare liste/dict), `true`/`false` per booleani, interi, float; altrimenti viene trattato come stringa. \n"
|
||||
"- **Base64**: prefisso con `b64-` per codificare in base64 il valore grezzo. \n"
|
||||
"Esempi: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -675,12 +668,10 @@ msgstr "(esatto) UUID del prodotto"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per "
|
||||
"l'ordinamento discendente. \n"
|
||||
"Elenco separato da virgole dei campi da ordinare. Prefisso con `-` per l'ordinamento discendente. \n"
|
||||
"**Consentito:** uuid, rating, nome, slug, creato, modificato, prezzo, casuale"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -702,7 +693,8 @@ msgstr "Creare un prodotto"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:628 engine/core/docs/drf/viewsets.py:629
|
||||
msgid "rewrite an existing product, preserving non-editable fields"
|
||||
msgstr "Riscrivere un prodotto esistente, preservando i campi non modificabili"
|
||||
msgstr ""
|
||||
"Riscrivere un prodotto esistente, preservando i campi non modificabili"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:647 engine/core/docs/drf/viewsets.py:648
|
||||
msgid ""
|
||||
|
|
@ -1157,7 +1149,7 @@ msgstr "Dati in cache"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Dati JSON camelizzati dall'URL richiesto"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Sono consentiti solo gli URL che iniziano con http(s)://"
|
||||
|
||||
|
|
@ -1191,7 +1183,8 @@ msgstr ""
|
|||
#: engine/core/graphene/mutations.py:236 engine/core/graphene/mutations.py:501
|
||||
#: engine/core/graphene/mutations.py:543 engine/core/viewsets.py:712
|
||||
msgid "wrong type came from order.buy() method: {type(instance)!s}"
|
||||
msgstr "Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}"
|
||||
msgstr ""
|
||||
"Il metodo order.buy() ha fornito un tipo sbagliato: {type(instance)!s}"
|
||||
|
||||
#: engine/core/graphene/mutations.py:245
|
||||
msgid "perform an action on a list of products in the order"
|
||||
|
|
@ -1242,11 +1235,11 @@ msgstr "Acquistare un ordine"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Inviare gli attributi come stringa formattata come attr1=valore1,"
|
||||
"attr2=valore2"
|
||||
"Inviare gli attributi come stringa formattata come "
|
||||
"attr1=valore1,attr2=valore2"
|
||||
|
||||
#: engine/core/graphene/mutations.py:549
|
||||
msgid "add or delete a feedback for orderproduct"
|
||||
|
|
@ -1322,7 +1315,8 @@ msgstr ""
|
|||
"categoria."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Prezzi minimi e massimi per i prodotti di questa categoria, se disponibili."
|
||||
|
||||
|
|
@ -1744,12 +1738,12 @@ msgid ""
|
|||
msgstr ""
|
||||
"Rappresenta un'entità di categoria per organizzare e raggruppare gli "
|
||||
"elementi correlati in una struttura gerarchica. Le categorie possono avere "
|
||||
"relazioni gerarchiche con altre categorie, supportando le relazioni genitore-"
|
||||
"figlio. La classe include campi per i metadati e per la rappresentazione "
|
||||
"visiva, che servono come base per le funzionalità legate alle categorie. "
|
||||
"Questa classe viene tipicamente utilizzata per definire e gestire le "
|
||||
"categorie di prodotti o altri raggruppamenti simili all'interno di "
|
||||
"un'applicazione, consentendo agli utenti o agli amministratori di "
|
||||
"relazioni gerarchiche con altre categorie, supportando le relazioni "
|
||||
"genitore-figlio. La classe include campi per i metadati e per la "
|
||||
"rappresentazione visiva, che servono come base per le funzionalità legate "
|
||||
"alle categorie. Questa classe viene tipicamente utilizzata per definire e "
|
||||
"gestire le categorie di prodotti o altri raggruppamenti simili all'interno "
|
||||
"di un'applicazione, consentendo agli utenti o agli amministratori di "
|
||||
"specificare il nome, la descrizione e la gerarchia delle categorie, nonché "
|
||||
"di assegnare attributi come immagini, tag o priorità."
|
||||
|
||||
|
|
@ -1803,7 +1797,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Rappresenta un oggetto Marchio nel sistema. Questa classe gestisce le "
|
||||
"informazioni e gli attributi relativi a un marchio, tra cui il nome, il "
|
||||
|
|
@ -2235,8 +2230,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Rappresenta un record documentario legato a un prodotto. Questa classe viene"
|
||||
" utilizzata per memorizzare informazioni sui documentari relativi a prodotti"
|
||||
"specifici, compresi i file caricati e i relativi metadati. Contiene metodi e "
|
||||
"proprietà per gestire il tipo di file e il percorso di archiviazione dei "
|
||||
" specifici, compresi i file caricati e i relativi metadati. Contiene metodi "
|
||||
"e proprietà per gestire il tipo di file e il percorso di archiviazione dei "
|
||||
"file documentari. Estende le funzionalità di mixin specifici e fornisce "
|
||||
"ulteriori caratteristiche personalizzate."
|
||||
|
||||
|
|
@ -2255,13 +2250,13 @@ msgstr "Non risolto"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Rappresenta un'entità indirizzo che include dettagli sulla posizione e "
|
||||
"associazioni con un utente. Fornisce funzionalità per la memorizzazione di "
|
||||
|
|
@ -2353,7 +2348,8 @@ msgstr "Identificatore del codice promozionale"
|
|||
|
||||
#: engine/core/models.py:1095
|
||||
msgid "fixed discount amount applied if percent is not used"
|
||||
msgstr "Importo fisso dello sconto applicato se non si utilizza la percentuale"
|
||||
msgstr ""
|
||||
"Importo fisso dello sconto applicato se non si utilizza la percentuale"
|
||||
|
||||
#: engine/core/models.py:1096
|
||||
msgid "fixed discount amount"
|
||||
|
|
@ -2441,7 +2437,8 @@ msgstr ""
|
|||
" le notifiche e le operazioni correlate. Gli ordini possono avere prodotti "
|
||||
"associati, possono essere applicate promozioni, impostati indirizzi e "
|
||||
"aggiornati i dettagli di spedizione o fatturazione. Allo stesso modo, la "
|
||||
"funzionalità supporta la gestione dei prodotti nel ciclo di vita dell'ordine."
|
||||
"funzionalità supporta la gestione dei prodotti nel ciclo di vita "
|
||||
"dell'ordine."
|
||||
|
||||
#: engine/core/models.py:1213
|
||||
msgid "the billing address used for this order"
|
||||
|
|
@ -2617,7 +2614,8 @@ msgid "feedback comments"
|
|||
msgstr "Commenti di feedback"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Riferisce il prodotto specifico in un ordine di cui si tratta il feedback."
|
||||
|
||||
|
|
@ -2819,8 +2817,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Nessuna attività del cliente negli ultimi 30 giorni."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Vendite giornaliere (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Vendite giornaliere"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2831,6 +2829,7 @@ msgid "Gross revenue"
|
|||
msgstr "Ricavo lordo"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Ordini"
|
||||
|
||||
|
|
@ -2838,6 +2837,10 @@ msgstr "Ordini"
|
|||
msgid "Gross"
|
||||
msgstr "Gross"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Cruscotto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Panoramica delle entrate"
|
||||
|
|
@ -2866,20 +2869,32 @@ msgid "No data"
|
|||
msgstr "Nessuna data"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Ricavi (lordi, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Ricavi (netti, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Restituzioni (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Ricavi netti"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Ordini evasi (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Tasso di rimborso"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Restituito"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Stock ridotto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Nessun articolo a basso stock."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2894,11 +2909,11 @@ msgid "Most wished product"
|
|||
msgstr "Il prodotto più desiderato"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Non ci sono ancora dati."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Il prodotto più popolare"
|
||||
|
||||
|
|
@ -2934,10 +2949,6 @@ msgstr "Nessuna vendita di categoria negli ultimi 30 giorni."
|
|||
msgid "Django site admin"
|
||||
msgstr "Amministratore del sito Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Cruscotto"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2967,8 +2978,7 @@ msgstr "Hello %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Grazie per il vostro ordine #%(order.pk)s! Siamo lieti di informarla che "
|
||||
|
|
@ -3083,8 +3093,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Grazie per il vostro ordine! Siamo lieti di confermare il suo acquisto. Di "
|
||||
|
|
@ -3159,7 +3168,7 @@ msgstr ""
|
|||
"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}"
|
||||
" pixel"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3168,7 +3177,7 @@ msgstr ""
|
|||
"XML. Assicura che la risposta includa l'intestazione del tipo di contenuto "
|
||||
"appropriato per XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3178,17 +3187,17 @@ msgstr ""
|
|||
"funzione elabora la richiesta, recupera la risposta dettagliata della "
|
||||
"sitemap e imposta l'intestazione Content-Type per XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Restituisce un elenco di lingue supportate e le informazioni corrispondenti."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Restituisce i parametri del sito web come oggetto JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3196,11 +3205,11 @@ msgstr ""
|
|||
"Gestisce le operazioni di cache, come la lettura e l'impostazione dei dati "
|
||||
"della cache con una chiave e un timeout specificati."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Gestisce l'invio del modulo `contatti`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3208,64 +3217,55 @@ msgstr ""
|
|||
"Gestisce le richieste di elaborazione e validazione degli URL dalle "
|
||||
"richieste POST in arrivo."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Gestisce le query di ricerca globali."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Gestisce la logica dell'acquisto come azienda senza registrazione."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gestisce il download di una risorsa digitale associata a un ordine.\n"
|
||||
"Questa funzione tenta di servire il file della risorsa digitale che si trova "
|
||||
"nella directory di archiviazione del progetto. Se il file non viene trovato, "
|
||||
"viene generato un errore HTTP 404 per indicare che la risorsa non è "
|
||||
"disponibile."
|
||||
"Questa funzione tenta di servire il file della risorsa digitale che si trova nella directory di archiviazione del progetto. Se il file non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid è obbligatorio"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "ordine prodotto non esistente"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "È possibile scaricare l'asset digitale una sola volta"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "l'ordine deve essere pagato prima di scaricare il bene digitale"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Il prodotto dell'ordine non ha un prodotto"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon non trovata"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gestisce le richieste per la favicon di un sito web.\n"
|
||||
"Questa funzione tenta di servire il file favicon situato nella cartella "
|
||||
"statica del progetto. Se il file favicon non viene trovato, viene generato "
|
||||
"un errore HTTP 404 per indicare che la risorsa non è disponibile."
|
||||
"Questa funzione tenta di servire il file favicon situato nella cartella statica del progetto. Se il file favicon non viene trovato, viene generato un errore HTTP 404 per indicare che la risorsa non è disponibile."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3276,11 +3276,16 @@ msgstr ""
|
|||
"indice dell'interfaccia di amministrazione di Django. Utilizza la funzione "
|
||||
"`redirect` di Django per gestire il reindirizzamento HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Restituisce la versione corrente di eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Entrate e ordini (ultimo %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Restituisce le variabili personalizzate per Dashboard."
|
||||
|
||||
|
|
@ -3301,9 +3306,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Rappresenta un insieme di viste per la gestione degli oggetti "
|
||||
"AttributeGroup. Gestisce le operazioni relative agli AttributeGroup, tra cui"
|
||||
|
|
@ -3456,7 +3462,8 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:879
|
||||
msgid "Manages operations related to Product images in the application. "
|
||||
msgstr ""
|
||||
"Gestisce le operazioni relative alle immagini dei prodotti nell'applicazione."
|
||||
"Gestisce le operazioni relative alle immagini dei prodotti "
|
||||
"nell'applicazione."
|
||||
|
||||
#: engine/core/viewsets.py:892
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because it is too large
Load diff
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\n"
|
||||
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
|
||||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||||
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
|
||||
|
|
@ -1049,7 +1049,7 @@ msgstr ""
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2543,7 +2543,7 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
|
|
@ -2555,6 +2555,7 @@ msgid "Gross revenue"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2562,6 +2563,10 @@ msgstr ""
|
|||
msgid "Gross"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr ""
|
||||
|
|
@ -2590,19 +2595,31 @@ msgid "No data"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
|
|
@ -2618,11 +2635,11 @@ msgid "Most wished product"
|
|||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2658,10 +2675,6 @@ msgstr ""
|
|||
msgid "Django site admin"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2863,53 +2876,53 @@ msgstr ""
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
"Content-Type header for XML."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
|
|
@ -2917,31 +2930,31 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
|
|
@ -2949,18 +2962,23 @@ msgid ""
|
|||
"error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming "
|
||||
"HTTP requests and redirects them to the Django admin interface index page. "
|
||||
"It uses Django's `redirect` function for handling the HTTP redirection."
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr ""
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -27,7 +27,8 @@ msgstr "Is actief"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Als false is ingesteld, kan dit object niet worden gezien door gebruikers "
|
||||
"zonder de benodigde toestemming"
|
||||
|
|
@ -154,7 +155,8 @@ msgstr "Geleverd"
|
|||
msgid "canceled"
|
||||
msgstr "Geannuleerd"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Mislukt"
|
||||
|
||||
|
|
@ -206,8 +208,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Alleen een sleutel gebruiken om toegestane gegevens uit de cache te lezen.\n"
|
||||
"Sleutel, gegevens en time-out met verificatie toepassen om gegevens naar de "
|
||||
"cache te schrijven."
|
||||
"Sleutel, gegevens en time-out met verificatie toepassen om gegevens naar de cache te schrijven."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -273,7 +274,8 @@ msgstr ""
|
|||
"opslaan"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Enkele velden van een bestaande attribuutgroep herschrijven door niet-"
|
||||
"wijzigbare velden op te slaan"
|
||||
|
|
@ -328,7 +330,8 @@ msgstr ""
|
|||
"attributen worden opgeslagen"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Herschrijf sommige velden van een bestaande attribuutwaarde door niet-"
|
||||
"wijzigbare velden op te slaan"
|
||||
|
|
@ -374,7 +377,8 @@ msgstr "SEO Meta momentopname"
|
|||
#: engine/core/docs/drf/viewsets.py:253
|
||||
msgid "returns a snapshot of the category's SEO meta data"
|
||||
msgstr ""
|
||||
"Geeft als resultaat een momentopname van de SEO-metagegevens van de categorie"
|
||||
"Geeft als resultaat een momentopname van de SEO-metagegevens van de "
|
||||
"categorie"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:274
|
||||
msgid "list all orders (simple view)"
|
||||
|
|
@ -383,15 +387,16 @@ msgstr "Alle categorieën weergeven (eenvoudige weergave)"
|
|||
#: engine/core/docs/drf/viewsets.py:275
|
||||
msgid "for non-staff users, only their own orders are returned."
|
||||
msgstr ""
|
||||
"Voor niet-personeelsleden worden alleen hun eigen bestellingen geretourneerd."
|
||||
"Voor niet-personeelsleden worden alleen hun eigen bestellingen "
|
||||
"geretourneerd."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Hoofdlettergevoelig substring zoeken in human_readable_id, order_products."
|
||||
"product.name en order_products.product.partnumber"
|
||||
"Hoofdlettergevoelig substring zoeken in human_readable_id, "
|
||||
"order_products.product.name en order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -425,8 +430,8 @@ msgstr "Filter op bestelstatus (hoofdlettergevoelige substringmatch)"
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Sorteer op een van: uuid, human_readable_id, user_email, gebruiker, status, "
|
||||
"gemaakt, gewijzigd, buy_time, willekeurig. Voorvoegsel met '-' voor aflopend"
|
||||
|
|
@ -491,7 +496,8 @@ msgstr "een bestelling kopen zonder een account aan te maken"
|
|||
#: engine/core/docs/drf/viewsets.py:409
|
||||
msgid "finalizes the order purchase for a non-registered user."
|
||||
msgstr ""
|
||||
"Rondt de aankoop van de bestelling af voor een niet-geregistreerde gebruiker."
|
||||
"Rondt de aankoop van de bestelling af voor een niet-geregistreerde "
|
||||
"gebruiker."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:420
|
||||
msgid "add product to order"
|
||||
|
|
@ -635,28 +641,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filter op een of meer attribuutnaam-/waardeparen. \n"
|
||||
"- **Syntaxis**: `attr_name=methode-waarde[;attr2=methode2-waarde2]...`\n"
|
||||
"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, "
|
||||
"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, "
|
||||
"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt "
|
||||
"doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld "
|
||||
"als string. \n"
|
||||
"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe "
|
||||
"waarde. \n"
|
||||
"- **Methodes** (standaard op `icontains` indien weggelaten): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- Waarde typen**: JSON wordt eerst geprobeerd (zodat je lijsten/dicten kunt doorgeven), `true`/`false` voor booleans, integers, floats; anders behandeld als string. \n"
|
||||
"- **Base64**: prefix met `b64-` om URL-veilige base64-encodering van de ruwe waarde. \n"
|
||||
"Voorbeelden: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`."
|
||||
|
|
@ -671,14 +667,11 @@ msgstr "(exacte) UUID van product"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met "
|
||||
"`-` voor aflopend. \n"
|
||||
"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, "
|
||||
"willekeurig"
|
||||
"Door komma's gescheiden lijst van velden om op te sorteren. Voorvoegsel met `-` voor aflopend. \n"
|
||||
"**Toegestaan:** uuid, beoordeling, naam, slug, gemaakt, gewijzigd, prijs, willekeurig"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
msgid "retrieve a single product (detailed view)"
|
||||
|
|
@ -794,7 +787,8 @@ msgstr "alle order-productrelaties weergeven (eenvoudige weergave)"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:871
|
||||
msgid "retrieve a single order–product relation (detailed view)"
|
||||
msgstr "een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)"
|
||||
msgstr ""
|
||||
"een enkele bestelling-productrelatie ophalen (gedetailleerde weergave)"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:881
|
||||
msgid "create a new order–product relation"
|
||||
|
|
@ -1158,7 +1152,7 @@ msgstr "Gecachte gegevens"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Camelized JSON-gegevens van de opgevraagde URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Alleen URL's die beginnen met http(s):// zijn toegestaan"
|
||||
|
||||
|
|
@ -1242,8 +1236,8 @@ msgstr "Een bestelling kopen"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Stuur de attributen als de string opgemaakt als attr1=waarde1,attr2=waarde2"
|
||||
|
||||
|
|
@ -1321,7 +1315,8 @@ msgstr ""
|
|||
"filteren."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimale en maximale prijzen voor producten in deze categorie, indien "
|
||||
"beschikbaar."
|
||||
|
|
@ -1804,7 +1799,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Vertegenwoordigt een merkobject in het systeem. Deze klasse behandelt "
|
||||
"informatie en attributen met betrekking tot een merk, inclusief de naam, "
|
||||
|
|
@ -2013,8 +2009,8 @@ msgid ""
|
|||
"for dynamic and flexible data structuring."
|
||||
msgstr ""
|
||||
"Vertegenwoordigt een attribuut in het systeem. Deze klasse wordt gebruikt om"
|
||||
"attributen te definiëren en te beheren. Dit zijn aanpasbare stukjes data die "
|
||||
"kunnen worden geassocieerd met andere entiteiten. Attributen hebben "
|
||||
" attributen te definiëren en te beheren. Dit zijn aanpasbare stukjes data "
|
||||
"die kunnen worden geassocieerd met andere entiteiten. Attributen hebben "
|
||||
"geassocieerde categorieën, groepen, waardetypes en namen. Het model "
|
||||
"ondersteunt meerdere typen waarden, waaronder string, integer, float, "
|
||||
"boolean, array en object. Dit maakt dynamische en flexibele "
|
||||
|
|
@ -2259,13 +2255,13 @@ msgstr "Onopgelost"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Vertegenwoordigt een adresentiteit met locatiegegevens en associaties met "
|
||||
"een gebruiker. Biedt functionaliteit voor het opslaan van geografische en "
|
||||
|
|
@ -2393,7 +2389,8 @@ msgstr "Begin geldigheidsduur"
|
|||
#: engine/core/models.py:1120
|
||||
msgid "timestamp when the promocode was used, blank if not used yet"
|
||||
msgstr ""
|
||||
"Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet gebruikt"
|
||||
"Tijdstempel wanneer de promocode werd gebruikt, leeg indien nog niet "
|
||||
"gebruikt"
|
||||
|
||||
#: engine/core/models.py:1121
|
||||
msgid "usage timestamp"
|
||||
|
|
@ -2598,7 +2595,8 @@ msgstr ""
|
|||
msgid ""
|
||||
"invalid payment method: {payment_method} from {available_payment_methods}"
|
||||
msgstr ""
|
||||
"Ongeldige betalingsmethode: {payment_method} van {available_payment_methods}!"
|
||||
"Ongeldige betalingsmethode: {payment_method} van "
|
||||
"{available_payment_methods}!"
|
||||
|
||||
#: engine/core/models.py:1699
|
||||
msgid ""
|
||||
|
|
@ -2625,7 +2623,8 @@ msgid "feedback comments"
|
|||
msgstr "Reacties"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Verwijst naar het specifieke product in een bestelling waar deze feedback "
|
||||
"over gaat"
|
||||
|
|
@ -2829,8 +2828,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Geen klantenactiviteit in de afgelopen 30 dagen."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Dagelijkse verkoop (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Dagelijkse verkoop"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2841,6 +2840,7 @@ msgid "Gross revenue"
|
|||
msgstr "Bruto-omzet"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Bestellingen"
|
||||
|
||||
|
|
@ -2848,6 +2848,10 @@ msgstr "Bestellingen"
|
|||
msgid "Gross"
|
||||
msgstr "Bruto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Overzicht inkomsten"
|
||||
|
|
@ -2876,20 +2880,32 @@ msgid "No data"
|
|||
msgstr "Geen datum"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Inkomsten (bruto, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Inkomsten (netto, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Retourzendingen (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Netto-inkomsten"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Verwerkte orders (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Restitutie"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Geretourneerd"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Lage voorraad"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Geen artikelen met weinig voorraad."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2904,11 +2920,11 @@ msgid "Most wished product"
|
|||
msgstr "Meest gewenste product"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Nog geen gegevens."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Populairste product"
|
||||
|
||||
|
|
@ -2944,10 +2960,6 @@ msgstr "Geen categorieverkopen in de afgelopen 30 dagen."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django website beheerder"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashboard"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2977,8 +2989,7 @@ msgstr "Hallo %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Hartelijk dank voor uw bestelling #%(order.pk)s! We zijn blij om u te "
|
||||
|
|
@ -3093,8 +3104,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Bedankt voor uw bestelling! We zijn blij om uw aankoop te bevestigen. "
|
||||
|
|
@ -3131,7 +3141,8 @@ msgstr "Zowel gegevens als time-out zijn vereist"
|
|||
|
||||
#: engine/core/utils/caching.py:46
|
||||
msgid "invalid timeout value, it must be between 0 and 216000 seconds"
|
||||
msgstr "Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen"
|
||||
msgstr ""
|
||||
"Ongeldige time-outwaarde, deze moet tussen 0 en 216000 seconden liggen"
|
||||
|
||||
#: engine/core/utils/emailing.py:27
|
||||
#, python-brace-format
|
||||
|
|
@ -3168,7 +3179,7 @@ msgstr ""
|
|||
"Afbeeldingsafmetingen mogen niet groter zijn dan w{max_width} x "
|
||||
"h{max_height} pixels"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3177,7 +3188,7 @@ msgstr ""
|
|||
"terug. Het zorgt ervoor dat het antwoord de juiste inhoudstype header voor "
|
||||
"XML bevat."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3187,16 +3198,16 @@ msgstr ""
|
|||
"verwerkt het verzoek, haalt het juiste sitemap detail antwoord op en stelt "
|
||||
"de Content-Type header in voor XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "Geeft een lijst met ondersteunde talen en de bijbehorende informatie."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Retourneert de parameters van de website als een JSON-object."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3204,11 +3215,11 @@ msgstr ""
|
|||
"Verwerkt cachebewerkingen zoals het lezen en instellen van cachegegevens met"
|
||||
" een opgegeven sleutel en time-out."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Handelt `contact met ons` formulier inzendingen af."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3216,68 +3227,57 @@ msgstr ""
|
|||
"Handelt verzoeken af voor het verwerken en valideren van URL's van inkomende"
|
||||
" POST-verzoeken."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Handelt globale zoekopdrachten af."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Behandelt de logica van kopen als bedrijf zonder registratie."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een "
|
||||
"bestelling.\n"
|
||||
"Deze functie probeert het digitale activabestand te serveren dat zich in de "
|
||||
"opslagmap van het project bevindt. Als het bestand niet wordt gevonden, "
|
||||
"wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet "
|
||||
"beschikbaar is."
|
||||
"Handelt het downloaden af van een digitaal actief dat is gekoppeld aan een bestelling.\n"
|
||||
"Deze functie probeert het digitale activabestand te serveren dat zich in de opslagmap van het project bevindt. Als het bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid is vereist"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "bestelproduct bestaat niet"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "U kunt het digitale goed maar één keer downloaden"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr ""
|
||||
"de bestelling moet worden betaald voordat het digitale actief kan worden "
|
||||
"gedownload"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Het bestelde product heeft geen product"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon niet gevonden"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Handelt verzoeken af voor de favicon van een website.\n"
|
||||
"Deze functie probeert het favicon-bestand te serveren dat zich in de "
|
||||
"statische map van het project bevindt. Als het favicon-bestand niet wordt "
|
||||
"gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron "
|
||||
"niet beschikbaar is."
|
||||
"Deze functie probeert het favicon-bestand te serveren dat zich in de statische map van het project bevindt. Als het favicon-bestand niet wordt gevonden, wordt er een HTTP 404-fout weergegeven om aan te geven dat de bron niet beschikbaar is."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3288,11 +3288,16 @@ msgstr ""
|
|||
"Django admin-interface. Het gebruikt Django's `redirect` functie voor het "
|
||||
"afhandelen van de HTTP-omleiding."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Geeft als resultaat de huidige versie van eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Inkomsten en orders (laatste %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Geeft aangepaste variabelen voor Dashboard."
|
||||
|
||||
|
|
@ -3313,9 +3318,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Vertegenwoordigt een viewset voor het beheren van AttributeGroup objecten. "
|
||||
"Verwerkt bewerkingen met betrekking tot AttributeGroup, inclusief filteren, "
|
||||
|
|
@ -3337,7 +3343,8 @@ msgstr ""
|
|||
"Attribuutgegevens. Deze klasse beheert het opvragen, filteren en seriëren "
|
||||
"van Attribuutobjecten, waardoor dynamische controle over de geretourneerde "
|
||||
"gegevens mogelijk is, zoals filteren op specifieke velden of het ophalen van"
|
||||
"gedetailleerde versus vereenvoudigde informatie afhankelijk van het verzoek."
|
||||
" gedetailleerde versus vereenvoudigde informatie afhankelijk van het "
|
||||
"verzoek."
|
||||
|
||||
#: engine/core/viewsets.py:194
|
||||
msgid ""
|
||||
|
|
@ -3460,8 +3467,8 @@ msgid ""
|
|||
"feedback on OrderProduct instances"
|
||||
msgstr ""
|
||||
"Biedt een viewset voor het beheren van OrderProduct-entiteiten. Deze viewset"
|
||||
"maakt CRUD-bewerkingen en aangepaste acties mogelijk die specifiek zijn voor "
|
||||
"het OrderProduct-model. Het omvat filteren, toestemmingscontroles en "
|
||||
" maakt CRUD-bewerkingen en aangepaste acties mogelijk die specifiek zijn "
|
||||
"voor het OrderProduct-model. Het omvat filteren, toestemmingscontroles en "
|
||||
"serializer-omschakeling op basis van de gevraagde actie. Bovendien biedt het"
|
||||
" een gedetailleerde actie voor het afhandelen van feedback op OrderProduct "
|
||||
"instanties"
|
||||
|
|
@ -3515,9 +3522,9 @@ msgid ""
|
|||
"different HTTP methods, serializer overrides, and permission handling based "
|
||||
"on the request context."
|
||||
msgstr ""
|
||||
"Deze klasse biedt viewsetfunctionaliteit voor het beheren van `Adres`-"
|
||||
"objecten. De klasse AddressViewSet maakt CRUD-bewerkingen, filteren en "
|
||||
"aangepaste acties met betrekking tot adresentiteiten mogelijk. Het bevat "
|
||||
"Deze klasse biedt viewsetfunctionaliteit voor het beheren van "
|
||||
"`Adres`-objecten. De klasse AddressViewSet maakt CRUD-bewerkingen, filteren "
|
||||
"en aangepaste acties met betrekking tot adresentiteiten mogelijk. Het bevat "
|
||||
"gespecialiseerde gedragingen voor verschillende HTTP methoden, serializer "
|
||||
"omzeilingen en toestemmingsafhandeling gebaseerd op de verzoekcontext."
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -28,7 +28,8 @@ msgstr "Er aktiv"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Hvis dette objektet er satt til false, kan det ikke ses av brukere uten "
|
||||
"nødvendig tillatelse"
|
||||
|
|
@ -155,7 +156,8 @@ msgstr "Leveres"
|
|||
msgid "canceled"
|
||||
msgstr "Avlyst"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Mislyktes"
|
||||
|
||||
|
|
@ -206,8 +208,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Bruk bare en nøkkel for å lese tillatte data fra hurtigbufferen.\n"
|
||||
"Bruk nøkkel, data og tidsavbrudd med autentisering for å skrive data til "
|
||||
"hurtigbufferen."
|
||||
"Bruk nøkkel, data og tidsavbrudd med autentisering for å skrive data til hurtigbufferen."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -272,7 +273,8 @@ msgstr ""
|
|||
"attributter"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Skriv om noen av feltene i en eksisterende attributtgruppe for å lagre ikke-"
|
||||
"redigerbare felt"
|
||||
|
|
@ -327,7 +329,8 @@ msgstr ""
|
|||
"attributter"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Skriv om noen av feltene i en eksisterende attributtverdi og lagre ikke-"
|
||||
"redigerbare felt"
|
||||
|
|
@ -384,8 +387,8 @@ msgstr "For ikke-ansatte brukere returneres bare deres egne bestillinger."
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Søk etter store og små bokstaver på tvers av human_readable_id, "
|
||||
"order_products.product.name og order_products.product.partnumber"
|
||||
|
|
@ -421,8 +424,8 @@ msgstr "Filtrer etter ordrestatus (skiller mellom store og små bokstaver)"
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Bestill etter en av: uuid, human_readable_id, user_email, user, status, "
|
||||
"created, modified, buy_time, random. Prefiks med '-' for synkende rekkefølge"
|
||||
|
|
@ -598,7 +601,8 @@ msgstr "Fjern et produkt fra ønskelisten"
|
|||
#: engine/core/docs/drf/viewsets.py:524
|
||||
msgid "removes a product from an wishlist using the provided `product_uuid`"
|
||||
msgstr ""
|
||||
"Fjerner et produkt fra en ønskeliste ved hjelp av den angitte `product_uuid`."
|
||||
"Fjerner et produkt fra en ønskeliste ved hjelp av den angitte "
|
||||
"`product_uuid`."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:532
|
||||
msgid "add many products to wishlist"
|
||||
|
|
@ -625,28 +629,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrer etter ett eller flere attributtnavn/verdipar. \n"
|
||||
"- **Syntaks**: `attr_name=metode-verdi[;attr2=metode2-verdi2]...`.\n"
|
||||
"- **Metoder** (standardinnstilling er `icontains` hvis utelatt): `iexact`, "
|
||||
"`exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, "
|
||||
"`endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- **Vertyping av verdi**: JSON forsøkes først (slik at du kan sende lister/"
|
||||
"dikter), `true`/`false` for booleans, heltall, floats; ellers behandlet som "
|
||||
"streng. \n"
|
||||
"- **Base64**: prefiks med `b64-` for URL-sikker base64-koding av "
|
||||
"råverdien. \n"
|
||||
"- **Metoder** (standardinnstilling er `icontains` hvis utelatt): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- **Vertyping av verdi**: JSON forsøkes først (slik at du kan sende lister/dikter), `true`/`false` for booleans, heltall, floats; ellers behandlet som streng. \n"
|
||||
"- **Base64**: prefiks med `b64-` for URL-sikker base64-koding av råverdien. \n"
|
||||
"Eksempler: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n"
|
||||
"`b64-beskrivelse=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -661,12 +655,10 @@ msgstr "(nøyaktig) Produkt UUID"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Kommaseparert liste over felt som skal sorteres etter. Prefiks med `-` for "
|
||||
"synkende sortering. \n"
|
||||
"Kommaseparert liste over felt som skal sorteres etter. Prefiks med `-` for synkende sortering. \n"
|
||||
"**Tillatt:** uuid, vurdering, navn, slug, opprettet, endret, pris, tilfeldig"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1141,7 +1133,7 @@ msgstr "Bufret data"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Camelized JSON-data fra den forespurte URL-en"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Bare nettadresser som begynner med http(s):// er tillatt"
|
||||
|
||||
|
|
@ -1226,8 +1218,8 @@ msgstr "Kjøp en ordre"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Send attributtene som en streng formatert som attr1=verdi1,attr2=verdi2"
|
||||
|
||||
|
|
@ -1301,10 +1293,12 @@ msgstr "Påslag i prosent"
|
|||
#: engine/core/graphene/object_types.py:199
|
||||
msgid "which attributes and values can be used for filtering this category."
|
||||
msgstr ""
|
||||
"Hvilke attributter og verdier som kan brukes til å filtrere denne kategorien."
|
||||
"Hvilke attributter og verdier som kan brukes til å filtrere denne "
|
||||
"kategorien."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimums- og maksimumspriser for produkter i denne kategorien, hvis "
|
||||
"tilgjengelig."
|
||||
|
|
@ -1516,8 +1510,7 @@ msgstr "Telefonnummer til selskapet"
|
|||
|
||||
#: engine/core/graphene/object_types.py:680
|
||||
msgid "email from, sometimes it must be used instead of host user value"
|
||||
msgstr ""
|
||||
"\"e-post fra\", noen ganger må den brukes i stedet for vertsbrukerverdien"
|
||||
msgstr "\"e-post fra\", noen ganger må den brukes i stedet for vertsbrukerverdien"
|
||||
|
||||
#: engine/core/graphene/object_types.py:681
|
||||
msgid "email host user"
|
||||
|
|
@ -1577,10 +1570,10 @@ msgid ""
|
|||
"categorizing and managing attributes more effectively in acomplex system."
|
||||
msgstr ""
|
||||
"Representerer en gruppe attributter, som kan være hierarkiske. Denne klassen"
|
||||
"brukes til å administrere og organisere attributtgrupper. En attributtgruppe "
|
||||
"kan ha en overordnet gruppe som danner en hierarkisk struktur. Dette kan "
|
||||
"være nyttig for å kategorisere og administrere attributter på en mer "
|
||||
"effektiv måte i et komplekst system."
|
||||
" brukes til å administrere og organisere attributtgrupper. En "
|
||||
"attributtgruppe kan ha en overordnet gruppe som danner en hierarkisk "
|
||||
"struktur. Dette kan være nyttig for å kategorisere og administrere "
|
||||
"attributter på en mer effektiv måte i et komplekst system."
|
||||
|
||||
#: engine/core/models.py:91
|
||||
msgid "parent of this group"
|
||||
|
|
@ -1784,7 +1777,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Representerer et merkevareobjekt i systemet. Denne klassen håndterer "
|
||||
"informasjon og attributter knyttet til et merke, inkludert navn, logoer, "
|
||||
|
|
@ -1842,8 +1836,8 @@ msgid ""
|
|||
"from various vendors."
|
||||
msgstr ""
|
||||
"Representerer lagerbeholdningen til et produkt som administreres i systemet."
|
||||
"Denne klassen gir informasjon om forholdet mellom leverandører, produkter og "
|
||||
"deres lagerinformasjon, samt lagerrelaterte egenskaper som pris, "
|
||||
" Denne klassen gir informasjon om forholdet mellom leverandører, produkter "
|
||||
"og deres lagerinformasjon, samt lagerrelaterte egenskaper som pris, "
|
||||
"innkjøpspris, antall, SKU og digitale eiendeler. Den er en del av "
|
||||
"lagerstyringssystemet for å muliggjøre sporing og evaluering av produkter "
|
||||
"som er tilgjengelige fra ulike leverandører."
|
||||
|
|
@ -2049,7 +2043,8 @@ msgstr "er filtrerbar"
|
|||
#: engine/core/models.py:759
|
||||
msgid "designates whether this attribute can be used for filtering or not"
|
||||
msgstr ""
|
||||
"Hvilke attributter og verdier som kan brukes til å filtrere denne kategorien."
|
||||
"Hvilke attributter og verdier som kan brukes til å filtrere denne "
|
||||
"kategorien."
|
||||
|
||||
#: engine/core/models.py:771 engine/core/models.py:789
|
||||
#: engine/core/templates/digital_order_delivered_email.html:134
|
||||
|
|
@ -2231,13 +2226,13 @@ msgstr "Uavklart"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Representerer en adresseenhet som inneholder stedsdetaljer og assosiasjoner "
|
||||
"til en bruker. Tilbyr funksjonalitet for lagring av geografiske data og "
|
||||
|
|
@ -2361,7 +2356,8 @@ msgstr "Start gyldighetstid"
|
|||
#: engine/core/models.py:1120
|
||||
msgid "timestamp when the promocode was used, blank if not used yet"
|
||||
msgstr ""
|
||||
"Tidsstempel for når kampanjekoden ble brukt, tomt hvis den ikke er brukt ennå"
|
||||
"Tidsstempel for når kampanjekoden ble brukt, tomt hvis den ikke er brukt "
|
||||
"ennå"
|
||||
|
||||
#: engine/core/models.py:1121
|
||||
msgid "usage timestamp"
|
||||
|
|
@ -2413,9 +2409,9 @@ msgstr ""
|
|||
"modellerer en bestilling i applikasjonen, inkludert ulike attributter som "
|
||||
"fakturerings- og leveringsinformasjon, status, tilknyttet bruker, varsler og"
|
||||
" relaterte operasjoner. Bestillinger kan ha tilknyttede produkter, kampanjer"
|
||||
"kan brukes, adresser kan angis, og frakt- eller faktureringsopplysninger kan "
|
||||
"oppdateres. På samme måte støtter funksjonaliteten håndtering av produktene "
|
||||
"i bestillingens livssyklus."
|
||||
" kan brukes, adresser kan angis, og frakt- eller faktureringsopplysninger "
|
||||
"kan oppdateres. På samme måte støtter funksjonaliteten håndtering av "
|
||||
"produktene i bestillingens livssyklus."
|
||||
|
||||
#: engine/core/models.py:1213
|
||||
msgid "the billing address used for this order"
|
||||
|
|
@ -2590,7 +2586,8 @@ msgid "feedback comments"
|
|||
msgstr "Tilbakemeldinger og kommentarer"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Refererer til det spesifikke produktet i en ordre som denne tilbakemeldingen"
|
||||
" handler om"
|
||||
|
|
@ -2793,8 +2790,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Ingen kundeaktivitet de siste 30 dagene."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Daglig salg (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Daglig salg"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2805,6 +2802,7 @@ msgid "Gross revenue"
|
|||
msgstr "Brutto inntekter"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Bestillinger"
|
||||
|
||||
|
|
@ -2812,6 +2810,10 @@ msgstr "Bestillinger"
|
|||
msgid "Gross"
|
||||
msgstr "Brutto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashbord"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Oversikt over inntekter"
|
||||
|
|
@ -2840,20 +2842,32 @@ msgid "No data"
|
|||
msgstr "Ingen dato"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Inntekter (brutto, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Inntekter (netto, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Returnerer (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Netto inntekter"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Behandlede bestillinger (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Refusjonsgrad"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Returneres"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Lav lagerbeholdning"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Ingen varer med lav lagerbeholdning."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2868,11 +2882,11 @@ msgid "Most wished product"
|
|||
msgstr "Mest ønskede produkt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Ingen data ennå."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Mest populære produkt"
|
||||
|
||||
|
|
@ -2908,10 +2922,6 @@ msgstr "Ingen kategorisalg de siste 30 dagene."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django site admin"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Dashbord"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2941,8 +2951,7 @@ msgstr "Hallo %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Takk for din bestilling #%(order.pk)s! Vi er glade for å informere deg om at"
|
||||
|
|
@ -3057,8 +3066,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Takk for bestillingen din! Vi er glade for å kunne bekrefte kjøpet ditt. "
|
||||
|
|
@ -3131,7 +3139,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"Bildedimensjonene bør ikke overstige b{max_width} x h{max_height} piksler!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3139,7 +3147,7 @@ msgstr ""
|
|||
"Håndterer forespørselen om områdekartindeksen og returnerer et XML-svar. Den"
|
||||
" sørger for at svaret inneholder riktig innholdstypeoverskrift for XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3149,17 +3157,17 @@ msgstr ""
|
|||
"behandler forespørselen, henter det aktuelle detaljsvaret for områdekartet "
|
||||
"og angir overskriften Content-Type for XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Returnerer en liste over språk som støttes, med tilhørende informasjon."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Returnerer nettstedets parametere som et JSON-objekt."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3167,11 +3175,11 @@ msgstr ""
|
|||
"Håndterer cache-operasjoner som lesing og innstilling av cachedata med en "
|
||||
"spesifisert nøkkel og tidsavbrudd."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Håndterer innsendinger av `kontakt oss`-skjemaer."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3179,64 +3187,55 @@ msgstr ""
|
|||
"Håndterer forespørsler om behandling og validering av URL-er fra innkommende"
|
||||
" POST-forespørsler."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Håndterer globale søk."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Håndterer logikken med å kjøpe som en bedrift uten registrering."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Håndterer nedlastingen av en digital ressurs som er knyttet til en "
|
||||
"bestilling.\n"
|
||||
"Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i "
|
||||
"lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP "
|
||||
"404-feil for å indikere at ressursen ikke er tilgjengelig."
|
||||
"Håndterer nedlastingen av en digital ressurs som er knyttet til en bestilling.\n"
|
||||
"Denne funksjonen forsøker å levere den digitale ressursfilen som ligger i lagringskatalogen til prosjektet. Hvis filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid er påkrevd"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "ordreproduktet eksisterer ikke"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Du kan bare laste ned den digitale ressursen én gang"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "bestillingen må betales før nedlasting av den digitale ressursen"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Ordreproduktet har ikke et produkt"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon ble ikke funnet"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Håndterer forespørsler om faviconet til et nettsted.\n"
|
||||
"Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske "
|
||||
"katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP "
|
||||
"404-feil for å indikere at ressursen ikke er tilgjengelig."
|
||||
"Denne funksjonen forsøker å vise favicon-filen som ligger i den statiske katalogen i prosjektet. Hvis favicon-filen ikke blir funnet, vises en HTTP 404-feil for å indikere at ressursen ikke er tilgjengelig."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3247,11 +3246,16 @@ msgstr ""
|
|||
"administrasjonsgrensesnittet. Den bruker Djangos `redirect`-funksjon for å "
|
||||
"håndtere HTTP-omdirigeringen."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Returnerer gjeldende versjon av eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Inntekter og bestillinger (siste %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Returnerer egendefinerte variabler for Dashboard."
|
||||
|
||||
|
|
@ -3272,9 +3276,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Representerer et visningssett for håndtering av AttributeGroup-objekter. "
|
||||
"Håndterer operasjoner knyttet til AttributeGroup, inkludert filtrering, "
|
||||
|
|
@ -3292,11 +3297,11 @@ msgid ""
|
|||
"depending on the request."
|
||||
msgstr ""
|
||||
"Håndterer operasjoner knyttet til Attribute-objekter i applikasjonen. Tilbyr"
|
||||
"et sett med API-endepunkter for interaksjon med attributtdata. Denne klassen "
|
||||
"håndterer spørring, filtrering og serialisering av Attribute-objekter, noe "
|
||||
"som gir dynamisk kontroll over dataene som returneres, for eksempel "
|
||||
"filtrering etter bestemte felt eller henting av detaljert versus forenklet "
|
||||
"informasjon avhengig av forespørselen."
|
||||
" et sett med API-endepunkter for interaksjon med attributtdata. Denne "
|
||||
"klassen håndterer spørring, filtrering og serialisering av Attribute-"
|
||||
"objekter, noe som gir dynamisk kontroll over dataene som returneres, for "
|
||||
"eksempel filtrering etter bestemte felt eller henting av detaljert versus "
|
||||
"forenklet informasjon avhengig av forespørselen."
|
||||
|
||||
#: engine/core/viewsets.py:194
|
||||
msgid ""
|
||||
|
|
@ -3417,8 +3422,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Tilbyr et visningssett for håndtering av OrderProduct-enheter. Dette "
|
||||
"visningssettet muliggjør CRUD-operasjoner og egendefinerte handlinger som er"
|
||||
"spesifikke for OrderProduct-modellen. Det inkluderer filtrering, kontroll av "
|
||||
"tillatelser og bytte av serializer basert på den forespurte handlingen. I "
|
||||
" spesifikke for OrderProduct-modellen. Det inkluderer filtrering, kontroll "
|
||||
"av tillatelser og bytte av serializer basert på den forespurte handlingen. I"
|
||||
" tillegg inneholder det en detaljert handling for håndtering av "
|
||||
"tilbakemeldinger på OrderProduct-instanser"
|
||||
|
||||
|
|
@ -3431,8 +3436,8 @@ msgid ""
|
|||
"Manages the retrieval and handling of PromoCode instances through various "
|
||||
"API actions."
|
||||
msgstr ""
|
||||
"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike API-"
|
||||
"handlinger."
|
||||
"Administrerer henting og håndtering av PromoCode-instanser gjennom ulike "
|
||||
"API-handlinger."
|
||||
|
||||
#: engine/core/viewsets.py:914
|
||||
msgid "Represents a view set for managing promotions. "
|
||||
|
|
@ -3468,11 +3473,11 @@ msgid ""
|
|||
"different HTTP methods, serializer overrides, and permission handling based "
|
||||
"on the request context."
|
||||
msgstr ""
|
||||
"Denne klassen tilbyr visningssettfunksjonalitet for håndtering av `Address`-"
|
||||
"objekter. AddressViewSet-klassen muliggjør CRUD-operasjoner, filtrering og "
|
||||
"egendefinerte handlinger knyttet til adresseenheter. Den inkluderer "
|
||||
"spesialisert atferd for ulike HTTP-metoder, overstyring av serializer og "
|
||||
"håndtering av tillatelser basert på forespørselskonteksten."
|
||||
"Denne klassen tilbyr visningssettfunksjonalitet for håndtering av "
|
||||
"`Address`-objekter. AddressViewSet-klassen muliggjør CRUD-operasjoner, "
|
||||
"filtrering og egendefinerte handlinger knyttet til adresseenheter. Den "
|
||||
"inkluderer spesialisert atferd for ulike HTTP-metoder, overstyring av "
|
||||
"serializer og håndtering av tillatelser basert på forespørselskonteksten."
|
||||
|
||||
#: engine/core/viewsets.py:1123
|
||||
#, python-brace-format
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Jest aktywny"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Jeśli ustawione na false, obiekt ten nie może być widoczny dla użytkowników "
|
||||
"bez wymaganych uprawnień."
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Dostarczone"
|
|||
msgid "canceled"
|
||||
msgstr "Anulowane"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Nie powiodło się"
|
||||
|
||||
|
|
@ -208,8 +210,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Zastosuj tylko klucz, aby odczytać dozwolone dane z pamięci podręcznej.\n"
|
||||
"Zastosuj klucz, dane i limit czasu z uwierzytelnianiem, aby zapisać dane w "
|
||||
"pamięci podręcznej."
|
||||
"Zastosuj klucz, dane i limit czasu z uwierzytelnianiem, aby zapisać dane w pamięci podręcznej."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -274,7 +275,8 @@ msgstr ""
|
|||
"nieedytowalnych"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Przepisanie niektórych pól istniejącej grupy atrybutów z zachowaniem "
|
||||
"atrybutów nieedytowalnych"
|
||||
|
|
@ -329,7 +331,8 @@ msgstr ""
|
|||
"nieedytowalnych"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Przepisz niektóre pola istniejącej wartości atrybutu, zapisując wartości "
|
||||
"nieedytowalne"
|
||||
|
|
@ -388,8 +391,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Wyszukiwanie podciągów z uwzględnieniem wielkości liter w human_readable_id,"
|
||||
" order_products.product.name i order_products.product.partnumber."
|
||||
|
|
@ -431,8 +434,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Kolejność według jednego z: uuid, human_readable_id, user_email, user, "
|
||||
"status, created, modified, buy_time, random. Prefiks z \"-\" dla malejącego "
|
||||
|
|
@ -444,7 +447,8 @@ msgstr "Pobieranie pojedynczej kategorii (widok szczegółowy)"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:341
|
||||
msgid "Order UUID or human-readable id"
|
||||
msgstr "Identyfikator UUID zamówienia lub identyfikator czytelny dla człowieka"
|
||||
msgstr ""
|
||||
"Identyfikator UUID zamówienia lub identyfikator czytelny dla człowieka"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:351
|
||||
msgid "create an order"
|
||||
|
|
@ -632,28 +636,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrowanie według jednej lub więcej par atrybut/wartość. \n"
|
||||
"- Składnia**: `attr_name=method-value[;attr2=method2-value2]...`\n"
|
||||
"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można "
|
||||
"przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w "
|
||||
"przeciwnym razie traktowane jako string. \n"
|
||||
"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania "
|
||||
"base64 surowej wartości. \n"
|
||||
"- **Metody** (domyślnie `icontains` jeśli pominięte): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- Wpisywanie wartości**: JSON jest próbowany jako pierwszy (więc można przekazywać listy/dykty), `true`/`false` dla booleans, integers, floats; w przeciwnym razie traktowane jako string. \n"
|
||||
"- Base64**: prefiks z `b64-` do bezpiecznego dla adresów URL kodowania base64 surowej wartości. \n"
|
||||
"Przykłady: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -668,12 +662,10 @@ msgstr "(dokładny) UUID produktu"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla "
|
||||
"sortowania malejącego. \n"
|
||||
"Rozdzielana przecinkami lista pól do posortowania. Prefiks z `-` dla sortowania malejącego. \n"
|
||||
"**Dozwolone:** uuid, rating, name, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1147,7 +1139,7 @@ msgstr "Dane w pamięci podręcznej"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Kamelizowane dane JSON z żądanego adresu URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Dozwolone są tylko adresy URL zaczynające się od http(s)://"
|
||||
|
||||
|
|
@ -1231,8 +1223,8 @@ msgstr "Kup zamówienie"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Prześlij atrybuty jako ciąg znaków sformatowany w następujący sposób: "
|
||||
"attr1=value1,attr2=value2"
|
||||
|
|
@ -1310,7 +1302,8 @@ msgstr ""
|
|||
"Które atrybuty i wartości mogą być używane do filtrowania tej kategorii."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minimalne i maksymalne ceny produktów w tej kategorii, jeśli są dostępne."
|
||||
|
||||
|
|
@ -1521,8 +1514,7 @@ msgstr "Numer telefonu firmy"
|
|||
|
||||
#: engine/core/graphene/object_types.py:680
|
||||
msgid "email from, sometimes it must be used instead of host user value"
|
||||
msgstr ""
|
||||
"\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta"
|
||||
msgstr "\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta"
|
||||
|
||||
#: engine/core/graphene/object_types.py:681
|
||||
msgid "email host user"
|
||||
|
|
@ -1789,7 +1781,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Reprezentuje obiekt marki w systemie. Ta klasa obsługuje informacje i "
|
||||
"atrybuty związane z marką, w tym jej nazwę, logo, opis, powiązane kategorie,"
|
||||
|
|
@ -2098,7 +2091,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/models.py:826
|
||||
msgid "provide alternative text for the image for accessibility"
|
||||
msgstr "Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu"
|
||||
msgstr ""
|
||||
"Zapewnienie alternatywnego tekstu dla obrazu w celu ułatwienia dostępu"
|
||||
|
||||
#: engine/core/models.py:827
|
||||
msgid "image alt text"
|
||||
|
|
@ -2235,13 +2229,13 @@ msgstr "Nierozwiązany"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Reprezentuje jednostkę adresu, która zawiera szczegóły lokalizacji i "
|
||||
"powiązania z użytkownikiem. Zapewnia funkcjonalność przechowywania danych "
|
||||
|
|
@ -2491,7 +2485,8 @@ msgstr "Zamówienie"
|
|||
|
||||
#: engine/core/models.py:1319
|
||||
msgid "a user must have only one pending order at a time"
|
||||
msgstr "Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!"
|
||||
msgstr ""
|
||||
"Użytkownik może mieć tylko jedno oczekujące zlecenie w danym momencie!"
|
||||
|
||||
#: engine/core/models.py:1351
|
||||
msgid "you cannot add products to an order that is not a pending one"
|
||||
|
|
@ -2600,7 +2595,8 @@ msgid "feedback comments"
|
|||
msgstr "Komentarze zwrotne"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Odnosi się do konkretnego produktu w zamówieniu, którego dotyczy ta "
|
||||
"informacja zwrotna."
|
||||
|
|
@ -2650,7 +2646,8 @@ msgstr "Cena zakupu w momencie zamówienia"
|
|||
#: engine/core/models.py:1763
|
||||
msgid "internal comments for admins about this ordered product"
|
||||
msgstr ""
|
||||
"Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego produktu"
|
||||
"Wewnętrzne komentarze dla administratorów dotyczące tego zamówionego "
|
||||
"produktu"
|
||||
|
||||
#: engine/core/models.py:1764
|
||||
msgid "internal comments"
|
||||
|
|
@ -2804,8 +2801,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Brak aktywności klienta w ciągu ostatnich 30 dni."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Dzienna sprzedaż (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Dzienna sprzedaż"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2816,6 +2813,7 @@ msgid "Gross revenue"
|
|||
msgstr "Przychód brutto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Zamówienia"
|
||||
|
||||
|
|
@ -2823,6 +2821,10 @@ msgstr "Zamówienia"
|
|||
msgid "Gross"
|
||||
msgstr "Brutto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Pulpit nawigacyjny"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Przegląd dochodów"
|
||||
|
|
@ -2851,20 +2853,32 @@ msgid "No data"
|
|||
msgstr "Brak daty"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Przychody (brutto, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Przychody (netto, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Zwroty (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Przychody netto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Przetworzone zamówienia (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Stopa zwrotu"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Zwrócony"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Niskie stany magazynowe"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Brak pozycji o niskim stanie magazynowym."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2879,11 +2893,11 @@ msgid "Most wished product"
|
|||
msgstr "Najbardziej pożądany produkt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Brak danych."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Najpopularniejszy produkt"
|
||||
|
||||
|
|
@ -2919,10 +2933,6 @@ msgstr "Brak sprzedaży kategorii w ciągu ostatnich 30 dni."
|
|||
msgid "Django site admin"
|
||||
msgstr "Administrator strony Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Pulpit nawigacyjny"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2952,8 +2962,7 @@ msgstr "Witaj %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Dziękujemy za zamówienie #%(order.pk)s! Z przyjemnością informujemy, że "
|
||||
|
|
@ -3068,8 +3077,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Dziękujemy za zamówienie! Z przyjemnością potwierdzamy zakup. Poniżej "
|
||||
|
|
@ -3144,7 +3152,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"Wymiary obrazu nie powinny przekraczać w{max_width} x h{max_height} pikseli."
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3152,7 +3160,7 @@ msgstr ""
|
|||
"Obsługuje żądanie indeksu mapy witryny i zwraca odpowiedź XML. Zapewnia, że "
|
||||
"odpowiedź zawiera odpowiedni nagłówek typu zawartości dla XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3162,16 +3170,16 @@ msgstr ""
|
|||
"przetwarza żądanie, pobiera odpowiednią szczegółową odpowiedź mapy witryny i"
|
||||
" ustawia nagłówek Content-Type dla XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "Zwraca listę obsługiwanych języków i odpowiadające im informacje."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Zwraca parametry strony internetowej jako obiekt JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3179,11 +3187,11 @@ msgstr ""
|
|||
"Obsługuje operacje pamięci podręcznej, takie jak odczytywanie i ustawianie "
|
||||
"danych pamięci podręcznej z określonym kluczem i limitem czasu."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Obsługuje zgłoszenia formularzy `kontaktuj się z nami`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3191,63 +3199,55 @@ msgstr ""
|
|||
"Obsługuje żądania przetwarzania i sprawdzania poprawności adresów URL z "
|
||||
"przychodzących żądań POST."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Obsługuje globalne zapytania wyszukiwania."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Obsługuje logikę zakupu jako firma bez rejestracji."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Obsługuje pobieranie zasobu cyfrowego powiązanego z zamówieniem.\n"
|
||||
"Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu "
|
||||
"przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest "
|
||||
"błąd HTTP 404 wskazujący, że zasób jest niedostępny."
|
||||
"Ta funkcja próbuje obsłużyć plik zasobu cyfrowego znajdujący się w katalogu przechowywania projektu. Jeśli plik nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "Order_product_uuid jest wymagany"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "zamówiony produkt nie istnieje"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Zasób cyfrowy można pobrać tylko raz"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "zamówienie musi zostać opłacone przed pobraniem zasobu cyfrowego"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Produkt zamówienia nie ma produktu"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "nie znaleziono favicon"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Obsługuje żądania favicon strony internetowej.\n"
|
||||
"Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu "
|
||||
"statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany "
|
||||
"jest błąd HTTP 404 wskazujący, że zasób jest niedostępny."
|
||||
"Ta funkcja próbuje obsłużyć plik favicon znajdujący się w katalogu statycznym projektu. Jeśli plik favicon nie zostanie znaleziony, zgłaszany jest błąd HTTP 404 wskazujący, że zasób jest niedostępny."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3258,11 +3258,16 @@ msgstr ""
|
|||
"administratora Django. Używa funkcji `redirect` Django do obsługi "
|
||||
"przekierowania HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Zwraca aktualną wersję aplikacji eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Przychody i zamówienia (ostatnie %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Zwraca zmienne niestandardowe dla Dashboard."
|
||||
|
||||
|
|
@ -3283,9 +3288,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Reprezentuje zestaw widoków do zarządzania obiektami AttributeGroup. "
|
||||
"Obsługuje operacje związane z AttributeGroup, w tym filtrowanie, "
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Está ativo"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Se definido como false, esse objeto não poderá ser visto por usuários sem a "
|
||||
"permissão necessária"
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Entregue"
|
|||
msgid "canceled"
|
||||
msgstr "Cancelado"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Falha"
|
||||
|
||||
|
|
@ -208,8 +210,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Aplicar somente uma chave para ler dados permitidos do cache.\n"
|
||||
"Aplicar chave, dados e tempo limite com autenticação para gravar dados no "
|
||||
"cache."
|
||||
"Aplicar chave, dados e tempo limite com autenticação para gravar dados no cache."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -273,7 +274,8 @@ msgid "rewrite an existing attribute group saving non-editables"
|
|||
msgstr "Reescrever um grupo de atributos existente salvando os não editáveis"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Reescreva alguns campos de um grupo de atributos existente salvando os não "
|
||||
"editáveis"
|
||||
|
|
@ -324,7 +326,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "Reescreva um valor de atributo existente salvando os não editáveis"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Reescreva alguns campos de um valor de atributo existente salvando os não "
|
||||
"editáveis"
|
||||
|
|
@ -381,12 +384,12 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Pesquisa de substring sem distinção entre maiúsculas e minúsculas em "
|
||||
"human_readable_id, order_products.product.name e order_products.product."
|
||||
"partnumber"
|
||||
"human_readable_id, order_products.product.name e "
|
||||
"order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -423,8 +426,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Ordene por uma das seguintes opções: uuid, human_readable_id, user_email, "
|
||||
"user, status, created, modified, buy_time, random. Prefixe com '-' para "
|
||||
|
|
@ -580,7 +583,8 @@ msgstr "recuperar a lista de desejos pendente atual de um usuário"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:504
|
||||
msgid "retrieves a current pending wishlist of an authenticated user"
|
||||
msgstr "recupera uma lista de desejos pendente atual de um usuário autenticado"
|
||||
msgstr ""
|
||||
"recupera uma lista de desejos pendente atual de um usuário autenticado"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:514
|
||||
msgid "add product to wishlist"
|
||||
|
|
@ -625,28 +629,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrar por um ou mais pares de nome/valor de atributo. \n"
|
||||
"- **Sintaxe**: `attr_name=method-value[;attr2=method2-value2]...`\n"
|
||||
"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- Digitação de valores**: JSON é tentado primeiro (para que você possa "
|
||||
"passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; "
|
||||
"caso contrário, é tratado como string. \n"
|
||||
"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de "
|
||||
"forma segura para a URL. \n"
|
||||
"- Métodos** (o padrão é `icontains` se omitido): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- Digitação de valores**: JSON é tentado primeiro (para que você possa passar listas/dicas), `true`/`false` para booleanos, inteiros, flutuantes; caso contrário, é tratado como string. \n"
|
||||
"- Base64**: prefixo com `b64-` para codificar o valor bruto com base64 de forma segura para a URL. \n"
|
||||
"Exemplos: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -661,14 +655,11 @@ msgstr "UUID (exato) do produto"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Lista de campos separada por vírgulas para classificação. Prefixe com `-` "
|
||||
"para classificação decrescente. \n"
|
||||
"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, "
|
||||
"aleatório"
|
||||
"Lista de campos separada por vírgulas para classificação. Prefixe com `-` para classificação decrescente. \n"
|
||||
"**Permitido:** uuid, classificação, nome, slug, criado, modificado, preço, aleatório"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
msgid "retrieve a single product (detailed view)"
|
||||
|
|
@ -899,7 +890,8 @@ msgstr "Delete a promo code"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1124
|
||||
msgid "rewrite an existing promo code saving non-editables"
|
||||
msgstr "Reescreva um código promocional existente salvando itens não editáveis"
|
||||
msgstr ""
|
||||
"Reescreva um código promocional existente salvando itens não editáveis"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1131
|
||||
msgid "rewrite some fields of an existing promo code saving non-editables"
|
||||
|
|
@ -1131,7 +1123,7 @@ msgstr "Dados em cache"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Dados JSON camelizados da URL solicitada"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Somente URLs que começam com http(s):// são permitidos"
|
||||
|
||||
|
|
@ -1215,8 +1207,8 @@ msgstr "Comprar um pedido"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Envie os atributos como uma string formatada como attr1=value1,attr2=value2"
|
||||
|
||||
|
|
@ -1293,7 +1285,8 @@ msgstr ""
|
|||
"Quais atributos e valores podem ser usados para filtrar essa categoria."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr "Preços mínimo e máximo dos produtos dessa categoria, se disponíveis."
|
||||
|
||||
#: engine/core/graphene/object_types.py:205
|
||||
|
|
@ -1773,7 +1766,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Representa um objeto de marca no sistema. Essa classe lida com informações e"
|
||||
" atributos relacionados a uma marca, incluindo seu nome, logotipos, "
|
||||
|
|
@ -2083,7 +2077,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/models.py:826
|
||||
msgid "provide alternative text for the image for accessibility"
|
||||
msgstr "Forneça um texto alternativo para a imagem para fins de acessibilidade"
|
||||
msgstr ""
|
||||
"Forneça um texto alternativo para a imagem para fins de acessibilidade"
|
||||
|
||||
#: engine/core/models.py:827
|
||||
msgid "image alt text"
|
||||
|
|
@ -2200,11 +2195,11 @@ msgid ""
|
|||
" custom features."
|
||||
msgstr ""
|
||||
"Representa um registro de documentário vinculado a um produto. Essa classe é"
|
||||
"usada para armazenar informações sobre documentários relacionados a produtos "
|
||||
"específicos, incluindo uploads de arquivos e seus metadados. Ela contém "
|
||||
"métodos e propriedades para lidar com o tipo de arquivo e o caminho de "
|
||||
"armazenamento dos arquivos do documentário. Ela estende a funcionalidade de "
|
||||
"mixins específicos e fornece recursos personalizados adicionais."
|
||||
" usada para armazenar informações sobre documentários relacionados a "
|
||||
"produtos específicos, incluindo uploads de arquivos e seus metadados. Ela "
|
||||
"contém métodos e propriedades para lidar com o tipo de arquivo e o caminho "
|
||||
"de armazenamento dos arquivos do documentário. Ela estende a funcionalidade "
|
||||
"de mixins específicos e fornece recursos personalizados adicionais."
|
||||
|
||||
#: engine/core/models.py:998
|
||||
msgid "documentary"
|
||||
|
|
@ -2221,13 +2216,13 @@ msgstr "Não resolvido"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Representa uma entidade de endereço que inclui detalhes de localização e "
|
||||
"associações com um usuário. Fornece funcionalidade para armazenamento de "
|
||||
|
|
@ -2510,7 +2505,8 @@ msgstr "O código promocional não existe"
|
|||
#: engine/core/models.py:1454
|
||||
msgid "you can only buy physical products with shipping address specified"
|
||||
msgstr ""
|
||||
"Você só pode comprar produtos físicos com o endereço de entrega especificado!"
|
||||
"Você só pode comprar produtos físicos com o endereço de entrega "
|
||||
"especificado!"
|
||||
|
||||
#: engine/core/models.py:1473
|
||||
msgid "address does not exist"
|
||||
|
|
@ -2582,7 +2578,8 @@ msgid "feedback comments"
|
|||
msgstr "Comentários de feedback"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Faz referência ao produto específico em um pedido sobre o qual se trata esse"
|
||||
" feedback"
|
||||
|
|
@ -2735,9 +2732,9 @@ msgstr ""
|
|||
"Representa a funcionalidade de download de ativos digitais associados a "
|
||||
"pedidos. A classe DigitalAssetDownload oferece a capacidade de gerenciar e "
|
||||
"acessar downloads relacionados a produtos de pedidos. Ela mantém informações"
|
||||
"sobre o produto do pedido associado, o número de downloads e se o ativo está "
|
||||
"visível publicamente. Ela inclui um método para gerar um URL para download "
|
||||
"do ativo quando o pedido associado estiver em um status concluído."
|
||||
" sobre o produto do pedido associado, o número de downloads e se o ativo "
|
||||
"está visível publicamente. Ela inclui um método para gerar um URL para "
|
||||
"download do ativo quando o pedido associado estiver em um status concluído."
|
||||
|
||||
#: engine/core/models.py:1961
|
||||
msgid "download"
|
||||
|
|
@ -2783,8 +2780,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Nenhuma atividade de cliente nos últimos 30 dias."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Vendas diárias (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Vendas diárias"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2795,6 +2792,7 @@ msgid "Gross revenue"
|
|||
msgstr "Receita bruta"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Pedidos"
|
||||
|
||||
|
|
@ -2802,6 +2800,10 @@ msgstr "Pedidos"
|
|||
msgid "Gross"
|
||||
msgstr "Bruto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Painel de controle"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Visão geral da renda"
|
||||
|
|
@ -2830,20 +2832,32 @@ msgid "No data"
|
|||
msgstr "No data"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Receita (bruta, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Receita (líquida, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Devoluções (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Receita líquida"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Pedidos processados (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Taxa de reembolso"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Devolvido"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Estoque baixo"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Não há itens com estoque baixo."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2858,11 +2872,11 @@ msgid "Most wished product"
|
|||
msgstr "Produto mais desejado"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Ainda não há dados."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Produto mais popular"
|
||||
|
||||
|
|
@ -2898,10 +2912,6 @@ msgstr "Nenhuma venda de categoria nos últimos 30 dias."
|
|||
msgid "Django site admin"
|
||||
msgstr "Administrador do site Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Painel de controle"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2931,8 +2941,7 @@ msgstr "Olá %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Obrigado por seu pedido #%(order.pk)s! Temos o prazer de informá-lo de que "
|
||||
|
|
@ -3046,8 +3055,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Obrigado por seu pedido! Temos o prazer de confirmar sua compra. Abaixo "
|
||||
|
|
@ -3120,7 +3128,7 @@ msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
|||
msgstr ""
|
||||
"As dimensões da imagem não devem exceder w{max_width} x h{max_height} pixels"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3129,7 +3137,7 @@ msgstr ""
|
|||
"Ele garante que a resposta inclua o cabeçalho de tipo de conteúdo apropriado"
|
||||
" para XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3139,17 +3147,17 @@ msgstr ""
|
|||
"processa a solicitação, obtém a resposta detalhada apropriada do mapa do "
|
||||
"site e define o cabeçalho Content-Type para XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Retorna uma lista de idiomas suportados e suas informações correspondentes."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Retorna os parâmetros do site como um objeto JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3157,11 +3165,11 @@ msgstr ""
|
|||
"Manipula operações de cache, como ler e definir dados de cache com uma chave"
|
||||
" e um tempo limite especificados."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Trata os envios de formulários \"entre em contato conosco\"."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3169,63 +3177,55 @@ msgstr ""
|
|||
"Trata as solicitações de processamento e validação de URLs de solicitações "
|
||||
"POST recebidas."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Trata as consultas de pesquisa global."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Lida com a lógica de comprar como uma empresa sem registro."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Trata do download de um ativo digital associado a um pedido.\n"
|
||||
"Essa função tenta servir o arquivo de ativo digital localizado no diretório "
|
||||
"de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um "
|
||||
"erro HTTP 404 para indicar que o recurso não está disponível."
|
||||
"Essa função tenta servir o arquivo de ativo digital localizado no diretório de armazenamento do projeto. Se o arquivo não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid é obrigatório"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "o produto do pedido não existe"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Você só pode fazer o download do ativo digital uma vez"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "o pedido deve ser pago antes de fazer o download do ativo digital"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "O produto do pedido não tem um produto"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon não encontrado"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Trata as solicitações do favicon de um site.\n"
|
||||
"Essa função tenta servir o arquivo favicon localizado no diretório estático "
|
||||
"do projeto. Se o arquivo favicon não for encontrado, será gerado um erro "
|
||||
"HTTP 404 para indicar que o recurso não está disponível."
|
||||
"Essa função tenta servir o arquivo favicon localizado no diretório estático do projeto. Se o arquivo favicon não for encontrado, será gerado um erro HTTP 404 para indicar que o recurso não está disponível."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3236,11 +3236,16 @@ msgstr ""
|
|||
"índice da interface de administração do Django. Ela usa a função `redirect` "
|
||||
"do Django para lidar com o redirecionamento HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Retorna a versão atual do eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Receita e pedidos (último %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Retorna variáveis personalizadas para o Dashboard."
|
||||
|
||||
|
|
@ -3261,9 +3266,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Representa um conjunto de visualizações para gerenciar objetos "
|
||||
"AttributeGroup. Trata das operações relacionadas ao AttributeGroup, "
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Este activ"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără"
|
||||
" permisiunea necesară"
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Livrat"
|
|||
msgid "canceled"
|
||||
msgstr "Anulată"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Eșuat"
|
||||
|
||||
|
|
@ -208,8 +210,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Aplicați doar o cheie pentru a citi datele permise din cache.\n"
|
||||
"Aplicați o cheie, date și timeout cu autentificare pentru a scrie date în "
|
||||
"cache."
|
||||
"Aplicați o cheie, date și timeout cu autentificare pentru a scrie date în cache."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -272,10 +273,12 @@ msgstr "Ștergerea unui grup de atribute"
|
|||
#: engine/core/docs/drf/viewsets.py:89
|
||||
msgid "rewrite an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Rescrierea unui grup de atribute existent cu salvarea elementelor needitabile"
|
||||
"Rescrierea unui grup de atribute existent cu salvarea elementelor "
|
||||
"needitabile"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Rescrierea unor câmpuri ale unui grup de atribute existent, cu salvarea "
|
||||
"elementelor needitabile"
|
||||
|
|
@ -328,7 +331,8 @@ msgstr ""
|
|||
"Rescrierea unei valori de atribut existente care salvează non-editabile"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Rescrierea unor câmpuri ale unei valori de atribut existente salvând "
|
||||
"elementele needitabile"
|
||||
|
|
@ -387,8 +391,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Căutare de substring insensibilă la majuscule în human_readable_id, "
|
||||
"order_products.product.name și order_products.product.partnumber"
|
||||
|
|
@ -428,8 +432,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Ordonați după unul dintre: uuid, human_readable_id, user_email, user, "
|
||||
"status, created, modified, buy_time, random. Prefixați cu \"-\" pentru "
|
||||
|
|
@ -634,29 +638,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrați după una sau mai multe perechi nume de atribut/valoare. \n"
|
||||
"- **Sintaxa**: `attr_name=method-value[;attr2=method2-value2]...`\n"
|
||||
"- **Metode** (valoarea implicită este `icontains` dacă este omisă): "
|
||||
"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, "
|
||||
"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, "
|
||||
"`gt`, `gte`, `in`\n"
|
||||
"- **Value typing**: JSON este încercat în primul rând (astfel încât să "
|
||||
"puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; "
|
||||
"în caz contrar tratat ca string. \n"
|
||||
"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în "
|
||||
"condiții de siguranță URL. \n"
|
||||
"- **Metode** (valoarea implicită este `icontains` dacă este omisă): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Value typing**: JSON este încercat în primul rând (astfel încât să puteți trece liste/dicte), `true`/`false` pentru booleeni, întregi, float; în caz contrar tratat ca string. \n"
|
||||
"- **Base64**: prefix cu `b64-` pentru a codifica valoarea brută în baza64 în condiții de siguranță URL. \n"
|
||||
"Exemple: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
|
|
@ -671,12 +664,10 @@ msgstr "(exact) UUID al produsului"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați "
|
||||
"cu `-` pentru descrescător. \n"
|
||||
"Lista de câmpuri separate prin virgulă după care se face sortarea. Prefixați cu `-` pentru descrescător. \n"
|
||||
"**Autorizate:** uuid, rating, nume, slug, creat, modificat, preț, aleatoriu"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -836,7 +827,8 @@ msgstr "Ștergeți un brand"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:974
|
||||
msgid "rewrite an existing brand saving non-editables"
|
||||
msgstr "Rescrierea unui brand existent care economisește materiale needitabile"
|
||||
msgstr ""
|
||||
"Rescrierea unui brand existent care economisește materiale needitabile"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:981
|
||||
msgid "rewrite some fields of an existing brand saving non-editables"
|
||||
|
|
@ -888,7 +880,8 @@ msgstr "Ștergeți imaginea unui produs"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1079
|
||||
msgid "rewrite an existing product image saving non-editables"
|
||||
msgstr "Rescrieți o imagine de produs existentă salvând elementele needitabile"
|
||||
msgstr ""
|
||||
"Rescrieți o imagine de produs existentă salvând elementele needitabile"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1086
|
||||
msgid "rewrite some fields of an existing product image saving non-editables"
|
||||
|
|
@ -940,7 +933,8 @@ msgstr "Ștergeți o promovare"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:1169
|
||||
msgid "rewrite an existing promotion saving non-editables"
|
||||
msgstr "Rescrierea unei promoții existente cu salvarea elementelor needitabile"
|
||||
msgstr ""
|
||||
"Rescrierea unei promoții existente cu salvarea elementelor needitabile"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:1176
|
||||
msgid "rewrite some fields of an existing promotion saving non-editables"
|
||||
|
|
@ -1152,7 +1146,7 @@ msgstr "Date în cache"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Date JSON Camelizate de la URL-ul solicitat"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Sunt permise numai URL-urile care încep cu http(s)://"
|
||||
|
||||
|
|
@ -1237,8 +1231,8 @@ msgstr "Cumpărați o comandă"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Vă rugăm să trimiteți atributele sub formă de șir format ca attr1=valoare1, "
|
||||
"attr2=valoare2"
|
||||
|
|
@ -1317,7 +1311,8 @@ msgstr ""
|
|||
"categorii."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt"
|
||||
" disponibile."
|
||||
|
|
@ -1760,7 +1755,8 @@ msgstr "Categorie imagine"
|
|||
|
||||
#: engine/core/models.py:282
|
||||
msgid "define a markup percentage for products in this category"
|
||||
msgstr "Definiți un procent de majorare pentru produsele din această categorie"
|
||||
msgstr ""
|
||||
"Definiți un procent de majorare pentru produsele din această categorie"
|
||||
|
||||
#: engine/core/models.py:291
|
||||
msgid "parent of this category to form a hierarchical structure"
|
||||
|
|
@ -1799,7 +1795,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Reprezintă un obiect Brand în sistem. Această clasă gestionează informațiile"
|
||||
" și atributele legate de o marcă, inclusiv numele acesteia, logo-urile, "
|
||||
|
|
@ -2250,13 +2247,13 @@ msgstr "Nerezolvat"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Reprezintă o entitate de adresă care include detalii despre locație și "
|
||||
"asocieri cu un utilizator. Oferă funcționalitate pentru stocarea datelor "
|
||||
|
|
@ -2266,7 +2263,8 @@ msgstr ""
|
|||
"geolocalizarea (longitudine și latitudine). Aceasta suportă integrarea cu "
|
||||
"API-urile de geocodare, permițând stocarea răspunsurilor API brute pentru "
|
||||
"procesare sau inspecție ulterioară. De asemenea, clasa permite asocierea "
|
||||
"unei adrese cu un utilizator, facilitând gestionarea personalizată a datelor."
|
||||
"unei adrese cu un utilizator, facilitând gestionarea personalizată a "
|
||||
"datelor."
|
||||
|
||||
#: engine/core/models.py:1029
|
||||
msgid "address line for the customer"
|
||||
|
|
@ -2433,9 +2431,9 @@ msgstr ""
|
|||
"Reprezintă o comandă plasată de un utilizator. Această clasă modelează o "
|
||||
"comandă în cadrul aplicației, inclusiv diferitele sale atribute, cum ar fi "
|
||||
"informațiile privind facturarea și expedierea, starea, utilizatorul asociat,"
|
||||
"notificările și operațiunile conexe. Comenzile pot avea produse asociate, se "
|
||||
"pot aplica promoții, se pot stabili adrese și se pot actualiza detaliile de "
|
||||
"expediere sau de facturare. În egală măsură, funcționalitatea sprijină "
|
||||
" notificările și operațiunile conexe. Comenzile pot avea produse asociate, "
|
||||
"se pot aplica promoții, se pot stabili adrese și se pot actualiza detaliile "
|
||||
"de expediere sau de facturare. În egală măsură, funcționalitatea sprijină "
|
||||
"gestionarea produselor în ciclul de viață al comenzii."
|
||||
|
||||
#: engine/core/models.py:1213
|
||||
|
|
@ -2585,7 +2583,8 @@ msgstr ""
|
|||
msgid ""
|
||||
"invalid payment method: {payment_method} from {available_payment_methods}"
|
||||
msgstr ""
|
||||
"Metodă de plată invalidă: {payment_method} de la {available_payment_methods}!"
|
||||
"Metodă de plată invalidă: {payment_method} de la "
|
||||
"{available_payment_methods}!"
|
||||
|
||||
#: engine/core/models.py:1699
|
||||
msgid ""
|
||||
|
|
@ -2612,7 +2611,8 @@ msgid "feedback comments"
|
|||
msgstr "Comentarii de feedback"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Face referire la produsul specific dintr-o comandă despre care este vorba în"
|
||||
" acest feedback"
|
||||
|
|
@ -2816,8 +2816,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Nicio activitate a clientului în ultimele 30 de zile."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Vânzări zilnice (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Vânzări zilnice"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2828,6 +2828,7 @@ msgid "Gross revenue"
|
|||
msgstr "Venituri brute"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Ordine"
|
||||
|
||||
|
|
@ -2835,6 +2836,10 @@ msgstr "Ordine"
|
|||
msgid "Gross"
|
||||
msgstr "Brut"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Tablou de bord"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Prezentare generală a veniturilor"
|
||||
|
|
@ -2863,20 +2868,32 @@ msgid "No data"
|
|||
msgstr "Fără dată"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Venituri (brute, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Venituri (nete, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Returnări (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Venituri nete"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Comenzi procesate (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Rata de rambursare"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Returnat"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Stoc redus"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Nu există articole cu stoc redus."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2891,11 +2908,11 @@ msgid "Most wished product"
|
|||
msgstr "Cel mai dorit produs"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Nu există încă date."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Cel mai popular produs"
|
||||
|
||||
|
|
@ -2931,10 +2948,6 @@ msgstr "Nicio categorie de vânzări în ultimele 30 de zile."
|
|||
msgid "Django site admin"
|
||||
msgstr "Administratorul site-ului Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Tablou de bord"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2964,8 +2977,7 @@ msgstr "Bună ziua %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Vă mulțumim pentru comanda dvs. #%(order.pk)s! Suntem încântați să vă "
|
||||
|
|
@ -3080,8 +3092,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția."
|
||||
|
|
@ -3155,7 +3166,7 @@ msgstr ""
|
|||
"Dimensiunile imaginii nu trebuie să depășească w{max_width} x h{max_height} "
|
||||
"pixeli"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3163,7 +3174,7 @@ msgstr ""
|
|||
"Gestionează cererea pentru indexul sitemap și returnează un răspuns XML. Se "
|
||||
"asigură că răspunsul include antetul tip de conținut adecvat pentru XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3173,17 +3184,17 @@ msgstr ""
|
|||
"Această funcție procesează cererea, extrage răspunsul detaliat corespunzător"
|
||||
" al hărții site-ului și stabilește antetul Content-Type pentru XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Returnează o listă a limbilor acceptate și informațiile corespunzătoare."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Returnează parametrii site-ului web sub forma unui obiect JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3191,11 +3202,11 @@ msgstr ""
|
|||
"Gestionează operațiunile din cache, cum ar fi citirea și setarea datelor din"
|
||||
" cache cu o cheie și un timeout specificate."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Gestionează trimiterea formularelor `contact us`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3203,64 +3214,55 @@ msgstr ""
|
|||
"Gestionează cererile de procesare și validare a URL-urilor din cererile POST"
|
||||
" primite."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Gestionează interogările de căutare globală."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Gestionează logica cumpărării ca o afacere fără înregistrare."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gestionează descărcarea unui bun digital asociat cu o comandă.\n"
|
||||
"Această funcție încearcă să servească fișierul activului digital situat în "
|
||||
"directorul de stocare al proiectului. Dacă fișierul nu este găsit, este "
|
||||
"generată o eroare HTTP 404 pentru a indica faptul că resursa nu este "
|
||||
"disponibilă."
|
||||
"Această funcție încearcă să servească fișierul activului digital situat în directorul de stocare al proiectului. Dacă fișierul nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid este necesar"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "comanda produsul nu există"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Puteți descărca activul digital o singură dată"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "comanda trebuie plătită înainte de descărcarea activului digital"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Produsul de comandă nu are un produs"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon nu a fost găsit"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Gestionează cererile pentru favicon-ul unui site web.\n"
|
||||
"Această funcție încearcă să servească fișierul favicon situat în directorul "
|
||||
"static al proiectului. Dacă fișierul favicon nu este găsit, este generată o "
|
||||
"eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă."
|
||||
"Această funcție încearcă să servească fișierul favicon situat în directorul static al proiectului. Dacă fișierul favicon nu este găsit, este generată o eroare HTTP 404 pentru a indica faptul că resursa nu este disponibilă."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3271,11 +3273,16 @@ msgstr ""
|
|||
" index a interfeței de administrare Django. Aceasta utilizează funcția "
|
||||
"`redirect` din Django pentru gestionarea redirecționării HTTP."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Returnează versiunea curentă a eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Venituri și comenzi (ultimul %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Returnează variabilele personalizate pentru tabloul de bord."
|
||||
|
||||
|
|
@ -3297,9 +3304,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Reprezintă un set de vizualizări pentru gestionarea obiectelor "
|
||||
"AttributeGroup. Gestionează operațiunile legate de AttributeGroup, inclusiv "
|
||||
|
|
@ -3317,11 +3325,11 @@ msgid ""
|
|||
"depending on the request."
|
||||
msgstr ""
|
||||
"Gestionează operațiunile legate de obiectele Attribute în cadrul aplicației."
|
||||
"Oferă un set de puncte finale API pentru a interacționa cu datele Attribute. "
|
||||
"Această clasă gestionează interogarea, filtrarea și serializarea obiectelor "
|
||||
"Attribute, permițând controlul dinamic asupra datelor returnate, cum ar fi "
|
||||
"filtrarea după câmpuri specifice sau recuperarea de informații detaliate sau "
|
||||
"simplificate în funcție de cerere."
|
||||
" Oferă un set de puncte finale API pentru a interacționa cu datele "
|
||||
"Attribute. Această clasă gestionează interogarea, filtrarea și serializarea "
|
||||
"obiectelor Attribute, permițând controlul dinamic asupra datelor returnate, "
|
||||
"cum ar fi filtrarea după câmpuri specifice sau recuperarea de informații "
|
||||
"detaliate sau simplificate în funcție de cerere."
|
||||
|
||||
#: engine/core/viewsets.py:194
|
||||
msgid ""
|
||||
|
|
@ -3452,7 +3460,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/viewsets.py:879
|
||||
msgid "Manages operations related to Product images in the application. "
|
||||
msgstr "Gestionează operațiunile legate de imaginile produselor din aplicație."
|
||||
msgstr ""
|
||||
"Gestionează operațiunile legate de imaginile produselor din aplicație."
|
||||
|
||||
#: engine/core/viewsets.py:892
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -29,7 +29,8 @@ msgstr "Активен"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Если установлено значение false, этот объект не может быть виден "
|
||||
"пользователям без необходимого разрешения"
|
||||
|
|
@ -156,7 +157,8 @@ msgstr "Доставлено"
|
|||
msgid "canceled"
|
||||
msgstr "Отменено"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Не удалось"
|
||||
|
||||
|
|
@ -274,7 +276,8 @@ msgstr ""
|
|||
"элементов"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Переписывание некоторых полей существующей группы атрибутов с сохранением "
|
||||
"нередактируемых полей"
|
||||
|
|
@ -328,7 +331,8 @@ msgstr ""
|
|||
"значений"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Переписывание некоторых полей существующего значения атрибута с сохранением "
|
||||
"нередактируемых значений"
|
||||
|
|
@ -388,11 +392,11 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Поиск подстроки с учетом регистра в human_readable_id, order_products."
|
||||
"product.name и order_products.product.partnumber"
|
||||
"Поиск подстроки с учетом регистра в human_readable_id, "
|
||||
"order_products.product.name и order_products.product.partnumber"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:288
|
||||
msgid "Filter orders with buy_time >= this ISO 8601 datetime"
|
||||
|
|
@ -429,8 +433,8 @@ msgstr ""
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Упорядочивайте по одному из следующих признаков: uuid, human_readable_id, "
|
||||
"user_email, user, status, created, modified, buy_time, random. Префикс '-' "
|
||||
|
|
@ -633,29 +637,18 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Фильтр по одной или нескольким парам имя/значение атрибута. \n"
|
||||
"- **Синтаксис**: `attr_name=method-value[;attr2=method2-value2]...`.\n"
|
||||
"- **Методы** (по умолчанию используется `icontains`, если опущено): "
|
||||
"`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, "
|
||||
"`istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, "
|
||||
"`gt`, `gte`, `in`.\n"
|
||||
"- **Типизация значений**: JSON сначала пытается принять значение (так что вы "
|
||||
"можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, "
|
||||
"плавающих; в противном случае обрабатывается как строка. \n"
|
||||
"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования "
|
||||
"исходного значения. \n"
|
||||
"- **Методы** (по умолчанию используется `icontains`, если опущено): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n"
|
||||
"- **Типизация значений**: JSON сначала пытается принять значение (так что вы можете передавать списки/дискреты), `true`/`false` для булевых, целых чисел, плавающих; в противном случае обрабатывается как строка. \n"
|
||||
"- **Base64**: префикс `b64-` для безопасного для URL base64-кодирования исходного значения. \n"
|
||||
"Примеры: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\", \"bluetooth\"]`,\n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`."
|
||||
|
|
@ -670,14 +663,11 @@ msgstr "(точный) UUID продукта"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Список полей для сортировки, разделенных запятыми. Для сортировки по "
|
||||
"убыванию используйте префикс `-`. \n"
|
||||
"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, "
|
||||
"random"
|
||||
"Список полей для сортировки, разделенных запятыми. Для сортировки по убыванию используйте префикс `-`. \n"
|
||||
"**Разрешенные:** uuid, рейтинг, название, slug, created, modified, price, random"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
msgid "retrieve a single product (detailed view)"
|
||||
|
|
@ -1155,7 +1145,7 @@ msgstr "Кэшированные данные"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Camelized JSON-данные из запрашиваемого URL"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Допускаются только URL-адреса, начинающиеся с http(s)://"
|
||||
|
||||
|
|
@ -1241,8 +1231,8 @@ msgstr "Купить заказ"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Пожалуйста, отправьте атрибуты в виде строки, отформатированной как "
|
||||
"attr1=value1,attr2=value2"
|
||||
|
|
@ -1320,7 +1310,8 @@ msgstr ""
|
|||
"Какие атрибуты и значения можно использовать для фильтрации этой категории."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Минимальные и максимальные цены на товары в этой категории, если они "
|
||||
"доступны."
|
||||
|
|
@ -1802,7 +1793,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Представляет объект Brand в системе. Этот класс обрабатывает информацию и "
|
||||
"атрибуты, связанные с брендом, включая его название, логотипы, описание, "
|
||||
|
|
@ -2252,13 +2244,13 @@ msgstr "Неразрешенные"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Представляет адресную сущность, включающую сведения о местоположении и "
|
||||
"ассоциации с пользователем. Обеспечивает функциональность для хранения "
|
||||
|
|
@ -2525,7 +2517,8 @@ msgstr "Вы не можете добавить больше товаров, ч
|
|||
#: engine/core/models.py:1395 engine/core/models.py:1420
|
||||
#: engine/core/models.py:1428
|
||||
msgid "you cannot remove products from an order that is not a pending one"
|
||||
msgstr "Вы не можете удалить товары из заказа, который не является отложенным."
|
||||
msgstr ""
|
||||
"Вы не можете удалить товары из заказа, который не является отложенным."
|
||||
|
||||
#: engine/core/models.py:1416
|
||||
#, python-brace-format
|
||||
|
|
@ -2610,7 +2603,8 @@ msgid "feedback comments"
|
|||
msgstr "Комментарии к отзывам"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве"
|
||||
|
||||
|
|
@ -2658,7 +2652,8 @@ msgstr "Покупная цена на момент заказа"
|
|||
|
||||
#: engine/core/models.py:1763
|
||||
msgid "internal comments for admins about this ordered product"
|
||||
msgstr "Внутренние комментарии для администраторов об этом заказанном продукте"
|
||||
msgstr ""
|
||||
"Внутренние комментарии для администраторов об этом заказанном продукте"
|
||||
|
||||
#: engine/core/models.py:1764
|
||||
msgid "internal comments"
|
||||
|
|
@ -2809,8 +2804,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Отсутствие активности клиентов за последние 30 дней."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Ежедневные продажи (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Ежедневные продажи"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2821,6 +2816,7 @@ msgid "Gross revenue"
|
|||
msgstr "Валовая выручка"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Заказы"
|
||||
|
||||
|
|
@ -2828,6 +2824,10 @@ msgstr "Заказы"
|
|||
msgid "Gross"
|
||||
msgstr "Брутто"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Приборная панель"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Обзор доходов"
|
||||
|
|
@ -2856,20 +2856,32 @@ msgid "No data"
|
|||
msgstr "Нет даты"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Выручка (брутто, 30д)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Выручка (нетто, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Возвраты (30 дней)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Чистая выручка"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Обработанные заказы (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Ставка возврата"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Возвращено"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Низкий запас"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Нет товаров с низким уровнем запасов."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2884,11 +2896,11 @@ msgid "Most wished product"
|
|||
msgstr "Самые желанные товары"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Данных пока нет."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Самые популярные товары"
|
||||
|
||||
|
|
@ -2924,10 +2936,6 @@ msgstr "За последние 30 дней не было ни одной про
|
|||
msgid "Django site admin"
|
||||
msgstr "Администратор сайта Django"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Приборная панель"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2957,8 +2965,7 @@ msgstr "Привет %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш"
|
||||
|
|
@ -3072,8 +3079,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены "
|
||||
|
|
@ -3146,9 +3152,10 @@ msgstr "Параметр NOMINATIM_URL должен быть настроен!"
|
|||
#, python-brace-format
|
||||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr ""
|
||||
"Размеры изображения не должны превышать w{max_width} x h{max_height} пикселей"
|
||||
"Размеры изображения не должны превышать w{max_width} x h{max_height} "
|
||||
"пикселей"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3157,7 +3164,7 @@ msgstr ""
|
|||
"Он обеспечивает включение в ответ заголовка типа содержимого, "
|
||||
"соответствующего типу XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3167,17 +3174,17 @@ msgstr ""
|
|||
"обрабатывает запрос, извлекает соответствующий подробный ответ карты сайта и"
|
||||
" устанавливает заголовок Content-Type для XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr ""
|
||||
"Возвращает список поддерживаемых языков и соответствующую информацию о них."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Возвращает параметры сайта в виде объекта JSON."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3185,74 +3192,66 @@ msgstr ""
|
|||
"Выполняет операции с кэшем, такие как чтение и установка данных кэша с "
|
||||
"заданным ключом и таймаутом."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Обрабатывает отправленные формы `contact us`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
msgstr ""
|
||||
"Обрабатывает запросы на обработку и проверку URL из входящих POST-запросов."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Обрабатывает глобальные поисковые запросы."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Работает с логикой покупки как бизнеса без регистрации."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Обрабатывает загрузку цифрового актива, связанного с заказом.\n"
|
||||
"Эта функция пытается обслужить файл цифрового актива, расположенный в "
|
||||
"каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, "
|
||||
"указывающая на недоступность ресурса."
|
||||
"Эта функция пытается обслужить файл цифрового актива, расположенный в каталоге хранения проекта. Если файл не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "требуется order_product_uuid"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "заказанный товар не существует"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Вы можете загрузить цифровой актив только один раз"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "заказ должен быть оплачен до загрузки цифрового актива"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "У заказанного продукта нет продукта"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon не найден"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Обрабатывает запросы на фавикон веб-сайта.\n"
|
||||
"Эта функция пытается обслужить файл favicon, расположенный в статической "
|
||||
"директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, "
|
||||
"указывающая на недоступность ресурса."
|
||||
"Эта функция пытается обслужить файл favicon, расположенный в статической директории проекта. Если файл favicon не найден, выдается ошибка HTTP 404, указывающая на недоступность ресурса."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3263,11 +3262,16 @@ msgstr ""
|
|||
"администратора Django. Для обработки HTTP-перенаправления используется "
|
||||
"функция Django `redirect`."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Возвращает текущую версию eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Доходы и заказы (последние %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Возвращает пользовательские переменные для Dashboard."
|
||||
|
||||
|
|
@ -3288,9 +3292,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Представляет собой набор представлений для управления объектами "
|
||||
"AttributeGroup. Обрабатывает операции, связанные с AttributeGroup, включая "
|
||||
|
|
@ -3383,8 +3388,8 @@ msgid ""
|
|||
"Vendor-related resources through the Django REST framework."
|
||||
msgstr ""
|
||||
"Представляет собой набор представлений для управления объектами Vendor. Этот"
|
||||
"набор представлений позволяет получать, фильтровать и сериализовать данные о "
|
||||
"поставщиках. Он определяет наборы запросов, конфигурации фильтров и классы "
|
||||
" набор представлений позволяет получать, фильтровать и сериализовать данные "
|
||||
"о поставщиках. Он определяет наборы запросов, конфигурации фильтров и классы"
|
||||
" сериализаторов, используемые для выполнения различных действий. Цель этого "
|
||||
"класса - обеспечить упрощенный доступ к ресурсам, связанным с Vendor, через "
|
||||
"фреймворк Django REST."
|
||||
|
|
@ -3419,12 +3424,13 @@ msgstr ""
|
|||
"ViewSet для управления заказами и связанными с ними операциями. Этот класс "
|
||||
"предоставляет функциональность для получения, изменения и управления "
|
||||
"объектами заказов. Он включает в себя различные конечные точки для обработки"
|
||||
"операций с заказами, таких как добавление или удаление продуктов, выполнение "
|
||||
"покупок для зарегистрированных и незарегистрированных пользователей, а также "
|
||||
"получение информации о текущих заказах аутентифицированного пользователя. "
|
||||
"ViewSet использует несколько сериализаторов в зависимости от конкретного "
|
||||
"выполняемого действия и соответствующим образом устанавливает разрешения при "
|
||||
"взаимодействии с данными заказа."
|
||||
" операций с заказами, таких как добавление или удаление продуктов, "
|
||||
"выполнение покупок для зарегистрированных и незарегистрированных "
|
||||
"пользователей, а также получение информации о текущих заказах "
|
||||
"аутентифицированного пользователя. ViewSet использует несколько "
|
||||
"сериализаторов в зависимости от конкретного выполняемого действия и "
|
||||
"соответствующим образом устанавливает разрешения при взаимодействии с "
|
||||
"данными заказа."
|
||||
|
||||
#: engine/core/viewsets.py:825
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -3,7 +3,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: EVIBES 2025.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-08 10:56+0300\n"
|
||||
"POT-Creation-Date: 2025-12-10 22:12+0300\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"
|
||||
|
|
@ -27,7 +27,8 @@ msgstr "Är aktiv"
|
|||
|
||||
#: engine/core/abstract.py:21
|
||||
msgid ""
|
||||
"if set to false, this object can't be seen by users without needed permission"
|
||||
"if set to false, this object can't be seen by users without needed "
|
||||
"permission"
|
||||
msgstr ""
|
||||
"Om det är inställt på false kan objektet inte ses av användare utan "
|
||||
"nödvändigt tillstånd"
|
||||
|
|
@ -154,7 +155,8 @@ msgstr "Levereras"
|
|||
msgid "canceled"
|
||||
msgstr "Annullerad"
|
||||
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16 engine/core/choices.py:24
|
||||
#: engine/core/choices.py:8 engine/core/choices.py:16
|
||||
#: engine/core/choices.py:24
|
||||
msgid "failed"
|
||||
msgstr "Misslyckades"
|
||||
|
||||
|
|
@ -205,8 +207,7 @@ msgid ""
|
|||
"apply key, data and timeout with authentication to write data to cache."
|
||||
msgstr ""
|
||||
"Använd endast en nyckel för att läsa tillåtna data från cacheminnet.\n"
|
||||
"Använd nyckel, data och timeout med autentisering för att skriva data till "
|
||||
"cacheminnet."
|
||||
"Använd nyckel, data och timeout med autentisering för att skriva data till cacheminnet."
|
||||
|
||||
#: engine/core/docs/drf/views.py:62
|
||||
msgid "get a list of supported languages"
|
||||
|
|
@ -270,7 +271,8 @@ msgstr ""
|
|||
"Skriva om en befintlig attributgrupp och spara icke-redigerbara attribut"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:96
|
||||
msgid "rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute group saving non-editables"
|
||||
msgstr ""
|
||||
"Skriv om vissa fält i en befintlig attributgrupp och spara icke-redigerbara "
|
||||
"fält"
|
||||
|
|
@ -298,7 +300,8 @@ msgstr "Skriva om ett befintligt attribut och spara icke-redigerbara"
|
|||
#: engine/core/docs/drf/viewsets.py:141
|
||||
msgid "rewrite some fields of an existing attribute saving non-editables"
|
||||
msgstr ""
|
||||
"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara fält"
|
||||
"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara "
|
||||
"fält"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:151
|
||||
msgid "list all attribute values (simple view)"
|
||||
|
|
@ -321,7 +324,8 @@ msgid "rewrite an existing attribute value saving non-editables"
|
|||
msgstr "Skriva om ett befintligt attributvärde som sparar icke-redigerbara"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:186
|
||||
msgid "rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgid ""
|
||||
"rewrite some fields of an existing attribute value saving non-editables"
|
||||
msgstr ""
|
||||
"Skriva om vissa fält i ett befintligt attributvärde och spara icke-"
|
||||
"redigerbara fält"
|
||||
|
|
@ -378,8 +382,8 @@ msgstr ""
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:281
|
||||
msgid ""
|
||||
"Case-insensitive substring search across human_readable_id, order_products."
|
||||
"product.name, and order_products.product.partnumber"
|
||||
"Case-insensitive substring search across human_readable_id, "
|
||||
"order_products.product.name, and order_products.product.partnumber"
|
||||
msgstr ""
|
||||
"Substringsökning utan skiftlägeskänslighet över human_readable_id, "
|
||||
"order_products.product.name och order_products.product.partnumber"
|
||||
|
|
@ -403,7 +407,8 @@ msgstr "Filtrera efter exakt mänskligt läsbart order-ID"
|
|||
#: engine/core/docs/drf/viewsets.py:308
|
||||
msgid "Filter by user's email (case-insensitive exact match)"
|
||||
msgstr ""
|
||||
"Filtrera efter användarens e-post (exakt matchning utan skiftlägeskänslighet)"
|
||||
"Filtrera efter användarens e-post (exakt matchning utan "
|
||||
"skiftlägeskänslighet)"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:313
|
||||
msgid "Filter by user's UUID"
|
||||
|
|
@ -416,8 +421,8 @@ msgstr "Filtrera efter orderstatus (skiftlägeskänslig matchning av delsträng)
|
|||
#: engine/core/docs/drf/viewsets.py:324
|
||||
msgid ""
|
||||
"Order by one of: uuid, human_readable_id, user_email, user, status, created,"
|
||||
"modified, buy_time, random. Prefix with '-' for descending (e.g. '-"
|
||||
"buy_time')."
|
||||
" modified, buy_time, random. Prefix with '-' for descending (e.g. "
|
||||
"'-buy_time')."
|
||||
msgstr ""
|
||||
"Ordna efter en av följande: uuid, human_readable_id, user_email, user, "
|
||||
"status, created, modified, buy_time, random. Prefix med \"-\" för fallande "
|
||||
|
|
@ -535,7 +540,8 @@ msgstr "Lista alla attribut (enkel vy)"
|
|||
#: engine/core/docs/drf/viewsets.py:460
|
||||
msgid "for non-staff users, only their own wishlists are returned."
|
||||
msgstr ""
|
||||
"För användare som inte är anställda returneras endast deras egna önskelistor."
|
||||
"För användare som inte är anställda returneras endast deras egna "
|
||||
"önskelistor."
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:467
|
||||
msgid "retrieve a single wishlist (detailed view)"
|
||||
|
|
@ -560,7 +566,8 @@ msgstr "Skriva om ett befintligt attribut och spara icke-redigerbara"
|
|||
#: engine/core/docs/drf/viewsets.py:496
|
||||
msgid "rewrite some fields of an existing wishlist saving non-editables"
|
||||
msgstr ""
|
||||
"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara fält"
|
||||
"Skriv om vissa fält i ett befintligt attribut och spara icke-redigerbara "
|
||||
"fält"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:503
|
||||
msgid "retrieve current pending wishlist of a user"
|
||||
|
|
@ -615,26 +622,17 @@ msgstr ""
|
|||
msgid ""
|
||||
"Filter by one or more attribute name/value pairs. \n"
|
||||
"• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), "
|
||||
"`true`/`false` for booleans, integers, floats; otherwise treated as "
|
||||
"string. \n"
|
||||
"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n"
|
||||
"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n"
|
||||
"• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n"
|
||||
"Examples: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\","
|
||||
"\"bluetooth\"]`, \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n"
|
||||
"`b64-description=icontains-aGVhdC1jb2xk`"
|
||||
msgstr ""
|
||||
"Filtrera efter ett eller flera attributnamn/värdepar. \n"
|
||||
"- **Syntax**: `attr_namn=metod-värde[;attr2=metod2-värde2]...`\n"
|
||||
"- **Metoder** (standard är `icontains` om den utelämnas): `iexact`, `exact`, "
|
||||
"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, "
|
||||
"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Värde typning**: JSON prövas först (så att du kan skicka listor/dikter), "
|
||||
"`true`/`false` för booleaner, heltal, flottörer; annars behandlas som "
|
||||
"sträng. \n"
|
||||
"- **Metoder** (standard är `icontains` om den utelämnas): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n"
|
||||
"- **Värde typning**: JSON prövas först (så att du kan skicka listor/dikter), `true`/`false` för booleaner, heltal, flottörer; annars behandlas som sträng. \n"
|
||||
"- **Base64**: prefix med `b64-` för URL-säker base64-kodning av råvärdet. \n"
|
||||
"Exempel på detta: \n"
|
||||
"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n"
|
||||
|
|
@ -650,12 +648,10 @@ msgstr "(exakt) UUID för produkt"
|
|||
|
||||
#: engine/core/docs/drf/viewsets.py:581
|
||||
msgid ""
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for "
|
||||
"descending. \n"
|
||||
"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n"
|
||||
"**Allowed:** uuid, rating, name, slug, created, modified, price, random"
|
||||
msgstr ""
|
||||
"Kommaseparerad lista över fält att sortera efter. Prefix med `-` för "
|
||||
"fallande. \n"
|
||||
"Kommaseparerad lista över fält att sortera efter. Prefix med `-` för fallande. \n"
|
||||
"**Tillåtna:** uuid, betyg, namn, slug, skapad, modifierad, pris, slumpmässig"
|
||||
|
||||
#: engine/core/docs/drf/viewsets.py:598 engine/core/docs/drf/viewsets.py:599
|
||||
|
|
@ -1122,7 +1118,7 @@ msgstr "Cachad data"
|
|||
msgid "camelized JSON data from the requested URL"
|
||||
msgstr "Cameliserad JSON-data från den begärda URL:en"
|
||||
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:256
|
||||
#: engine/core/graphene/mutations.py:67 engine/core/views.py:257
|
||||
msgid "only URLs starting with http(s):// are allowed"
|
||||
msgstr "Endast webbadresser som börjar med http(s):// är tillåtna"
|
||||
|
||||
|
|
@ -1151,7 +1147,8 @@ msgstr "Köpa en order"
|
|||
#: engine/core/graphene/mutations.py:211 engine/core/graphene/mutations.py:265
|
||||
msgid "please provide either order_uuid or order_hr_id - mutually exclusive"
|
||||
msgstr ""
|
||||
"Vänligen ange antingen order_uuid eller order_hr_id - ömsesidigt uteslutande!"
|
||||
"Vänligen ange antingen order_uuid eller order_hr_id - ömsesidigt "
|
||||
"uteslutande!"
|
||||
|
||||
#: engine/core/graphene/mutations.py:236 engine/core/graphene/mutations.py:501
|
||||
#: engine/core/graphene/mutations.py:543 engine/core/viewsets.py:712
|
||||
|
|
@ -1207,8 +1204,8 @@ msgstr "Köpa en order"
|
|||
|
||||
#: engine/core/graphene/mutations.py:516
|
||||
msgid ""
|
||||
"please send the attributes as the string formatted like attr1=value1,"
|
||||
"attr2=value2"
|
||||
"please send the attributes as the string formatted like "
|
||||
"attr1=value1,attr2=value2"
|
||||
msgstr ""
|
||||
"Skicka attributen som en sträng formaterad som attr1=värde1,attr2=värde2"
|
||||
|
||||
|
|
@ -1285,7 +1282,8 @@ msgstr ""
|
|||
"Vilka attribut och värden som kan användas för att filtrera denna kategori."
|
||||
|
||||
#: engine/core/graphene/object_types.py:203
|
||||
msgid "minimum and maximum prices for products in this category, if available."
|
||||
msgid ""
|
||||
"minimum and maximum prices for products in this category, if available."
|
||||
msgstr ""
|
||||
"Minsta och högsta pris för produkter i denna kategori, om tillgängligt."
|
||||
|
||||
|
|
@ -1496,8 +1494,7 @@ msgstr "Företagets telefonnummer"
|
|||
|
||||
#: engine/core/graphene/object_types.py:680
|
||||
msgid "email from, sometimes it must be used instead of host user value"
|
||||
msgstr ""
|
||||
"\"email from\", ibland måste det användas istället för host user-värdet"
|
||||
msgstr "\"email from\", ibland måste det användas istället för host user-värdet"
|
||||
|
||||
#: engine/core/graphene/object_types.py:681
|
||||
msgid "email host user"
|
||||
|
|
@ -1593,8 +1590,8 @@ msgstr ""
|
|||
"definiera och hantera information som är relaterad till en extern "
|
||||
"leverantör. Den lagrar leverantörens namn, autentiseringsuppgifter som krävs"
|
||||
" för kommunikation och den procentuella markering som tillämpas på produkter"
|
||||
"som hämtas från leverantören. Modellen innehåller också ytterligare metadata "
|
||||
"och begränsningar, vilket gör den lämplig att använda i system som "
|
||||
" som hämtas från leverantören. Modellen innehåller också ytterligare "
|
||||
"metadata och begränsningar, vilket gör den lämplig att använda i system som "
|
||||
"interagerar med tredjepartsleverantörer."
|
||||
|
||||
#: engine/core/models.py:124
|
||||
|
|
@ -1765,7 +1762,8 @@ msgid ""
|
|||
"Represents a Brand object in the system. This class handles information and "
|
||||
"attributes related to a brand, including its name, logos, description, "
|
||||
"associated categories, a unique slug, and priority order. It allows for the "
|
||||
"organization and representation of brand-related data within the application."
|
||||
"organization and representation of brand-related data within the "
|
||||
"application."
|
||||
msgstr ""
|
||||
"Representerar ett Brand-objekt i systemet. Klassen hanterar information och "
|
||||
"attribut som är relaterade till ett varumärke, inklusive dess namn, "
|
||||
|
|
@ -2214,23 +2212,23 @@ msgstr "Olöst"
|
|||
#: engine/core/models.py:1014
|
||||
msgid ""
|
||||
"Represents an address entity that includes location details and associations"
|
||||
"with a user. Provides functionality for geographic and address data storage, "
|
||||
"as well as integration with geocoding services. This class is designed to "
|
||||
"store detailed address information including components like street, city, "
|
||||
"region, country, and geolocation (longitude and latitude). It supports "
|
||||
"integration with geocoding APIs, enabling the storage of raw API responses "
|
||||
"for further processing or inspection. The class also allows associating an "
|
||||
"address with a user, facilitating personalized data handling."
|
||||
" with a user. Provides functionality for geographic and address data "
|
||||
"storage, as well as integration with geocoding services. This class is "
|
||||
"designed to store detailed address information including components like "
|
||||
"street, city, region, country, and geolocation (longitude and latitude). It "
|
||||
"supports integration with geocoding APIs, enabling the storage of raw API "
|
||||
"responses for further processing or inspection. The class also allows "
|
||||
"associating an address with a user, facilitating personalized data handling."
|
||||
msgstr ""
|
||||
"Representerar en adressentitet som innehåller platsinformation och "
|
||||
"associationer med en användare. Tillhandahåller funktionalitet för lagring "
|
||||
"av geografiska data och adressdata samt integration med geokodningstjänster."
|
||||
"Denna klass är utformad för att lagra detaljerad adressinformation inklusive "
|
||||
"komponenter som gata, stad, region, land och geolokalisering (longitud och "
|
||||
"latitud). Den stöder integration med API:er för geokodning, vilket möjliggör "
|
||||
"lagring av råa API-svar för vidare bearbetning eller inspektion. Klassen gör "
|
||||
"det också möjligt att associera en adress med en användare, vilket "
|
||||
"underlättar personlig datahantering."
|
||||
" Denna klass är utformad för att lagra detaljerad adressinformation "
|
||||
"inklusive komponenter som gata, stad, region, land och geolokalisering "
|
||||
"(longitud och latitud). Den stöder integration med API:er för geokodning, "
|
||||
"vilket möjliggör lagring av råa API-svar för vidare bearbetning eller "
|
||||
"inspektion. Klassen gör det också möjligt att associera en adress med en "
|
||||
"användare, vilket underlättar personlig datahantering."
|
||||
|
||||
#: engine/core/models.py:1029
|
||||
msgid "address line for the customer"
|
||||
|
|
@ -2569,7 +2567,8 @@ msgid "feedback comments"
|
|||
msgstr "Återkoppling av kommentarer"
|
||||
|
||||
#: engine/core/models.py:1719
|
||||
msgid "references the specific product in an order that this feedback is about"
|
||||
msgid ""
|
||||
"references the specific product in an order that this feedback is about"
|
||||
msgstr ""
|
||||
"Refererar till den specifika produkten i en order som denna feedback handlar"
|
||||
" om"
|
||||
|
|
@ -2603,8 +2602,8 @@ msgstr ""
|
|||
"order, inklusive detaljer som inköpspris, kvantitet, produktattribut och "
|
||||
"status. Den hanterar meddelanden till användaren och administratörer och "
|
||||
"hanterar åtgärder som att returnera produktsaldot eller lägga till feedback."
|
||||
"Modellen innehåller också metoder och egenskaper som stöder affärslogik, t."
|
||||
"ex. beräkning av totalpriset eller generering av en URL för nedladdning av "
|
||||
" Modellen innehåller också metoder och egenskaper som stöder affärslogik, "
|
||||
"t.ex. beräkning av totalpriset eller generering av en URL för nedladdning av"
|
||||
" digitala produkter. Modellen integreras med Order- och Product-modellerna "
|
||||
"och lagrar en referens till dem."
|
||||
|
||||
|
|
@ -2719,12 +2718,12 @@ msgid ""
|
|||
" the asset when the associated order is in a completed status."
|
||||
msgstr ""
|
||||
"Representerar nedladdningsfunktionen för digitala tillgångar som är kopplade"
|
||||
"till order. Klassen DigitalAssetDownload ger möjlighet att hantera och komma "
|
||||
"åt nedladdningar som är relaterade till orderprodukter. Den upprätthåller "
|
||||
"information om den associerade orderprodukten, antalet nedladdningar och om "
|
||||
"tillgången är offentligt synlig. Den innehåller en metod för att generera en "
|
||||
"URL för nedladdning av tillgången när den associerade ordern har statusen "
|
||||
"slutförd."
|
||||
" till order. Klassen DigitalAssetDownload ger möjlighet att hantera och "
|
||||
"komma åt nedladdningar som är relaterade till orderprodukter. Den "
|
||||
"upprätthåller information om den associerade orderprodukten, antalet "
|
||||
"nedladdningar och om tillgången är offentligt synlig. Den innehåller en "
|
||||
"metod för att generera en URL för nedladdning av tillgången när den "
|
||||
"associerade ordern har statusen slutförd."
|
||||
|
||||
#: engine/core/models.py:1961
|
||||
msgid "download"
|
||||
|
|
@ -2770,8 +2769,8 @@ msgid "No customer activity in the last 30 days."
|
|||
msgstr "Ingen kundaktivitet under de senaste 30 dagarna."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:5
|
||||
msgid "Daily sales (30d)"
|
||||
msgstr "Daglig försäljning (30d)"
|
||||
msgid "Daily sales"
|
||||
msgstr "Daglig försäljning"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:59
|
||||
msgid "Orders (FINISHED)"
|
||||
|
|
@ -2782,6 +2781,7 @@ msgid "Gross revenue"
|
|||
msgstr "Bruttointäkter"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_daily_sales.html:106
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:20
|
||||
msgid "Orders"
|
||||
msgstr "Beställningar"
|
||||
|
||||
|
|
@ -2789,6 +2789,10 @@ msgstr "Beställningar"
|
|||
msgid "Gross"
|
||||
msgstr "Brutto"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_header.html:3
|
||||
msgid "Dashboard"
|
||||
msgstr "Instrumentpanel"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_income_overview.html:7
|
||||
msgid "Income overview"
|
||||
msgstr "Översikt över intäkter"
|
||||
|
|
@ -2817,20 +2821,32 @@ msgid "No data"
|
|||
msgstr "Inget datum"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:6
|
||||
msgid "Revenue (gross, 30d)"
|
||||
msgstr "Intäkter (brutto, 30d)"
|
||||
msgid "GMV"
|
||||
msgstr "GMV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:15
|
||||
msgid "Revenue (net, 30d)"
|
||||
msgstr "Intäkter (netto, 30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:34
|
||||
msgid "AOV"
|
||||
msgstr "AOV"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:24
|
||||
msgid "Returns (30d)"
|
||||
msgstr "Avkastning (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:48
|
||||
msgid "Net revenue"
|
||||
msgstr "Nettoomsättning"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:33
|
||||
msgid "Processed orders (30d)"
|
||||
msgstr "Bearbetade order (30d)"
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:62
|
||||
msgid "Refund rate"
|
||||
msgstr "Återbetalningsgrad"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_kpis.html:73
|
||||
msgid "returned"
|
||||
msgstr "Återlämnad"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:5
|
||||
msgid "Low stock"
|
||||
msgstr "Låg lagerhållning"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_low_stock.html:29
|
||||
msgid "No low stock items."
|
||||
msgstr "Inga låglagervaror."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_most_returned.html:5
|
||||
msgid "Most returned products (30d)"
|
||||
|
|
@ -2845,11 +2861,11 @@ msgid "Most wished product"
|
|||
msgstr "Mest önskade produkt"
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:33
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:67
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:68
|
||||
msgid "No data yet."
|
||||
msgstr "Inga uppgifter ännu."
|
||||
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:40
|
||||
#: engine/core/templates/admin/dashboard/_product_lists.html:41
|
||||
msgid "Most popular product"
|
||||
msgstr "Mest populära produkt"
|
||||
|
||||
|
|
@ -2885,10 +2901,6 @@ msgstr "Ingen kategoriförsäljning under de senaste 30 dagarna."
|
|||
msgid "Django site admin"
|
||||
msgstr "Django webbplatsadministratör"
|
||||
|
||||
#: engine/core/templates/admin/index.html:20
|
||||
msgid "Dashboard"
|
||||
msgstr "Instrumentpanel"
|
||||
|
||||
#: engine/core/templates/digital_order_created_email.html:7
|
||||
#: engine/core/templates/digital_order_created_email.html:100
|
||||
#: engine/core/templates/digital_order_delivered_email.html:6
|
||||
|
|
@ -2918,8 +2930,7 @@ msgstr "Hej %(order.user.first_name)s,"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"thank you for your order #%(order.pk)s! we are pleased to inform you that\n"
|
||||
" we have taken your order into work. below are "
|
||||
"the details of your\n"
|
||||
" we have taken your order into work. below are the details of your\n"
|
||||
" order:"
|
||||
msgstr ""
|
||||
"Tack för din beställning #%(order.pk)s! Vi är glada att kunna informera dig "
|
||||
|
|
@ -3034,8 +3045,7 @@ msgstr ""
|
|||
#: engine/core/templates/shipped_order_created_email.html:101
|
||||
#: engine/core/templates/shipped_order_delivered_email.html:101
|
||||
msgid ""
|
||||
"thank you for your order! we are pleased to confirm your purchase. below "
|
||||
"are\n"
|
||||
"thank you for your order! we are pleased to confirm your purchase. below are\n"
|
||||
" the details of your order:"
|
||||
msgstr ""
|
||||
"Tack för din beställning! Vi är glada att kunna bekräfta ditt köp. Nedan "
|
||||
|
|
@ -3107,7 +3117,7 @@ msgstr "Parametern NOMINATIM_URL måste konfigureras!"
|
|||
msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels"
|
||||
msgstr "Bildmåtten får inte överstiga w{max_width} x h{max_height} pixlar!"
|
||||
|
||||
#: engine/core/views.py:90
|
||||
#: engine/core/views.py:91
|
||||
msgid ""
|
||||
"Handles the request for the sitemap index and returns an XML response. It "
|
||||
"ensures the response includes the appropriate content type header for XML."
|
||||
|
|
@ -3115,7 +3125,7 @@ msgstr ""
|
|||
"Hanterar begäran om index för webbplatskartan och returnerar ett XML-svar. "
|
||||
"Den ser till att svaret innehåller rätt innehållstypshuvud för XML."
|
||||
|
||||
#: engine/core/views.py:105
|
||||
#: engine/core/views.py:106
|
||||
msgid ""
|
||||
"Handles the detailed view response for a sitemap. This function processes "
|
||||
"the request, fetches the appropriate sitemap detail response, and sets the "
|
||||
|
|
@ -3125,16 +3135,16 @@ msgstr ""
|
|||
"bearbetar begäran, hämtar det lämpliga detaljerade svaret för "
|
||||
"webbplatskartan och ställer in Content-Type-huvudet för XML."
|
||||
|
||||
#: engine/core/views.py:140
|
||||
#: engine/core/views.py:141
|
||||
msgid ""
|
||||
"Returns a list of supported languages and their corresponding information."
|
||||
msgstr "Returnerar en lista över språk som stöds och motsvarande information."
|
||||
|
||||
#: engine/core/views.py:172
|
||||
#: engine/core/views.py:173
|
||||
msgid "Returns the parameters of the website as a JSON object."
|
||||
msgstr "Returnerar webbplatsens parametrar som ett JSON-objekt."
|
||||
|
||||
#: engine/core/views.py:191
|
||||
#: engine/core/views.py:192
|
||||
msgid ""
|
||||
"Handles cache operations such as reading and setting cache data with a "
|
||||
"specified key and timeout."
|
||||
|
|
@ -3142,11 +3152,11 @@ msgstr ""
|
|||
"Hanterar cacheoperationer som att läsa och ställa in cachedata med en "
|
||||
"angiven nyckel och timeout."
|
||||
|
||||
#: engine/core/views.py:218
|
||||
#: engine/core/views.py:219
|
||||
msgid "Handles `contact us` form submissions."
|
||||
msgstr "Hanterar formulärinlämningar för `kontakta oss`."
|
||||
|
||||
#: engine/core/views.py:239
|
||||
#: engine/core/views.py:240
|
||||
msgid ""
|
||||
"Handles requests for processing and validating URLs from incoming POST "
|
||||
"requests."
|
||||
|
|
@ -3154,63 +3164,55 @@ msgstr ""
|
|||
"Hanterar förfrågningar om bearbetning och validering av URL:er från "
|
||||
"inkommande POST-förfrågningar."
|
||||
|
||||
#: engine/core/views.py:279
|
||||
#: engine/core/views.py:280
|
||||
msgid "Handles global search queries."
|
||||
msgstr "Hanterar globala sökfrågor."
|
||||
|
||||
#: engine/core/views.py:294
|
||||
#: engine/core/views.py:295
|
||||
msgid "Handles the logic of buying as a business without registration."
|
||||
msgstr "Hanterar logiken i att köpa som ett företag utan registrering."
|
||||
|
||||
#: engine/core/views.py:331
|
||||
#: engine/core/views.py:332
|
||||
msgid ""
|
||||
"Handles the downloading of a digital asset associated with an order.\n"
|
||||
"This function attempts to serve the digital asset file located in the "
|
||||
"storage directory of the project. If the file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the digital asset file located in the storage directory of the project. If the file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Hanterar nedladdning av en digital tillgång som är kopplad till en order.\n"
|
||||
"Denna funktion försöker servera den digitala tillgångsfilen som finns i "
|
||||
"lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel "
|
||||
"som indikerar att resursen inte är tillgänglig."
|
||||
"Denna funktion försöker servera den digitala tillgångsfilen som finns i lagringskatalogen för projektet. Om filen inte hittas visas ett HTTP 404-fel som indikerar att resursen inte är tillgänglig."
|
||||
|
||||
#: engine/core/views.py:342
|
||||
#: engine/core/views.py:343
|
||||
msgid "order_product_uuid is required"
|
||||
msgstr "order_product_uuid är obligatoriskt"
|
||||
|
||||
#: engine/core/views.py:349
|
||||
#: engine/core/views.py:350
|
||||
msgid "order product does not exist"
|
||||
msgstr "Beställ produkten finns inte"
|
||||
|
||||
#: engine/core/views.py:352
|
||||
#: engine/core/views.py:353
|
||||
msgid "you can only download the digital asset once"
|
||||
msgstr "Du kan bara ladda ner den digitala tillgången en gång"
|
||||
|
||||
#: engine/core/views.py:355
|
||||
#: engine/core/views.py:356
|
||||
msgid "the order must be paid before downloading the digital asset"
|
||||
msgstr "beställningen måste betalas innan den digitala tillgången laddas ner"
|
||||
|
||||
#: engine/core/views.py:361
|
||||
#: engine/core/views.py:362
|
||||
msgid "the order product does not have a product"
|
||||
msgstr "Beställningens produkt har ingen produkt"
|
||||
|
||||
#: engine/core/views.py:398
|
||||
#: engine/core/views.py:399
|
||||
msgid "favicon not found"
|
||||
msgstr "favicon hittades inte"
|
||||
|
||||
#: engine/core/views.py:403
|
||||
#: engine/core/views.py:404
|
||||
msgid ""
|
||||
"Handles requests for the favicon of a website.\n"
|
||||
"This function attempts to serve the favicon file located in the static "
|
||||
"directory of the project. If the favicon file is not found, an HTTP 404 "
|
||||
"error is raised to indicate the resource is unavailable."
|
||||
"This function attempts to serve the favicon file located in the static directory of the project. If the favicon file is not found, an HTTP 404 error is raised to indicate the resource is unavailable."
|
||||
msgstr ""
|
||||
"Hanterar förfrågningar om favicon på en webbplats.\n"
|
||||
"Denna funktion försöker servera favicon-filen som finns i den statiska "
|
||||
"katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel "
|
||||
"som anger att resursen inte är tillgänglig."
|
||||
"Denna funktion försöker servera favicon-filen som finns i den statiska katalogen i projektet. Om favicon-filen inte hittas visas ett HTTP 404-fel som anger att resursen inte är tillgänglig."
|
||||
|
||||
#: engine/core/views.py:415
|
||||
#: engine/core/views.py:416
|
||||
msgid ""
|
||||
"Redirects the request to the admin index page. The function handles incoming"
|
||||
" HTTP requests and redirects them to the Django admin interface index page. "
|
||||
|
|
@ -3221,11 +3223,16 @@ msgstr ""
|
|||
"admin-gränssnitt. Den använder Djangos `redirect`-funktion för att hantera "
|
||||
"HTTP-omdirigeringen."
|
||||
|
||||
#: engine/core/views.py:428
|
||||
#: engine/core/views.py:429
|
||||
msgid "Returns current version of the eVibes. "
|
||||
msgstr "Returnerar aktuell version av eVibes."
|
||||
|
||||
#: engine/core/views.py:637
|
||||
#: engine/core/views.py:623 engine/core/views.py:636
|
||||
#, python-format
|
||||
msgid "Revenue & Orders (last %(days)d)"
|
||||
msgstr "Intäkter och order (senast %(days)d)"
|
||||
|
||||
#: engine/core/views.py:793
|
||||
msgid "Returns custom variables for Dashboard. "
|
||||
msgstr "Returnerar anpassade variabler för Dashboard."
|
||||
|
||||
|
|
@ -3246,9 +3253,10 @@ msgstr ""
|
|||
#: engine/core/viewsets.py:156
|
||||
msgid ""
|
||||
"Represents a viewset for managing AttributeGroup objects. Handles operations"
|
||||
"related to AttributeGroup, including filtering, serialization, and retrieval "
|
||||
"of data. This class is part of the application's API layer and provides a "
|
||||
"standardized way to process requests and responses for AttributeGroup data."
|
||||
" related to AttributeGroup, including filtering, serialization, and "
|
||||
"retrieval of data. This class is part of the application's API layer and "
|
||||
"provides a standardized way to process requests and responses for "
|
||||
"AttributeGroup data."
|
||||
msgstr ""
|
||||
"Representerar en vy för hantering av AttributeGroup-objekt. Hanterar "
|
||||
"åtgärder relaterade till AttributeGroup, inklusive filtrering, serialisering"
|
||||
|
|
@ -3308,8 +3316,8 @@ msgid ""
|
|||
"endpoints for Brand objects."
|
||||
msgstr ""
|
||||
"Representerar en vy för hantering av varumärkesinstanser. Denna klass "
|
||||
"tillhandahåller funktionalitet för att fråga, filtrera och serialisera Brand-"
|
||||
"objekt. Den använder Djangos ViewSet-ramverk för att förenkla "
|
||||
"tillhandahåller funktionalitet för att fråga, filtrera och serialisera "
|
||||
"Brand-objekt. Den använder Djangos ViewSet-ramverk för att förenkla "
|
||||
"implementeringen av API-slutpunkter för varumärkesobjekt."
|
||||
|
||||
#: engine/core/viewsets.py:438
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue