From 419595a10a12f3a884375d85c12971363d8d889c Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Mon, 26 May 2025 18:19:34 +0300 Subject: [PATCH 01/15] Features: 1) Assign specific ownership to Dockerfile.app and Dockerfile.storefront. Fixes: 1) Update CODEOWNERS to replace ambiguous "@default-owner" with "@@owner"; 2) Correct assignments for docker-compose.yml, .gitignore, .dockerignore, and nginx to "@@maintainer". Extra: Standardized ownership definitions for improved clarity and maintainability. --- CODEOWNERS | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index fc149670..7fff077e 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,14 +1,15 @@ -* @default-owner +* @@owner README.md @fureunoir contact@fureunoir.com LICENSE @fureunoir contact@fureunoir.com -Dockerfile* @fureunoir contact@fureunoir.com -docker-compose.yml @fureunoir contact@fureunoir.com -.gitignore @fureunoir contact@fureunoir.com -.dockerignore @fureunoir contact@fureunoir.com -nginx @fureunoir contact@fureunoir.com +Dockerfile.app @fureunoir contact@fureunoir.com +Dockerfile.storefront @SaVBaD savbad@wiseless.xyz +docker-compose.yml @@maintainer +.gitignore @@maintainer +.dockerignore @@maintainer +nginx @@maintainer pyproject.toml @fureunoir contact@fureunoir.com poetry.lock @fureunoir contact@fureunoir.com From ecad0561a51ba830e00030a70ccfdda6e9637837 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Mon, 26 May 2025 22:13:35 +0300 Subject: [PATCH 02/15] Features: None; Fixes: 1) Remove redundant slashes from CODEOWNERS paths for blog, core, evibes, payments, scripts, vibes_auth, and storefront directories; Extra: Simplified and standardized path formatting in CODEOWNERS. --- CODEOWNERS | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 7fff077e..9bbaf276 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -13,13 +13,13 @@ nginx @@maintainer pyproject.toml @fureunoir contact@fureunoir.com poetry.lock @fureunoir contact@fureunoir.com -/blog/ @fureunoir contact@fureunoir.com -/core/ @fureunoir contact@fureunoir.com -/evibes/ @fureunoir contact@fureunoir.com -/payments/ @fureunoir contact@fureunoir.com -/scripts/ @fureunoir contact@fureunoir.com -/vibes_auth/ @fureunoir contact@fureunoir.com -/storefront/ @SaVBaD savbad@wiseless.xyz +blog/ @fureunoir contact@fureunoir.com +core/ @fureunoir contact@fureunoir.com +evibes/ @fureunoir contact@fureunoir.com +payments/ @fureunoir contact@fureunoir.com +scripts/ @fureunoir contact@fureunoir.com +vibes_auth/ @fureunoir contact@fureunoir.com +storefront/ @SaVBaD savbad@wiseless.xyz *.py @fureunoir contact@fureunoir.com *.bat @fureunoir contact@fureunoir.com From 008ab92f95df777daad4b43d1d47011a031f873e Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Mon, 26 May 2025 22:16:32 +0300 Subject: [PATCH 03/15] Features: 1) Filter recently viewed products by active status in serializer; Fixes: 1) Correct default value in `recently_viewed` property to handle cache miss; Extra: 1) Inline simplification of serializer logic for recently viewed products. --- vibes_auth/models.py | 2 +- vibes_auth/serializers.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/vibes_auth/models.py b/vibes_auth/models.py index 3a02a890..464a37b9 100644 --- a/vibes_auth/models.py +++ b/vibes_auth/models.py @@ -87,7 +87,7 @@ class User(AbstractUser, NiceModel): @property def recently_viewed(self): - return [] or cache.get(f"user_{self.uuid}_rv") + return cache.get(f"user_{self.uuid}_rv", []) def check_token(self, token): return str(token) == str(self.activation_token) diff --git a/vibes_auth/serializers.py b/vibes_auth/serializers.py index 03470884..847b767e 100644 --- a/vibes_auth/serializers.py +++ b/vibes_auth/serializers.py @@ -94,9 +94,8 @@ class UserSerializer(ModelSerializer): Returns a list of serialized ProductSimpleSerializer representations for the UUIDs in obj.recently_viewed. """ - queryset = Product.objects.filter(uuid__in=obj.recently_viewed) - serializer = ProductSimpleSerializer(queryset, many=True) - return serializer.data + return ProductSimpleSerializer(Product.objects.filter(uuid__in=obj.recently_viewed, is_active=True), + many=True).data class TokenObtainSerializer(Serializer): From a28ce41394167a14d219c5d3724efb81d1257af9 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 27 May 2025 10:56:49 +0300 Subject: [PATCH 04/15] Features: ; Fixes: 1) Update environment variable references for STATIC_URL and MEDIA_URL to use 'EVIBES_BASE_DOMAIN'; Extra: ; --- evibes/settings/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evibes/settings/base.py b/evibes/settings/base.py index 324a4be6..cb00076f 100644 --- a/evibes/settings/base.py +++ b/evibes/settings/base.py @@ -192,10 +192,10 @@ DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" TIME_ZONE = getenv("TIME_ZONE", "Europe/London") -STATIC_URL = f"https://api.{getenv('BASE_DOMAIN')}/static/" +STATIC_URL = f"https://api.{getenv('EVIBES_BASE_DOMAIN')}/static/" STATIC_ROOT = BASE_DIR / "static" -MEDIA_URL = f"https://api.{getenv('BASE_DOMAIN')}/media/" +MEDIA_URL = f"https://api.{getenv('EVIBES_BASE_DOMAIN')}/media/" MEDIA_ROOT = BASE_DIR / "media" AUTH_USER_MODEL = "vibes_auth.User" From 3ad079b3d96636a4454fb9743e2828161b8302be Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 27 May 2025 15:48:40 +0300 Subject: [PATCH 05/15] Features: 1) Extra password validation; Fixes: 1) ; Extra: 1) Minor adjustments in binary formatting of the localization file content. --- blog/locale/ar_AR/LC_MESSAGES/django.po | 28 +- blog/locale/cs_CZ/LC_MESSAGES/django.po | 28 +- blog/locale/da_DK/LC_MESSAGES/django.po | 28 +- blog/locale/de_DE/LC_MESSAGES/django.po | 28 +- blog/locale/en_GB/LC_MESSAGES/django.po | 28 +- blog/locale/en_US/LC_MESSAGES/django.po | 28 +- blog/locale/es_ES/LC_MESSAGES/django.po | 28 +- blog/locale/fr_FR/LC_MESSAGES/django.po | 28 +- blog/locale/hi_IN/LC_MESSAGES/django.po | 28 +- blog/locale/it_IT/LC_MESSAGES/django.po | 28 +- blog/locale/ja_JP/LC_MESSAGES/django.po | 28 +- blog/locale/kk_KZ/LC_MESSAGES/django.po | 28 +- blog/locale/nl_NL/LC_MESSAGES/django.po | 28 +- blog/locale/pl_PL/LC_MESSAGES/django.po | 28 +- blog/locale/pt_BR/LC_MESSAGES/django.po | 28 +- blog/locale/ro_RO/LC_MESSAGES/django.po | 28 +- blog/locale/ru_RU/LC_MESSAGES/django.po | 28 +- blog/locale/zh_Hans/LC_MESSAGES/django.po | 28 +- core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 48226 -> 48180 bytes core/locale/ar_AR/LC_MESSAGES/django.po | 708 ++++++++-------- core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 41909 -> 41870 bytes core/locale/cs_CZ/LC_MESSAGES/django.po | 699 ++++++++-------- core/locale/da_DK/LC_MESSAGES/django.mo | Bin 40578 -> 40534 bytes core/locale/da_DK/LC_MESSAGES/django.po | 715 ++++++++-------- core/locale/de_DE/LC_MESSAGES/django.mo | Bin 42850 -> 42806 bytes core/locale/de_DE/LC_MESSAGES/django.po | 734 ++++++++--------- core/locale/en_GB/LC_MESSAGES/django.mo | Bin 39167 -> 39125 bytes core/locale/en_GB/LC_MESSAGES/django.po | 703 ++++++++-------- core/locale/en_US/LC_MESSAGES/django.mo | Bin 39166 -> 39124 bytes core/locale/en_US/LC_MESSAGES/django.po | 697 ++++++++-------- core/locale/es_ES/LC_MESSAGES/django.mo | Bin 42012 -> 41970 bytes core/locale/es_ES/LC_MESSAGES/django.po | 712 ++++++++-------- core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 43032 -> 42991 bytes core/locale/fr_FR/LC_MESSAGES/django.po | 728 +++++++++-------- core/locale/hi_IN/LC_MESSAGES/django.po | 622 +++++++------- core/locale/it_IT/LC_MESSAGES/django.mo | Bin 42395 -> 42355 bytes core/locale/it_IT/LC_MESSAGES/django.po | 734 ++++++++--------- core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 43487 -> 43451 bytes core/locale/ja_JP/LC_MESSAGES/django.po | 766 ++++++++++-------- core/locale/kk_KZ/LC_MESSAGES/django.po | 622 +++++++------- core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 41670 -> 41629 bytes core/locale/nl_NL/LC_MESSAGES/django.po | 708 ++++++++-------- core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 41867 -> 41825 bytes core/locale/pl_PL/LC_MESSAGES/django.po | 703 ++++++++-------- core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 41968 -> 41927 bytes core/locale/pt_BR/LC_MESSAGES/django.po | 702 ++++++++-------- core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 42434 -> 42395 bytes core/locale/ro_RO/LC_MESSAGES/django.po | 716 ++++++++-------- core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 54055 -> 54009 bytes core/locale/ru_RU/LC_MESSAGES/django.po | 711 ++++++++-------- core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 37528 -> 37492 bytes core/locale/zh_Hans/LC_MESSAGES/django.po | 693 ++++++++-------- vibes_auth/graphene/mutations.py | 9 +- vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo | Bin 9733 -> 9637 bytes vibes_auth/locale/ar_AR/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 8072 -> 8002 bytes vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/da_DK/LC_MESSAGES/django.mo | Bin 7942 -> 7878 bytes vibes_auth/locale/da_DK/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/de_DE/LC_MESSAGES/django.mo | Bin 8498 -> 8429 bytes vibes_auth/locale/de_DE/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/en_GB/LC_MESSAGES/django.mo | Bin 7723 -> 7716 bytes vibes_auth/locale/en_GB/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/en_US/LC_MESSAGES/django.mo | Bin 7712 -> 7646 bytes vibes_auth/locale/en_US/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/es_ES/LC_MESSAGES/django.mo | Bin 8269 -> 8197 bytes vibes_auth/locale/es_ES/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo | Bin 8663 -> 8591 bytes vibes_auth/locale/fr_FR/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/hi_IN/LC_MESSAGES/django.po | 66 +- vibes_auth/locale/it_IT/LC_MESSAGES/django.mo | Bin 8253 -> 8186 bytes vibes_auth/locale/it_IT/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo | Bin 9223 -> 9163 bytes vibes_auth/locale/ja_JP/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po | 66 +- vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo | Bin 8150 -> 8084 bytes vibes_auth/locale/nl_NL/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo | Bin 8194 -> 8125 bytes vibes_auth/locale/pl_PL/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo | Bin 8058 -> 7982 bytes vibes_auth/locale/pt_BR/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo | Bin 8360 -> 8292 bytes vibes_auth/locale/ro_RO/LC_MESSAGES/django.po | 71 +- vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo | Bin 10420 -> 10324 bytes vibes_auth/locale/ru_RU/LC_MESSAGES/django.po | 71 +- .../locale/zh_Hans/LC_MESSAGES/django.mo | Bin 7473 -> 7407 bytes .../locale/zh_Hans/LC_MESSAGES/django.po | 71 +- 87 files changed, 7432 insertions(+), 7022 deletions(-) diff --git a/blog/locale/ar_AR/LC_MESSAGES/django.po b/blog/locale/ar_AR/LC_MESSAGES/django.po index 496c6e77..117960fc 100644 --- a/blog/locale/ar_AR/LC_MESSAGES/django.po +++ b/blog/locale/ar_AR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(لا يوجد محتوى بعد)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "تم تقديمه بتنسيق HTML" @@ -25,47 +25,47 @@ msgstr "تم تقديمه بتنسيق HTML" msgid "blog" msgstr "المدونة" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "عنوان المنشور" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "العنوان" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "المنشور" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "المنشورات" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "يجب توفير ملف ترميز أو محتوى ترميز مخفض - متنافيان" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "معرّف العلامة الداخلي لعلامة المنشور" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "اسم العلامة" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "اسم سهل الاستخدام لعلامة المنشور" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "اسم عرض العلامة" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "علامة المشاركة" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "علامات المشاركة" diff --git a/blog/locale/cs_CZ/LC_MESSAGES/django.po b/blog/locale/cs_CZ/LC_MESSAGES/django.po index e20573b5..b8cfc299 100644 --- a/blog/locale/cs_CZ/LC_MESSAGES/django.po +++ b/blog/locale/cs_CZ/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(zatím bez obsahu)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Vykreslené HTML" @@ -25,49 +25,49 @@ msgstr "Vykreslené HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Název příspěvku" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Název" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Příspěvek" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Příspěvky" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "musí být poskytnut soubor markdown nebo obsah markdown - vzájemně se " "vylučují." -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "interní identifikátor tagu pro tag příspěvku" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Název štítku" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Uživatelsky přívětivý název pro značku příspěvku" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Označení příspěvku" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Štítky příspěvků" diff --git a/blog/locale/da_DK/LC_MESSAGES/django.po b/blog/locale/da_DK/LC_MESSAGES/django.po index 5490c4f9..bb7b633f 100644 --- a/blog/locale/da_DK/LC_MESSAGES/django.po +++ b/blog/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(intet indhold endnu)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Rendered HTML" @@ -25,48 +25,48 @@ msgstr "Rendered HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Indlæggets titel" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Titel" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Indlæg" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Indlæg" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "en markdown-fil eller markdown-indhold skal leveres - gensidigt udelukkende" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "intern tag-identifikator for indlægs-tagget" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Tag-navn" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Brugervenligt navn til posttagget" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Navn på tag-visning" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Tag til indlæg" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Tags til indlæg" diff --git a/blog/locale/de_DE/LC_MESSAGES/django.po b/blog/locale/de_DE/LC_MESSAGES/django.po index 236f66b6..9fdedd49 100644 --- a/blog/locale/de_DE/LC_MESSAGES/django.po +++ b/blog/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(noch kein Inhalt)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Gerendertes HTML" @@ -25,49 +25,49 @@ msgstr "Gerendertes HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Titel des Beitrags" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Titel" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Beitrag" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Beiträge" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "eine Markdown-Datei oder ein Markdown-Inhalt muss bereitgestellt werden - " "beide schließen sich gegenseitig aus" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "interner Tag-Bezeichner für den Post-Tag" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Tag name" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Benutzerfreundlicher Name für das Post-Tag" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Tag-Anzeigename" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Tag eintragen" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Tags eintragen" diff --git a/blog/locale/en_GB/LC_MESSAGES/django.po b/blog/locale/en_GB/LC_MESSAGES/django.po index 29bbbf96..52668025 100644 --- a/blog/locale/en_GB/LC_MESSAGES/django.po +++ b/blog/locale/en_GB/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,11 +18,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(no content yet)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Rendered HTML" @@ -30,48 +30,48 @@ msgstr "Rendered HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Post's title" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Title" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Post" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Posts" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "a markdown file or markdown content must be provided - mutually exclusive" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "internal tag identifier for the post tag" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Tag name" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "User-friendly name for the post tag" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Tag display name" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Post tag" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Post tags" diff --git a/blog/locale/en_US/LC_MESSAGES/django.po b/blog/locale/en_US/LC_MESSAGES/django.po index 3b713c8d..4edab971 100644 --- a/blog/locale/en_US/LC_MESSAGES/django.po +++ b/blog/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(no content yet)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Rendered HTML" @@ -25,48 +25,48 @@ msgstr "Rendered HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Post's title" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Title" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Post" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Posts" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "a markdown file or markdown content must be provided - mutually exclusive" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "internal tag identifier for the post tag" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Tag name" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "User-friendly name for the post tag" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Tag display name" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Post tag" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Post tags" diff --git a/blog/locale/es_ES/LC_MESSAGES/django.po b/blog/locale/es_ES/LC_MESSAGES/django.po index 259d3c35..459edb86 100644 --- a/blog/locale/es_ES/LC_MESSAGES/django.po +++ b/blog/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(sin contenido aún)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "HTML renderizado" @@ -25,49 +25,49 @@ msgstr "HTML renderizado" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Título del mensaje" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Título" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Publicar en" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Puestos" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "se debe proporcionar un archivo markdown o contenido markdown - mutuamente " "excluyentes" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "identificador interno de la etiqueta post" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Nombre de la etiqueta" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Nombre fácil de usar para la etiqueta de la entrada" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Etiqueta postal" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Etiquetas" diff --git a/blog/locale/fr_FR/LC_MESSAGES/django.po b/blog/locale/fr_FR/LC_MESSAGES/django.po index 6c962a73..de5d305e 100644 --- a/blog/locale/fr_FR/LC_MESSAGES/django.po +++ b/blog/locale/fr_FR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(pas encore de contenu)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "HTML rendu" @@ -25,49 +25,49 @@ msgstr "HTML rendu" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Titre du message" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Titre" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Poste" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Postes" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "un fichier markdown ou un contenu markdown doit être fourni - ils s'excluent " "mutuellement" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "identifiant interne de la balise post" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Nom du jour" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Nom convivial pour la balise post" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Tag de poste" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Tags de la poste" diff --git a/blog/locale/hi_IN/LC_MESSAGES/django.po b/blog/locale/hi_IN/LC_MESSAGES/django.po index fa93d75f..f8014342 100644 --- a/blog/locale/hi_IN/LC_MESSAGES/django.po +++ b/blog/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "" @@ -29,47 +29,47 @@ msgstr "" msgid "blog" msgstr "" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "" diff --git a/blog/locale/it_IT/LC_MESSAGES/django.po b/blog/locale/it_IT/LC_MESSAGES/django.po index 5ffb4d12..d4d69939 100644 --- a/blog/locale/it_IT/LC_MESSAGES/django.po +++ b/blog/locale/it_IT/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(ancora senza contenuti)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "HTML renderizzato" @@ -25,49 +25,49 @@ msgstr "HTML renderizzato" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Titolo del post" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Titolo" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Posta" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Messaggi" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "deve essere fornito un file markdown o un contenuto markdown - si escludono " "a vicenda" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "identificatore interno del tag post" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Nome del tag" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Nome intuitivo per il tag del post" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Nome del tag" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Post tag" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Tag dei post" diff --git a/blog/locale/ja_JP/LC_MESSAGES/django.po b/blog/locale/ja_JP/LC_MESSAGES/django.po index 747ad3a7..5fc11227 100644 --- a/blog/locale/ja_JP/LC_MESSAGES/django.po +++ b/blog/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(内容はまだありません)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "レンダリングされたHTML" @@ -25,49 +25,49 @@ msgstr "レンダリングされたHTML" msgid "blog" msgstr "ブログ" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "投稿タイトル" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "タイトル" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "ポスト" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "投稿" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "マークダウン・ファイルまたはマークダウン・コンテンツを提供しなければならな" "い。" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "投稿タグの内部タグ識別子" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "タグ名" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "投稿タグのユーザーフレンドリーな名前" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "タグ表示名" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "投稿タグ" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "投稿タグ" diff --git a/blog/locale/kk_KZ/LC_MESSAGES/django.po b/blog/locale/kk_KZ/LC_MESSAGES/django.po index fa93d75f..f8014342 100644 --- a/blog/locale/kk_KZ/LC_MESSAGES/django.po +++ b/blog/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "" @@ -29,47 +29,47 @@ msgstr "" msgid "blog" msgstr "" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "" diff --git a/blog/locale/nl_NL/LC_MESSAGES/django.po b/blog/locale/nl_NL/LC_MESSAGES/django.po index 3b47fb8e..455dde77 100644 --- a/blog/locale/nl_NL/LC_MESSAGES/django.po +++ b/blog/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(nog geen inhoud)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "HTML weergeven" @@ -25,49 +25,49 @@ msgstr "HTML weergeven" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Titel van de post" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Titel" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Plaats" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Berichten" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "er moet een markdown-bestand of markdown-inhoud worden geleverd - wederzijds " "exclusief" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "interne tagidentifier voor de posttag" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Tag naam" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Gebruiksvriendelijke naam voor de posttag" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Tag weergavenaam" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Post tag" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Post tags" diff --git a/blog/locale/pl_PL/LC_MESSAGES/django.po b/blog/locale/pl_PL/LC_MESSAGES/django.po index 63d822b9..0ca81278 100644 --- a/blog/locale/pl_PL/LC_MESSAGES/django.po +++ b/blog/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(brak treści)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Renderowany HTML" @@ -25,49 +25,49 @@ msgstr "Renderowany HTML" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Tytuł postu" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Tytuł" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Post" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Posty" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "należy dostarczyć plik markdown lub zawartość markdown - wzajemnie się " "wykluczające" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "wewnętrzny identyfikator tagu posta" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Nazwa tagu" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Przyjazna dla użytkownika nazwa tagu posta" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Tag posta" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Tagi postów" diff --git a/blog/locale/pt_BR/LC_MESSAGES/django.po b/blog/locale/pt_BR/LC_MESSAGES/django.po index 63b486dd..8688e26b 100644 --- a/blog/locale/pt_BR/LC_MESSAGES/django.po +++ b/blog/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(ainda não há conteúdo)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "HTML renderizado" @@ -25,48 +25,48 @@ msgstr "HTML renderizado" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Título da postagem" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Título" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Postar" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Publicações" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "um arquivo ou conteúdo de markdown deve ser fornecido - mutuamente exclusivo" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "identificador de tag interno para a tag de postagem" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Nome da etiqueta" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Nome de fácil utilização para a tag de postagem" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Nome de exibição da tag" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Etiqueta de postagem" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Tags de postagem" diff --git a/blog/locale/ro_RO/LC_MESSAGES/django.po b/blog/locale/ro_RO/LC_MESSAGES/django.po index 12126da3..5f457597 100644 --- a/blog/locale/ro_RO/LC_MESSAGES/django.po +++ b/blog/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(fără conținut încă)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "HTML redat" @@ -25,49 +25,49 @@ msgstr "HTML redat" msgid "blog" msgstr "Blog" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Titlul postului" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Titlul" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Post" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Mesaje" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "trebuie furnizat un fișier markdown sau conținut markdown - se exclud " "reciproc" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "identificator intern de etichetă pentru eticheta postului" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Nume etichetă" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Nume ușor de utilizat pentru eticheta postului" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Nume afișare etichetă" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Etichetă post" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Etichete poștale" diff --git a/blog/locale/ru_RU/LC_MESSAGES/django.po b/blog/locale/ru_RU/LC_MESSAGES/django.po index 383cebfe..0f32040a 100644 --- a/blog/locale/ru_RU/LC_MESSAGES/django.po +++ b/blog/locale/ru_RU/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(пока без содержания)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "Рендеринг HTML" @@ -25,49 +25,49 @@ msgstr "Рендеринг HTML" msgid "blog" msgstr "Блог" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "Заголовок сообщения" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "Название" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "Пост" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "Посты" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "" "необходимо предоставить файл разметки или содержимое разметки - " "взаимоисключающие варианты" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "внутренний идентификатор тега для тега post" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "Название тега" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "Удобное для пользователя название тега поста" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "Отображаемое имя тега" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "Тэг поста" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "Тэги постов" diff --git a/blog/locale/zh_Hans/LC_MESSAGES/django.po b/blog/locale/zh_Hans/LC_MESSAGES/django.po index 7be80797..3df942a1 100644 --- a/blog/locale/zh_Hans/LC_MESSAGES/django.po +++ b/blog/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-29 12:32+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -13,11 +13,11 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: blog/admin.py:33 +#: blog/admin.py:37 msgid "(no content yet)" msgstr "(暂无内容)" -#: blog/admin.py:36 +#: blog/admin.py:40 msgid "rendered HTML" msgstr "渲染的 HTML" @@ -25,47 +25,47 @@ msgstr "渲染的 HTML" msgid "blog" msgstr "博客" -#: blog/models.py:16 +#: blog/models.py:15 msgid "post title" msgstr "帖子标题" -#: blog/models.py:17 +#: blog/models.py:15 msgid "title" msgstr "标题" -#: blog/models.py:64 +#: blog/models.py:62 msgid "post" msgstr "职位" -#: blog/models.py:65 +#: blog/models.py:63 msgid "posts" msgstr "职位" -#: blog/models.py:69 +#: blog/models.py:67 msgid "" "a markdown file or markdown content must be provided - mutually exclusive" msgstr "必须提供标记符文件或标记符内容 - 相互排斥" -#: blog/models.py:80 +#: blog/models.py:78 msgid "internal tag identifier for the post tag" msgstr "职位标签的内部标签标识符" -#: blog/models.py:81 +#: blog/models.py:79 msgid "tag name" msgstr "标签名称" -#: blog/models.py:85 +#: blog/models.py:83 msgid "user-friendly name for the post tag" msgstr "方便用户使用的帖子标签名称" -#: blog/models.py:86 +#: blog/models.py:84 msgid "tag display name" msgstr "标签显示名称" -#: blog/models.py:94 +#: blog/models.py:92 msgid "post tag" msgstr "职位标签" -#: blog/models.py:95 +#: blog/models.py:93 msgid "post tags" msgstr "帖子标签" diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index 959eaf9600ae46f03c0cdf6de12eb49a7fc40fa5..37ce016ec93e2a0b6bd0d2c1f099b0c750111a58 100644 GIT binary patch delta 7751 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,8 +27,7 @@ msgstr "نشط" #: core/abstract.py:20 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 "" "إذا تم تعيينه على خطأ، لا يمكن للمستخدمين رؤية هذا الكائن دون الحاجة إلى إذن" @@ -48,22 +47,22 @@ msgstr "تم التعديل" msgid "when the object was last modified" msgstr "متى تم تحرير الكائن آخر مرة" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "تنشيط المحدد %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "إلغاء تنشيط %(verbose_name_plural)s المحددة" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "قيمة السمة" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "قيم السمات" @@ -76,19 +75,19 @@ msgstr "الاسم" msgid "image" msgstr "الصورة" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "الصور" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "المخزون" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "الأسهم" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -96,35 +95,31 @@ msgstr "الأسهم" msgid "price" msgstr "السعر" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "تصنيف المنتج" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "معلومات أساسية" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "تواريخ مهمة" -#: core/admin.py:218 -msgid "translations" -msgstr "الترجمات" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "طلب المنتج" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "اطلب المنتجات" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "هل الأعمال" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "التكوين" @@ -186,33 +181,34 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" "تطبيق مفتاح فقط لقراءة البيانات المسموح بها من ذاكرة التخزين المؤقت.\n" -"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين المؤقت." +"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين " +"المؤقت." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "الحصول على معلمات التطبيق القابلة للكشف" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "إرسال رسالة إلى فريق الدعم" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "طلب عنوان URL مرتبط بـ CORSed. مسموح بـ https فقط." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "نقطة نهاية بحث عالمية للاستعلام عبر جداول المشروع" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "شراء طلب شراء كشركة" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -241,8 +237,7 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" #: core/docs/drf/viewsets.py:57 -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 "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" #: core/docs/drf/viewsets.py:64 @@ -290,8 +285,7 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" #: core/docs/drf/viewsets.py:111 -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 "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" #: core/docs/drf/viewsets.py:118 @@ -363,236 +357,258 @@ msgstr "" "ينهي أمر الشراء. إذا تم استخدام \"فرض_الرصيد\"، يتم إكمال عملية الشراء " "باستخدام رصيد المستخدم؛ إذا تم استخدام \"فرض_الدفع\"، يتم بدء المعاملة." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "شراء طلب شراء بدون إنشاء حساب" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "إنهاء طلب الشراء لمستخدم غير مسجل." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "يضيف منتجًا إلى طلب باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +msgstr "" +"يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "سرد جميع السمات (عرض بسيط)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "بالنسبة للمستخدمين من غير الموظفين، يتم إرجاع قوائم الرغبات الخاصة بهم فقط." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "استرداد سمة واحدة (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "إنشاء سمة" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "لا يعمل مع المستخدمين من غير الموظفين." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "حذف سمة" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "إعادة كتابة سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "إعادة كتابة بعض حقول سمة موجودة تحفظ غير القابلة للتعديل" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "إضافة منتج إلى الطلب" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "يضيف منتجًا إلى قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "إزالة منتج من قائمة الرغبات" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "يزيل منتجًا من قائمة أمنيات باستخدام 'product_uid' المتوفرة" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "إضافة العديد من المنتجات إلى قائمة الرغبات" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "يضيف العديد من المنتجات إلى قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "إزالة منتج من الطلب" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "يزيل العديد من المنتجات من قائمة الرغبات باستخدام 'product_uids' المتوفرة" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "قائمة بجميع المنتجات (عرض بسيط)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(بالضبط) UUID المنتج" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(أيقونات) اسم المنتج" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(قائمة) أسماء الفئات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(بالضبط) معرّف الفئة UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(قائمة) أسماء العلامات، غير حساسة لحالة الأحرف" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) الحد الأدنى لسعر السهم" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) الحد الأقصى لسعر السهم" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(بالضبط) المنتجات النشطة فقط" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(أيكساكت) اسم العلامة التجارية" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(زط) الحد الأدنى لكمية المخزون" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(بالضبط) سبيكة المنتج" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(بالضبط) الرقمية مقابل المادية" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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، تصنيف، اسم، سبيكة، إنشاء، تعديل، سعر، عشوائي" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "استرداد منتج واحد (عرض تفصيلي)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "معرف المنتج UUID أو سبيكة المنتج" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "إنشاء منتج" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "إعادة كتابة منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "تحديث بعض حقول منتج موجود، مع الحفاظ على الحقول غير القابلة للتحرير" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "حذف منتج" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "قائمة بجميع العناوين" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "استرجاع عنوان واحد" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "إنشاء عنوان جديد" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "حذف عنوان" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "تحديث عنوان كامل" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "تحديث جزئي للعنوان" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "إدخال عنوان الإكمال التلقائي" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "لم يتم توفير مصطلح بحث." @@ -627,7 +643,7 @@ msgid "add a product to the order" msgstr "إضافة منتج إلى الطلب" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "الطلب {order_uuid} غير موجود" @@ -644,65 +660,66 @@ msgstr "إزالة جميع المنتجات من الطلب" msgid "buy an order" msgstr "شراء طلبية" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "يرجى تقديم إما Order_uuid أو order_uid_hr_hr_id - متنافيان!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "جاء نوع خاطئ من طريقة order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "إضافة منتج إلى الطلب" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "قائمة الأمنيات {wishlist_uuid} غير موجودة" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "إزالة منتج من الطلب" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "شراء طلبية" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "سلسلة العنوان الأصلي المقدمة من المستخدم" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "يجب أن يكون الحد بين 1 و10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - يعمل مثل السحر" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "السمات" @@ -715,11 +732,11 @@ msgid "groups of attributes" msgstr "مجموعات السمات" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "الفئات" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "العلامات التجارية" @@ -727,7 +744,7 @@ msgstr "العلامات التجارية" msgid "category image url" msgstr "الفئات" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "النسبة المئوية للترميز" @@ -737,53 +754,52 @@ msgid "which attributes and values can be used for filtering this category." msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة." #: core/graphene/object_types.py:114 -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 "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "البائعون" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "خط العرض (الإحداثي Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "خط الطول (الإحداثي X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "كيفية" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "قيمة التصنيف من 1 إلى 10، شاملة، أو 0 إذا لم يتم تعيينها." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "يمثل ملاحظات من المستخدم." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "الإشعارات" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "تحميل الرابط الخاص بمنتج الطلب هذا إن أمكن" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "قائمة بطلب المنتجات بهذا الترتيب" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "عنوان إرسال الفواتير" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -791,47 +807,47 @@ msgstr "" "عنوان الشحن لهذا الطلب، اترك العنوان فارغًا إذا كان هو نفسه عنوان إرسال " "الفواتير أو إذا لم يكن منطبقًا" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "السعر الإجمالي لهذا الطلب" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "إجمالي كمية المنتجات بالترتيب" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "هل جميع المنتجات في الطلب رقمي" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "الطلبات" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "رابط الصورة" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "صور المنتج" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "الفئة" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "الملاحظات" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "العلامة التجارية" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "مجموعات السمات" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -839,31 +855,31 @@ msgstr "مجموعات السمات" msgid "quantity" msgstr "الكمية" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "عدد الملاحظات" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "المنتجات" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "الرموز الترويجية" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "المنتجات المعروضة للبيع" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "العروض الترويجية" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "البائع" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -871,78 +887,78 @@ msgstr "البائع" msgid "product" msgstr "المنتج" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "المنتجات المفضلة" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "قوائم التمنيات" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "اسم المشروع" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "البريد الإلكتروني للشركة" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "اسم الشركة" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "عنوان الشركة" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "رقم هاتف الشركة" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" -" المضيف" +"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم " +"المضيف" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "مستخدم البريد الإلكتروني المضيف" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "الحد الأقصى لمبلغ السداد" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "الحد الأدنى لمبلغ السداد" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "التكوين" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "رمز اللغة" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "اسم اللغة" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "علم اللغة، إذا كان موجوداً :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "الحصول على قائمة باللغات المدعومة" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "نتائج البحث عن المنتجات" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "نتائج البحث عن المنتجات" @@ -1023,8 +1039,7 @@ msgstr "سمة هذه القيمة" msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "المنتج المرتبط" @@ -1068,645 +1083,643 @@ msgstr "إضافة وصف تفصيلي لهذه الفئة" msgid "category description" msgstr "وصف الفئة" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "اسم هذه العلامة التجارية" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "اسم العلامة التجارية" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "تحميل شعار يمثل هذه العلامة التجارية" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "صورة العلامة التجارية الصغيرة" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "رفع شعار كبير يمثل هذه العلامة التجارية" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "صورة كبيرة للعلامة التجارية" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "إضافة وصف تفصيلي للعلامة التجارية" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "وصف العلامة التجارية" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "الفئات الاختيارية التي ترتبط بها هذه العلامة التجارية" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "الفئات" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "الفئة التي ينتمي إليها هذا المنتج" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "ربط هذا المنتج اختياريًا بعلامة تجارية" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "العلامات التي تساعد في وصف أو تجميع هذا المنتج" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "علامات المنتج" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "يشير إلى ما إذا كان هذا المنتج يتم تسليمه رقميًا أم لا" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "هل المنتج رقمي" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "توفير اسم تعريفي واضح للمنتج" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "اسم المنتج" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "إضافة وصف تفصيلي للمنتج" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "وصف المنتج" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "رقم الجزء لهذا المنتج" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "رقم الجزء" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "تخزين بيانات الاعتماد ونقاط النهاية المطلوبة لاتصالات واجهة برمجة التطبيقات " "الخاصة بالمورّد" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "معلومات المصادقة" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "تحديد الترميز للمنتجات المسترجعة من هذا البائع" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "نسبة هامش الربح للبائع" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "اسم هذا البائع" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "اسم البائع" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "التعليقات المقدمة من المستخدمين حول تجربتهم مع المنتج" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "تعليقات على الملاحظات" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "منتجات الطلبات ذات الصلة" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "التصنيف المعين من قبل المستخدم للمنتج" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "تصنيف المنتج" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "الملاحظات" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "عنوان إرسال الفواتير المستخدم لهذا الطلب" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "الرمز الترويجي الاختياري المطبق على هذا الطلب" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "الرمز الترويجي المطبق" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "عنوان الشحن المستخدم لهذا الطلب" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "عنوان الشحن" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "الحالة الحالية للطلب في دورة حياته" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "حالة الطلب" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "بنية JSON للإشعارات التي سيتم عرضها للمستخدمين، في واجهة مستخدم المشرف، يتم " "استخدام عرض الجدول" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "تمثيل JSON لسمات الطلب لهذا الطلب" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "المستخدم الذي قدم الطلب" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "المستخدم" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "الطابع الزمني عند الانتهاء من الطلب" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "وقت الشراء" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "معرّف يمكن قراءته بواسطة البشر للطلب" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "معرّف يمكن قراءته من قبل البشر" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "الطلب" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "يجب أن يكون لدى المستخدم طلب واحد فقط معلق في كل مرة!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "لا يمكنك إضافة منتجات إلى طلب غير معلق إلى طلب غير معلق" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} غير موجود: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "لا يمكنك إزالة المنتجات من طلب غير معلق من طلب غير معلق" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} غير موجود مع الاستعلام <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "الرمز الترويجي غير موجود" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "يمكنك فقط شراء المنتجات المادية مع تحديد عنوان الشحن فقط!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "العنوان غير موجود" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "لا يمكنك الشراء في هذه اللحظة، يرجى المحاولة مرة أخرى بعد بضع دقائق." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "قيمة القوة غير صالحة" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "لا يمكنك شراء طلبية فارغة!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "عدم كفاية الأموال لإكمال الطلب" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" -" الإلكتروني للعميل، رقم هاتف العميل" +"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد " +"الإلكتروني للعميل، رقم هاتف العميل" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "طريقة الدفع غير صالحة" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "السعر الذي دفعه العميل لهذا المنتج وقت الشراء" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "سعر الشراء وقت الطلب" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "تعليقات داخلية للمسؤولين حول هذا المنتج المطلوب" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "التعليقات الداخلية" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "إشعارات المستخدم" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "تمثيل JSON لسمات هذا العنصر" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "سمات المنتج المطلوبة" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "الإشارة إلى الطلب الأصلي الذي يحتوي على هذا المنتج" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "ترتيب الوالدين" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "المنتج المحدد المرتبط بخط الطلب هذا" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "كمية هذا المنتج المحدد في الطلب" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "كمية المنتج" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "الحالة الحالية لهذا المنتج بالترتيب" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "حالة خط الإنتاج" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "معرّف العلامة الداخلي لعلامة المنتج" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "اسم العلامة" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "اسم سهل الاستخدام لعلامة المنتج" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "اسم عرض العلامة" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "علامة المنتج" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "توفير نص بديل للصورة لإمكانية الوصول" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "النص البديل للصورة" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "تحميل ملف الصورة لهذا المنتج" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "صورة المنتج" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "يحدد الترتيب الذي يتم عرض الصور به" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "أولوية العرض" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "المنتج الذي تمثله هذه الصورة" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "صور المنتج" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "الرمز الفريد الذي يستخدمه المستخدم لاسترداد قيمة الخصم" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "معرّف الرمز الترويجي" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "مبلغ الخصم الثابت المطبق في حالة عدم استخدام النسبة المئوية" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "مبلغ الخصم الثابت" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "النسبة المئوية للخصم المطبق في حالة عدم استخدام مبلغ ثابت" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "النسبة المئوية للخصم" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "الطابع الزمني عند انتهاء صلاحية الرمز الترويجي" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "وقت انتهاء الصلاحية" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "الطابع الزمني الذي يكون هذا الرمز الترويجي صالحاً منه" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "وقت بدء الصلاحية" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" -msgstr "" -"الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" +msgstr "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "الطابع الزمني للاستخدام" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "المستخدم المعين لهذا الرمز الترويجي إن أمكن" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "المستخدم المعين" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "الرمز الترويجي" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "الرموز الترويجية" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" -" أو لا هذا ولا ذاك." +"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين " +"أو لا هذا ولا ذاك." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "تم استخدام الرمز الترويجي بالفعل" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "نوع الخصم غير صالح للرمز الترويجي {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "النسبة المئوية للخصم على المنتجات المختارة" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "نسبة الخصم" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "تقديم اسم فريد لهذا العرض الترويجي" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "اسم الترقية" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "وصف الترقية" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "حدد المنتجات المشمولة في هذا العرض الترويجي" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "المنتجات المشمولة" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "الترقية" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "البائع الذي يورد هذا المنتج المخزون" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "البائع المرتبط" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "السعر النهائي للعميل بعد هوامش الربح" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "سعر البيع" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "المنتج المرتبط بإدخال المخزون هذا" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "السعر المدفوع للبائع مقابل هذا المنتج" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "سعر الشراء من البائع" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "الكمية المتوفرة من المنتج في المخزون" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "الكمية في المخزون" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU المعين من قبل البائع لتحديد المنتج" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "وحدة تخزين البائع" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "الملف الرقمي المرتبط بهذا المخزون إن أمكن" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "ملف رقمي" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "إدخالات المخزون" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "المنتجات التي حددها المستخدم على أنها مطلوبة" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "المستخدم الذي يمتلك قائمة الرغبات هذه" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "مالك قائمة الرغبات" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "قائمة الرغبات" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "تنزيل" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "التنزيلات" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "لا يمكنك تنزيل أصل رقمي لطلب غير مكتمل" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "فيلم وثائقي" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "الأفلام الوثائقية" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "لم يتم حلها" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "الشارع" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "المنطقة" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "المدينة" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "المنطقة" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "الرمز البريدي" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "البلد" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "نقطة تحديد الموقع الجغرافي(خط الطول، خط العرض)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "استجابة JSON كاملة من أداة التشفير الجغرافي لهذا العنوان" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "استجابة JSON مخزّنة من خدمة الترميز الجغرافي" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "العنوان" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "العناوين" @@ -1775,11 +1788,11 @@ msgstr "مرحبًا %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" -"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل." -" فيما يلي تفاصيل طلبك:" +"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل. " +"فيما يلي تفاصيل طلبك:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1858,8 +1871,8 @@ msgstr "المفتاح" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "شكراً على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" #: core/templates/shipped_order_created_email.html:109 @@ -1915,7 +1928,7 @@ msgstr "{config.PROJECT_NAME} | تم تسليم الطلب" msgid "you do not have permission to perform this action." msgstr "ليس لديك إذن لتنفيذ هذا الإجراء." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "يجب تكوين معلمة NOMINATIM_URL!" @@ -1936,7 +1949,10 @@ msgstr "يمكنك تنزيل الأصل الرقمي مرة واحدة فقط" msgid "favicon not found" msgstr "الرمز المفضل غير موجود" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "خطأ في الترميز الجغرافي: {e}" + +#~ msgid "translations" +#~ msgstr "الترجمات" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index 98396549ce2b70cb327a91f161cf2fd3855c641c..7f2d03ac230f54733554480cbca565638e0b8533 100644 GIT binary patch delta 7751 zcmXxp3w+PjAII_YGi<|b!)EvWwi&j$>|)8SA(xPtORG>uVs7P<>RPq+9n^DQq3(xe8$;0~BVRH7 zF%PF>7;bj=pT~C8PoO4Za`ZjVn6?xWs1L(roaU@R4e&f_0tYb`Kg3Y{-qkN*IQ1s< zeiO!G5l+B9_zWrn7qA)ri4S6Qdt)*g-z=lh0CyqLH~Uc`KZg3krx=YFQ3KWMU`!-7 zK}{$Lqp$!q(LV0}XxBc~ITssozY;Z}C(sL0c##58F~{8lS1_M?{f;)2ol*D8Py??* zMPMsxFRM`tco!q_Bx=IvQ3KYxdc9m@8d7h85tx`u{MA7g4NdSy)SlgnTIo1!j8jn) zxZmC1g6g>1)%T*d>UC_2CsC0*hZ?9BwZ#ocj35TFKK9BZ{#r>t8Z`5pP@%sa^~Kq! ziIt-USdLo3R(F3ps-yj=ehy+Z9z{L>F-GC{sF44OIvvdjuWaX0(7^prGrk$sQ5kCB z8A!gEhmkxp+fjS|k*oiJdOo4Rm}@Z|yWl8{#?`0^Y;*N}*qnL|Y69L_SNIh*k!GFj zMAA`PP>2e35i*t;h?>}3EW{S*b`TxCUgR|k}px``x0sklCH7s8K@2mUHv*#e?u_~Z^O>G0H47FsOQJg7^Cw) zg#wc^^H5p52NlW#*bOfsGc|cMw#D(Nl`KU~Xb19$If*SXg7`PXOl*PIVh{(Tl5jdI zXBK0$&VMC^!MGW3!ym912XwU)+JMUHD(r_Zp;lOnibQ}}DpFynNW~#RGTEpJk45Fk zVt0Q9YQkI4Q&OFw&=Ets+r8|JvD61)B96oB@L|-zuc7wznDYc`#h)S3H9uo}%<92Q z2}>{pD^L?!j>?UFJ&3;sIO-a{z!d5iQ5{AyY8y;<4n&21rgIf0Q{RKB_yGp-7gUI2 ziflv@FoAkIXMgNZeO!@eli>v#loY#Ap+11>;4M@n-a}33YgD#h#W-x*)2^fqs=W}k zB?FL`s2Pg4qKAsiDO6HM^|JT7dK8p&WvBt}M(t%eDnu($6WWYAb~`Z%51>|b3N_#_ zsQ1Kgs0p|2ZTl%g^3n`JCF3GgKbufn=)FKe9qvJG#R*ih{OGJjt?VyU(lo!`?(HD# zL;V3%vK~Zr7)7H7Nfc}x<2jSc>aM6zk4GKDjhKo%@J>9A*;qj4DdM+d7~`7YmEZpJRKgPO++-QH6bia}KtKn`M z)X{UO2%N@l7(Upx_eFwW?n4sX9CG!*P4;KS0OXZnmbm&GSYO{CVqfh|F@pN_s0bCK z7BqVZ@gGfLAq`FO3sjc=gblF4Q2WKksF25FM+_nd!VGoozH>b`qP+^$Pc=s2>llXr z!S;9>S7Mk~OeRv;fC^d2FuS50)Pqy89j?dLcnsU(52y&WWdAzhaMWHe!ff1udNZCv z^;?VjnUFfd_BRq+QTNIzbf>Tlwc>Nw7%!mq`Z8u<)JWT5CsYK6VK|nfws0wG zQie*V`>{E0Kt*IHYHRkRlJycQIXmBGbLL*umhQtWo&WO`I$`7}`(PiOPrV!!`i5kv zk}VtaaT;EOn^7HogbHc>F?O#zVgmINjKP_x`-@OHvI~>(6neJ=NDd0|Gz`7N4mcUL zvPz7@m$4<*pgQ;h)j`-;yEUy*1NO$AI0k#*lc?uD!9#czHSt$V*|HE$St;>XhqZUw zy-l8A2kwnp=>*hXufrTXgxZ?#P&9IpzG_naYt9 zPjvMP)T{VOWP+ZlrjSI#QOv_HQ7edQf9KC0v1u6-mb5_h0hd=F;h64Vy% zMuqwSYGFsQF`llgv;SYY8&@%v8%?L%2Rb;rqB`n_4RA1O3x=b%rVJI4a_3r9)>oqz zR^!^gcK(iyXpg>|i}6ho1!a2&Y>%a=i7dxLQQBcYK6Y5 zZ^IPouVLLWbnRE2Q8S2t6CP+yK^+vJCNcmO;)hTJF2|;L95ukFs7U;TT6wK&Z!*)K z?;vWzB{&dEF%qj$xo`l7;(uqd|3M0Qv+Ujt!z}7kF#^}1CbktdfmfYxIzPr-+P_9k zG;TI8D=a~UIQ(8a;TD)ry)A0uqwrQNy_fipq3|yn3NU_-{VjJe>NG6G4!9jh;AzyG zu;YEU;eG~?98Y&4ZQ9sO{!{+!Rj>p4Tf|>VQ=Xw;B?I%$koy8$|5%tBM57_%7 zFpByZY=+aZ5a(eL?nOnc7Gto%KkRQziKufw9+g{5u_eBWap=A89{3J#prOTsHv7k* zLSBXn<^33o^RYXw$87uvAH{kP*;BF@HL=H0$LuI-&)-K)@G>T0{ke4u^h_Fs&NLJ{ zr=j-r8O*~Eona5#_O8w;s1R>NC1Dln)a-G7h{LI0Mn!laTP=s9B0U-#>gWG-F0D+t zppKThdKK#U?L$T2JSub-QSXDWN9Ys)c; zzRVg5n$b2j;C|Ge)u2N4KU65A%58^9m`r^TYOl+%FM6m29C4mTh5ScM#Xp?M^X&q9 zVBPueLqT6G#sPR2>KML+{qZ!8!1M+7g>oOJQ(uGHg8is>{y|jE97QeYBq~|IMy>oR z>OBy>&_*C_A@Nrz3Te<61~^AKr=j-DLv^$WHSh*hk{v{K_zUX$^~uBxj72@)6%%nV z) ze=I6@=A$N1iPzv()WXkr6#7#55sR>JF@Fb$_hLhQ8#T}g)XFY96PDQDh^|AmPj*&1 zU%@QeKg65RRM>Hbpz5nJ8@+QBdQ*s8YTsbPP%nmAs1+~8u6PK$;8j$1cUoqhWHtgE;6?JK%7HqiMmrVz~oC8!R|Fdt{&DBOw-Q2$C1 z4h^v}Mqwr<jBiFzXosG&8rxGpg?clF zuC;H%BGg{bzye(D>ThBP>ffUVPFiQT>Nd=yz6yunQB+RFK4ISr$>^ohkV8SqFbG@V z9PEh|sF1#m#droIu>E?QBi-;$>LXAC?ML` z>EA*(`Jbn?j9*MC#659DkMIejzSWOTZy9*Z&q~jUSxS8@?X9@xb7fKA>6fLac6o); zx3uUpmunGqeabM~l|5X>^#oS|*GTR!@eilxM6agy_h$};E&dJ(%o+#sbk+v%TWJW>!21<=+naVYjt0mXZT$}y0R@Vof s_9wI|NqdrKrqT8m*G9_o@bAwA3j20_+Gw5Q@hOu&WKO{fkIp$6~)M&ktx!XIrMK&vf@ z<8d(FfxU4q_QM0H4BW(UY?DovFd5V6-`PST0FPlPo0X0?fvPtet~rjhH!r?YC!eq`YHU50$Fj+*#}y7b(}onNK`6IQTOL#TYM3f zf&Hkpd=oW+FR(41M-BKpREI%1CJx6y;*O|^X6BH8HBd-JYaEMOvni;QR$(h#fEvIG zd%qFY@S8S%54BVuVjDb<%G`BSM?uU&OB{uM%)u5|o=g5UlaW+t*DwgwAuBdWmqwyA&x%Bf8pDmnn3`n4V@WOEH>w40gaOyc^e|I({Fure~~8s2P8YWY=ldi_b9@BHPP( z7@OlJ)PT03_Qr``cpQaKqcU>|wJH7gnEL}<3fgq@Q5`7OTGpZ(-iaE}UevLB3*+$=YDSk(9k%Fe zz7wrb1HKE@P8qTupcmGoHqA>Ih##Xi z&F83wBl??NI}mk$J!*iPP#ra33jW!89n*+o?ltwjFphXUY5>*f4x{iK1+wQ{M*ipI z3@|gRMy=&0)ROE)HEYrH*?f#z??z=7mn6)qKO z=pZTs-(U}n8)WK7AW3kRBOBiNla0d$o4*yKkWYuR(Z-)(3%y@vKJAGZN<0jep-R+* zmX?wKu@p8?(FU)gcByZO*}YMy7dxO*o{n8H2RR_lcw7I1bvK4k-+*f8O>BoBVle&# zv+*0O#aOqT&m)CBsFXzvH8bjgdT;?|;cmPG&tPY~h00JT*6&W7fLiP4QA=97iujR zqV`M;YEx~%2t0_&$SKqkoknfi@X=UbP#rca^P`T%C)=cuI#o@Ca(J8DTDL(R}dWpp=c={`cW_q{caBd56M z!>(y)oUK@EZNMNN>_zGfs%)tiK=Kd0+ z@uEwiC52n4H42_;ZX{w5aRF)|y--U~X5-1I=c}h<{P}F-D9EQ-p(}jZ8xDd75@55|dgc``pn1!cMGx!1Z#cTekIc9xPDPMvb&_>h@ z_uBX!OeFpcZy!TjA2W;m>xFCzt+5yt4?zuN5-P=Ys19GoHh3A;!A(>q+EketMWX7{ zu^aY64R{U?z(v>=Ponn1r&Z*C2!$W1@Z;dwX6rc48Mify40z z>PtBAantZb3?rV0eq4pxgnLlu{WwP8A8-Pm!wT%{&NGFLsPlRi)zJU23`6Ie7au^~ zpM~wP8pCll7T{LwjUS;h7FlgFmV%|kccISxlc>E_k1^<;p%6>qTl+xp6a0xK&PDD1 zYE;T=P^sL2(YPIZ;_Ikmb{%UlX@NNb8eqi2+o!^Hk|`)PcVl-P zYF&j|)3-4fuUXR;nfeOr3RH>@VI&?wotnQ|ui-G_2$otI)F)p)ieWnc^SN}cSEFWD zi)yIe#z#=c?_*R3nmuV!7m9i>4GS>~Sv6;pjlV$crMSgr?+ij^Vgah36{tZu+bC#F z8&PZjj*U-aXX1+(kL{i^4P>J>V<9HsWQ@WZEWypF34Ce2fl7JnB_=cNtwrc+2BRtH z{8yr0oPqb^64Wt#AGL{Y;Bf4{)O=9ZV+wI2Y6(uGzWHZSd!`9Bp{uCP+G3fRc?{}1 z&}A9c4di1~sxM+9MlUxXkOJ&OJQ+2RdQ8Go_#plhbd0EHn`c-R}i!U@>%8S|fJD^Mvtk9w~EI%6G?GDFkq128Q7rRD(5`hih>R9z{Kuu-@#MRBT0@ zjcHhj?QtBo#cJ$@tFRGIAm1Wq!3NXr|FAFpJ6)bNOE3$wh&NkLVm9&js4rv3=ggOI zENTy|#eCdn;|th@IOKWLaUp7{9>-j4z%pz??Wz1a)<2X&5e4nu{;0h$8C#- z;67ApuVFbh+h{&4!!eflL7a$BpgR0Js=e?{=9AqE70_Wu zm;`P$nCMREnqB_%N0b-$E@_zwKsX^RNeT zy-Q&bh4aYCaPoJUhTq0}h`&a4n6cB${C-plJ=9ts!A!h@evEs;473O}z+sq-^Dz!L zp%3@#AN;(79ddkoyh|NAh5Xu9E%$ltHmzM0s)!RBf@)Or= zF8yDmTfILg$Hc9o)Z9LCT#xVzCf?=wQeu27yttIis5Qjnsqe_Oge#qRuQw_ssj!jK zC2I6r$hDGKzbTku%Py|v+Q^m9HG=!Ay@r&`uxE*W{yj$FMej;VQs`o8hZB9l^@\n" "Language-Team: BRITISH ENGLISH \n" @@ -28,8 +28,7 @@ msgstr "Je aktivní" #: core/abstract.py:20 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í." @@ -50,22 +49,22 @@ msgstr "Upraveno" msgid "when the object was last modified" msgstr "Kdy byl objekt naposledy upraven" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivovat vybrané %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktivovat vybrané %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Hodnota atributu" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Hodnoty atributů" @@ -78,19 +77,19 @@ msgstr "Název" msgid "image" msgstr "Obrázek" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Obrázky" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Zásoby" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -98,35 +97,31 @@ msgstr "Zásoby" msgid "price" msgstr "Cena" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Hodnocení produktu" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Základní informace" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Důležitá data" -#: core/admin.py:218 -msgid "translations" -msgstr "Překlady" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Objednat produkt" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Objednat produkty" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Je podnikání" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Konfigurace" @@ -190,32 +185,32 @@ msgstr "" "Použijte pouze klíč pro čtení povolených dat z mezipaměti.\n" "Pro zápis dat do mezipaměti použijte klíč, data a časový limit s ověřením." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Získat seznam podporovaných jazyků" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Získání vystavitelných parametrů aplikace" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Odeslání zprávy týmu podpory" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Vyžádejte si adresu URL s protokolem CORS. Povoleno pouze https." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Globální koncový bod vyhledávání pro dotazování napříč tabulkami projektu" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Zakoupit objednávku jako firma" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -245,8 +240,7 @@ msgstr "" "Přepsání existující skupiny atributů s uložením neupravitelných položek" #: core/docs/drf/viewsets.py:57 -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" @@ -298,8 +292,7 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Přepsání existující hodnoty atributu uložením neupravitelných položek" #: core/docs/drf/viewsets.py:111 -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" @@ -374,248 +367,267 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí" -" s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " +"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí " +"s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " "transakce." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "zakoupení objednávky bez vytvoření účtu" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "dokončí nákup objednávky pro neregistrovaného uživatele." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" "Přidá produkt do objednávky pomocí zadaného `product_uuid` a `attributes`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" "Odebere produkt z objednávky pomocí zadaného `product_uuid` a `attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Seznam všech atributů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Uživatelům, kteří nejsou zaměstnanci, se vrátí pouze jejich vlastní seznamy " "přání." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Získání jednoho atributu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Vytvoření atributu" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Nefunguje pro uživatele, kteří nejsou zaměstnanci." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Odstranění atributu" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Přepsat existující atribut a uložit neupravitelné položky" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Přepsání některých polí existujícího atributu s uložením neupravitelných " "položek" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Přidání produktu do objednávky" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Přidá produkt do seznamu přání pomocí zadaného `product_uuid`." -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Odstranění produktu ze seznamu přání" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Odebere produkt ze seznamu přání pomocí zadaného `product_uuid`." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Přidání mnoha produktů do seznamu přání" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 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`." -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Odstranění produktu z objednávky" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Odebere mnoho produktů ze seznamu přání pomocí zadaných `product_uuids`." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Seznam všech produktů (jednoduché zobrazení)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(přesně) UUID produktu" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Název produktu" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(seznam) Názvy kategorií, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(přesně) Kategorie UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(seznam) Názvy značek, nerozlišuje velká a malá písmena" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Minimální cena akcií" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maximální cena akcií" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(přesně) Pouze aktivní produkty" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Obchodní značka" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimální skladové množství" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(přesně) Product slug" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(přesně) Digitální vs. fyzické" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Vyhledání jednoho produktu (podrobné zobrazení)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "Identifikátor UUID produktu nebo Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Vytvoření produktu" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Přepsání existujícího produktu se zachováním polí, která nelze editovat" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aktualizace některých polí existujícího produktu se zachováním polí, která " "nelze upravovat." -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Odstranění produktu" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Seznam všech adres" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Získání jedné adresy" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Vytvoření nové adresy" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Odstranění adresy" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Aktualizace celé adresy" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Částečná aktualizace adresy" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Automatické dokončování zadávání adresy" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nebyl zadán žádný vyhledávací termín." @@ -649,7 +661,7 @@ msgid "add a product to the order" msgstr "Přidání produktu do objednávky" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Objednávka {order_uuid} nebyla nalezena" @@ -666,67 +678,68 @@ msgstr "Odstranění všech produktů z objednávky" msgid "buy an order" msgstr "Koupit objednávku" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Zadejte prosím order_uuid nebo order_hr_id - vzájemně se vylučují!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Z metody order.buy() pochází nesprávný typ: {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Přidání produktu do objednávky" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Seznam přání {wishlist_uuid} nebyl nalezen" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Odstranění produktu z objednávky" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Koupit objednávku" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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." -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Původní řetězec adresy zadaný uživatelem" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Limit musí být mezi 1 a 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funguje jako kouzlo" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Atributy" @@ -739,11 +752,11 @@ msgid "groups of attributes" msgstr "Skupiny atributů" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Značky" @@ -751,7 +764,7 @@ msgstr "Značky" msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Procento přirážky" @@ -761,54 +774,52 @@ 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." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Prodejci" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Zeměpisná šířka (souřadnice Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Zeměpisná délka (souřadnice X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Jak na to" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Hodnota hodnocení od 1 do 10 včetně nebo 0, pokud není nastaveno." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Představuje zpětnou vazbu od uživatele." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Oznámení" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Stáhněte si url adresu pro tento objednaný produkt, pokud je to možné" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Seznam objednaných produktů v tomto pořadí" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Fakturační adresa" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -816,47 +827,47 @@ msgstr "" "Dodací adresa pro tuto objednávku, pokud je stejná jako fakturační adresa " "nebo pokud není použitelná, ponechte prázdné." -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Celková cena této objednávky" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Celkové množství objednaných produktů" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Jsou všechny produkty v objednávce digitální" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Objednávky" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Adresa URL obrázku" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Obrázky produktu" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Zpětná vazba" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Značka" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Skupiny atributů" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -864,31 +875,31 @@ msgstr "Skupiny atributů" msgid "quantity" msgstr "Množství" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Počet zpětných vazeb" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Propagační kódy" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Produkty v prodeji" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Propagační akce" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Prodejce" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -896,77 +907,77 @@ msgstr "Prodejce" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Produkty uvedené na seznamu přání" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Seznamy přání" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Název projektu" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "E-mail společnosti" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Název společnosti" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Adresa společnosti" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Telefonní číslo společnosti" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', někdy se musí použít místo hodnoty hostitelského uživatele." -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Uživatel hostitelského e-mailu" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Maximální částka pro platbu" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Minimální částka pro platbu" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Konfigurace" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Kód jazyka" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Název jazyka" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Příznak jazyka, pokud existuje :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Získat seznam podporovaných jazyků" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Výsledky vyhledávání produktů" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Výsledky vyhledávání produktů" @@ -1047,8 +1058,7 @@ msgstr "Atribut této hodnoty" msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Související produkt" @@ -1092,279 +1102,277 @@ msgstr "Přidejte podrobný popis této kategorie" msgid "category description" msgstr "Popis kategorie" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Název této značky" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Název značky" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Nahrát logo reprezentující tuto značku" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Malý obrázek značky" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Nahrát velké logo reprezentující tuto značku" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Velká image značky" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Přidejte podrobný popis značky" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Popis značky" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Volitelné kategorie, se kterými je tato značka spojena" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Kategorie" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Kategorie, do které tento produkt patří" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Volitelně přiřadit tento produkt ke značce" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Značky, které pomáhají popsat nebo seskupit tento produkt" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Štítky produktu" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Označuje, zda je tento produkt dodáván digitálně" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Je produkt digitální" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Uveďte jasný identifikační název výrobku" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Název produktu" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Přidejte podrobný popis produktu" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Popis produktu" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Číslo dílu pro tento produkt" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Číslo dílu" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Ukládá pověření a koncové body potřebné pro komunikaci s rozhraním API " "dodavatele." -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informace o ověřování" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Definice přirážky pro produkty získané od tohoto dodavatele" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Procento přirážky prodejce" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Název tohoto prodejce" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Název prodejce" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Komentáře uživatelů o jejich zkušenostech s produktem" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Zpětná vazba" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Odkazuje na konkrétní produkt v objednávce, kterého se tato zpětná vazba " "týká." -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Související objednávka produktu" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Hodnocení produktu přidělené uživatelem" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Hodnocení produktu" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Zpětná vazba" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Fakturační adresa použitá pro tuto objednávku" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Volitelný promo kód použitý na tuto objednávku" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Použitý promo kód" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Dodací adresa použitá pro tuto objednávku" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Dodací adresa" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Aktuální stav zakázky v jejím životním cyklu" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Stav objednávky" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "JSON struktura oznámení pro zobrazení uživatelům, v uživatelském rozhraní " "administrátora se používá tabulkové zobrazení." -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON reprezentace atributů objednávky pro tuto objednávku" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "Uživatel, který zadal objednávku" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Uživatel" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Časové razítko, kdy byla objednávka dokončena." -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Kupte si čas" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Lidsky čitelný identifikátor objednávky" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "lidsky čitelné ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Objednávka" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!" -#: core/models.py:543 +#: core/models.py:551 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." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Do objednávky nelze přidat neaktivní produkty" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Nelze přidat více produktů, než je dostupné na skladě" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} neexistuje: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "Nelze odebrat produkty z objednávky, která není nevyřízená." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} neexistuje s dotazem <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promo kód neexistuje" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "Fyzické produkty můžete zakoupit pouze se zadanou dodací adresou!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Adresa neexistuje" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "V tuto chvíli nemůžete nakupovat, zkuste to prosím znovu za několik minut." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Neplatná hodnota síly" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Nelze zakoupit prázdnou objednávku!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Nedostatek finančních prostředků na dokončení objednávky" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1372,183 +1380,183 @@ msgstr "" "bez registrace nelze nakupovat, uveďte prosím následující údaje: jméno " "zákazníka, e-mail zákazníka, telefonní číslo zákazníka." -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Neplatný způsob platby" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena, kterou zákazník zaplatil za tento produkt v době nákupu." -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Nákupní cena v době objednávky" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Interní komentáře pro administrátory k tomuto objednanému produktu" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Interní připomínky" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Oznámení uživatele" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON reprezentace atributů této položky" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Objednané atributy produktu" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Odkaz na nadřazenou objednávku, která obsahuje tento produkt" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Objednávka rodičů" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Konkrétní produkt spojený s touto objednávkou" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Množství tohoto konkrétního produktu v objednávce" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Množství produktu" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Aktuální stav tohoto produktu v objednávce" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Stav produktové řady" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Interní identifikátor značky produktu" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Název štítku" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Uživatelsky přívětivý název pro značku produktu" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Zobrazení názvu štítku" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Štítek produktu" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Poskytněte alternativní text k obrázku kvůli přístupnosti." -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Text alt obrázku" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Nahrát soubor s obrázkem tohoto produktu" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Obrázek produktu" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Určuje pořadí, v jakém se obrázky zobrazují." -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Priorita zobrazení" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Výrobek, který tento obrázek představuje" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Obrázky produktů" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Jedinečný kód, který uživatel použije k uplatnění slevy." -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Identifikátor propagačního kódu" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Pevná výše slevy, pokud není použito procento" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Pevná výše slevy" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentuální sleva uplatněná v případě nevyužití pevné částky" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Procentuální sleva" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Časové razítko ukončení platnosti promokódu" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Doba ukončení platnosti" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Časové razítko, od kterého je tento promokód platný" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Čas zahájení platnosti" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Časové razítko použití promokódu, prázdné, pokud ještě nebyl použit." -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Časové razítko použití" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Uživatel přiřazený k tomuto promokódu, je-li to relevantní" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Přiřazený uživatel" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Propagační kód" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Propagační kódy" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1556,184 +1564,184 @@ msgstr "" "Měl by být definován pouze jeden typ slevy (částka nebo procento), nikoli " "však oba typy slev nebo žádný z nich." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Promo kód byl již použit" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Neplatný typ slevy pro promocode {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Procentuální sleva na vybrané produkty" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Procento slevy" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Uveďte jedinečný název této propagační akce" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Název akce" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Popis propagace" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Vyberte, které produkty jsou zahrnuty do této akce" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Zahrnuté produkty" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Propagace" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Prodejce dodávající tento výrobek na sklad" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Přidružený prodejce" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Konečná cena pro zákazníka po přirážkách" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Prodejní cena" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Produkt spojený s touto skladovou položkou" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Cena zaplacená prodejci za tento výrobek" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Kupní cena prodejce" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Dostupné množství produktu na skladě" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Množství na skladě" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU přidělený prodejcem pro identifikaci výrobku" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU prodejce" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Digitální soubor spojený s touto zásobou, je-li to vhodné" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Digitální soubor" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Zápisy do zásob" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Výrobky, které uživatel označil jako požadované" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Uživatel, který vlastní tento seznam přání" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Majitel seznamu přání" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Seznam přání" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Stáhnout" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Ke stažení na" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "Digitální aktivum pro nedokončenou objednávku nelze stáhnout." -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Dokumentární film" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Dokumentární filmy" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Nevyřešené" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Ulice" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Okres" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Město" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Region" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Poštovní směrovací číslo" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Země" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokace Bod(Zeměpisná délka, Zeměpisná šířka)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Úplná odpověď JSON z geokodéru pro tuto adresu" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Uložená odpověď JSON ze služby geokódování" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adresa" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adresy" @@ -1802,8 +1810,8 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku #%(order.pk)s! S potěšením Vám oznamujeme, " "že jsme Vaši objednávku převzali do práce. Níže jsou uvedeny údaje o vaší " @@ -1889,8 +1897,8 @@ msgstr "Klíč" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku! S potěšením potvrzujeme váš nákup. Níže " "jsou uvedeny údaje o vaší objednávce:" @@ -1948,7 +1956,7 @@ msgstr "{config.PROJECT_NAME} | Dodaná objednávka" msgid "you do not have permission to perform this action." msgstr "K provedení této akce nemáte oprávnění." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Parametr NOMINATIM_URL musí být nakonfigurován!" @@ -1970,7 +1978,10 @@ msgstr "Digitální aktivum můžete stáhnout pouze jednou" msgid "favicon not found" msgstr "favicon nebyl nalezen" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Chyba v zeměpisném kódování: {e}" + +#~ msgid "translations" +#~ msgstr "Překlady" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index 2b54dedc61076fb215b338a6c36fba8106aef2ac..d31a5c676baec7d67d8fe79a2dd8858b63f61cc8 100644 GIT binary patch delta 7751 zcmXxp37n7B9>?+XXE1{?3u9)?m>IK}%`jt3YDSi9S+W(%Iw~~TLPf%3%`%L5hAhcQ zDoa`>;wJIxmZIq1EJ<`LTHKqoOt{^+pRaTLU-x;v&pFTYoaJ|Z=b7rxd8gWmz16(4 zkwGgBzdZqC;_+OlF@38Uvpr6&##~A@CJKK+-LI8qO~nS(J2(fRUKxY2xBz2tBi6^i zVLBecWc&kp&NH!1jVY%gADiHZxRVK7Kn+llX-qWkM0NNH>bdVw_k**Hp=cT-ub8fw zhvP9AE8P7p*o^vTsEL?tz2_N|L7@@#e%KhtIZIIkY(Y(6A2!4jSPOr0^(qXZUYFi` zVMA<(Be4^1Mn&KPM&dPm5+ibqNn?DoltK-xM51r@phA8S^}-p9z)Prssx>zz4C|sM z6p!JUkD6#FcYla$AM2cfwYgu0n$Q~bk|?}FfvA`x?t!b=l6p`J8_L$G`z5G>%TW<{ z0kxOgQ42VVVR#%h;q#~gFS~lRTw`idZ-Ai~mrMNBK_(4#u_tQJ?nABgeyoFIQ4^Tz z?r%bMyxrB`LT%N4tcS-@kvoSP=rU@HYmgX8n1n&tA&>ZLC0%IH%zL3iKMeKaqo|3^ zK@G4BwSpJi{cWg@_MrONhY|Pz>iN$x9DhQE{2JU>wBwjll%+n$2zu)x*ZqWbHDnK%er<2>Aqdr{BdPh*tM{}>8P z&df$-@h(&-_hJ!NAu~03G-lufsFf^1O=t)5h&hhY7)tyjF%28wt(b&&p^|VsDrXj9 zgwB5%g}bl<2jNBRi`@$Cgw~<5dLwqh*HA0GjEY2nSt?S&s7S>iK{8pW2^XVsWRbhS z95vxh=qagAQ)q#;+St8pjSZ>yz&N}g+u}^r!0({;^q})I)QZ1CqHBJ|9L&6(j}i{V z>R5`J&@xnR?7p4&Yk&`2!#9{f{SvCfFh)(sWM_9&=qEYLu`%^sn25(P34ce0II5kE zNF!`Sy_vHscBOuQJI^M=RvMHPm8ekfMRjl(6^Tz#6Z#&N?f=CXtk>SIBpuaWfZCF7 z$Vb%l!TZodMdlPLDZ@M1`-L6_C0z+>fC;F*oP!F{3eg^hC2U~DQGVjqaNIZ%JLnk7j~nz;E20_ z26L(ZfJqq3nN(I6qC))u>KHzYiMRtF#3Pu6`DC6VJ`95y-#ke{FU&(F%_^*k@1v6D zV^qi0@3dLl26cZPYJ#Pxfi_|?9&nz+H0rgw+4dZarQQcMfrrt%o5BJLM9rK={%4Z9 z+m$_x+RIYZmQT~Rjb!Lis3*J4vVh#7bh6`^SMuNB^n+Utdwg*#AR##5+% zFQfh@B;I5D>yN3_y*U)xPDczmGBa zDJqwKMCCyK06W276vAjYj@q;HsFh#9NQ@b1KTO%E8FxiRVl48RH$H0O z|3ppTbJSLSi<-y<)PkztYfnoU>bW#*q4S?hp%x9rI07HS=6DF3;8pB|aeTY3RFiYQ6UW)YWKPYHljWdqi_=H{z6oaRAOU1h2FgZl7m7V4Sj~&55rhY zpuPwj;>*r=F_!uXjK)jO;9?trB-BJ(p|)lU#^5g8f=5vkc!Ds0RLz(TBZ$8SD0$F6 zI14qv8q`WFQ3HL4xp>XlVx)~gF={WLK_%Jqn2#T$B4b9`t;|8Kc!+Zv>J+UW<=Gnt z+>NhL6Z#946AebYzh+8HM@{Tetc{CZ`%0`ueJh6I8>rmc z@9JNo7I*f_kAZDi;Q!Ry@hwpNo3G3^h;%rr};B$ILgV zNS;Sc_;=LAYLC-G*#8&`+JYQZ2ko&Y4#7}-0JZXo7=%+$15QUpsth%u=UsaxYNGEu z&$#v~XRYyeL9tkm@l7&?Ow7aPI2d*O7GoA}K}Fyg7U3D}h_Mswz(Y~FG2S`TwU?oC zYJ+o^YyZS~7Cr6N&lKckY>wBl4mN+p=0+jbr9KX|(rKs(m0~?CcWy$3{tb8kbG(iE z*T`O*xQX^Oq+t*0Jtq=>g>W?u+JfzxB8#`=hpY5q80+Clmjk6i(8Ri>Z&=zi$0e=XO473$~-aBnf%4%0%kHyq?;V6uL+!#K(W~N6$GyM|l<2mewS5U{Q>lC~4eyC6n z#wdIkHL+QkhucsqJA*g+K~4Ay>bb(H_KP?Yb$EEe)$qn9dtxRpf_rzqc9)GVKHvR0<1REPViReNYwKyFap1&dHgT!xXj3N?W(sFm(UMfgKk|ChUe zX*TiKz}IO|a)i&ZFD9T?mV-*74ycZMpavd>%9ZJ;0d}Awv=0@z!>Il)pjLhbb!y`0 z+6A;kJ%9ULLK8!wI}O^K2T%h(hS}($I^2e-cnCY-&#s;~&z_zESVH?`Y>HnupD>18U*pJqo=k$UE>T-i47**`z5(CEaLLF3fbU#YF16T>XUeS7*Hi_8(re z@Lrzli5h1!YAdU-DSF)(+JD@hhz)4ifEw^k)JzYf&iNH*_9ELp%vp+x)NWTlhZ-ni zvHc@80=rS)?CL)|^Gk0et!JiC=%@}*Gy5Ov3)pvwtyiGxRnAUJZQaKjw10zz_ydMu zN}2ta*Bn%cdm+1FhP(PXRBlya4W0jxW%j`^tjUceOviK_jlD4l-*Wf&Vr}a0p+a~B z6}c)5#@bKY|NdVeS5UtjOYl3?>FTrG{_&ZItr_1OrqBYb^K=g8qe4Ccm2Bl$geNcq zBYpeDEW%{!W3e?Z!{&I<`3I&^Pb;^7+=i|2Pt*i*SK0b-)F~*(2Dk?m;UlPp9$!WL^~I|Gj9p0r>V*!d znUBI-a0%+g_fVlfgj&IIjK{CBK3+o|=g8Iedy$QLzb%I1W7rSpq9T4`HSyOT)?8zg zDhJi^bd1D>s9acwn&^927tdlF{5Rf-8EfsHPQ>=qcVjMIMMWlSolVl=sQYV?ue&+@ z5Cw&P(6e>|)3AX0N7xdtV-~htZ~yuYMMY)-CgCd>gGW#+`W{m-`Z+t{A`DQk^bf?f z4s7+W#--POQ4KeKepY;=z-GU5e0Icq8XItFHBtDQKRZ69@iIzUe@E0I((f#nVza|P z5MMv=mVZ3{bjUpJH{{yo?`d4r_!&z2#o-84&fNUH?nfkK2TJ|h6WRq{@@FKZ1eW_7 z6S@Z8^nXl93~ca25=RG~_9rH`2t4I)Oe`&!O&>#eS=+XX@>P8CW@k8%YYXjjxmI)O zx7Ht#G$pXjKb4dcwSu;Ww%LTb`*Zw=CMkh3zo3a9`?71(BiFembLsyJUGIP0Bsz8x zrRwg9_w@+BVCpaU5y{bk1%767cGME;#k4DN`Lkd$slV!%Bq!eX2BjZq(QgLVLhAaJ zV3sR;xRh%RS3XyN?l1NaBxgsgq;~W7IE79AU&)D~vuM4C+E-lL{mhi2z)pW;N_N2a zm#1XMmb-U4bN3{dzB{kbw$VSHk{`Q{l8(<SMYLFI3sg|7j{;WHiv9kW;eA{`GqbyM{O3QLr}eXg0gDa= zxaa(V>l}Uue2$ZVS3(_Uc!1*^j8`kaOvi}?AL@RzwF|bPKHNG9^~zj~#SIvP^%#MF z!Yn+8Y1p*w&F5Svn?fxO#h8kp<31+Ph#Fu|HiP03REK{ zVi*>qCOXpIpJLnRSyy2Q_n$>gXcxLE6b?}!D$Y6kK=XXZ=|sH^DwKmz_h(~kd=V9a zy{NrBh+4qku{B;qP53%$z~BN?_hVD)8K{Nk6cB%P(4B^scn@mNDo`P<#1=RYHGyUJ zegmrGgSLJQwNHr!z(5?{k@#yRqiN90C!j(<4fWy@)Wm8~ z18hUBV6VOZ4yvOQsD3`eaQqDQ{3Q&-Ur`}%MObw@(yTpQ3L1Dc`f(DfquHo|7b1D% ztVZ(9c?Y%UU)%Z()bs5-lgQW!yW=CMiR?g4;4ND}juF)VikgV~Z(C^A#Y`j({oLq; z+JXV7P?sQMIpa_hTZM(V8P(w_)Ib+dTX-E6!5gS8Y{|nqwlS#tJ&>TdPB8@y^cX4^ zTw2xfGbB zvlf-bM^T|XiA5Mhg_$~iu^m>SR(p~J|d&P9yIMB=Xq7GfJ5j4608DhcPKa%K~T z>-;}U;ZEFx2` zx1%Q9fUc72TMGFY-P7#lAdI3u9^ZXEAL{58O5w&6!iqOQ@@VKQc6C+j#==oeXE#6;>xF&Qsl3I_HzA!APirX-qF&kCHOX**1|`M&s8F9o?a^6OB)&pT=s&1z59wq67$u=ravQ3B0BTFd zA|F$y49DUcRAerrk}{>Qxj)3Epro6P8bEdJWeuw1=TQ^dgF1HaVgjB-t>`jpz`%ay zJJA9);clpYN|3yC?n5QxMpQqqp|;RHKtUZIMQz1-RI>bL4K6k-YmG{pbj-u?*dLdp zlJz50hbc5_pj_0#`l9+9go;oJYGDr`3v-X zJ1n67Gp1lRXHr=`1QqHkRMNeQ$#@ta#BS@md}k#Ey-^@)7}eXsh6Q9FbCbcDQuuX^qg;zf1H9L zW@U3wds&Ctl0B#n{(w1n7CU0_9mek1p86x0h3hdJ58L)jcyl2`&EJxtLy5l{TpHBT zepCd$!6J;k)3lF5g5W%bB)s#nt%naYe=Ei!pAKiUt$&VzdcVYc+LJJp`rW7qm7^B4 zq=fk2Ltz~at?)-wmiq28*&B&^F&-82Y|O_31{?8U6$F z@Efeb7884&y z4IXL!Cgh{~n}`|c)==n4;VlfpYuExCQG4BV6lWe&uqF0KbvzsuiRsuJx1qLj7b*h( z#2EYzl~YYen_RdHHPJc9L|x}O3R>9**cyLC?Oi~ri9j&=sTZO?P=ir3e-QQFa^$n` z>_IKyd(;H3qqfW$VeULNz@j7hDuuhIFqC!QMprtxjO%+Dd?C4j5m9ki^}G5T#VaLTaZqs z>cv6W30GiOJcQcQYpA_Xz1QsdP>iEK6Sd+ssQWumTW|{9L<&Dq7~|utPcR{#dY}0~ zEXO47@5CrPV*L_hsb9rt3@tNeq9V`>HPPXyt*ONr{1kWL71RXQmlOXJ0UQ(JtpS!k zXdc{(8sJUTN>8B%YBJG$dgHA_Q4y#{?fG6*B;Uo(co`L$#7XwgEo#BDts5q}<~Z%M z4d<-?Lro}-v#Ffuh;6VtYVU_3yXKT4C)arcM`PeaCUWCZ&p&~ya22-2_zIJx{ZP3x z*rlMEm!h)#e$>E^VKaOh_24?x9=?b=B?nLu`jfqX0mG_Ub5bNfJxN6cQ{hD~X|1C@j$FbE$|Fm^@0gJE^i?Qo;Gw>W#ZmhJ{ z+4kM2oH}Uz)V6u!kMT~?|cl!EtsbB{|W`o^G|AAVG zf3BHnf7HxpSht{Z(sOMkDaC{S6Grn`2g7)-t zR5pKYANU!QsE6>7R+5c6egjYu8G*4_jf&s~?1Q^84zHm44PIcjE(*1fR7}PJ=qeNw zDadK43Cu#RXc@M{gQ%Rih$FGxLepV2CQ@I9ir`LE67NPoHlQYO6kFqIRD>_u`mYO# zza9u(WCl(^B}X2ry$H3kA*dvpfa>@m)WCC5xv~j0zz3)Zokd0N5~{!8#b)J^s8iD& zmCPlJ36WkHM?(xwM(xc4)POaZgIiD?9>)y)8vA0)C8j?S;tu|ZN z2UDmIK}GlxWH+37w(eV_++zRz6x2am)PuR$6nkM7_Q%OM1q1Of_Wl z7?q?|*c{(P<;r_lf@iP`X0109xd&BWi5Yqh+u+6Z#9yIqq(Lk8Z7^T1eAJ4DpkA1Y znOK8eaX;$4?@?Ru6KWy8jpi7JVg&W}7=ynI(`||!Cq8O97BC#zsHssvf2Ev=x7{FeIyRVt=I=IU;$>|Cm(<($vNts; z-B;tSO&a9e=Y5fs?0e4pC26v6tyi9$?_1!lO>wTb*Gk*DJIy z;o8KdU!6BRWtQ(%??g&^q(@tnX?8;G{l%UyHQl$y%S`oRciA>Q@*7tbm;Mv!v)(7E z(XlHiHL*_|(IfntQQzVD(xQFKyx6py$W_$KXjlI7*TTuBzQ-GzmfXF8(q&rotL9ox zUB3!!Z_6&O=Gx5FnQIjHS9\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,8 +27,7 @@ msgstr "Er aktiv" #: core/abstract.py:20 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." @@ -49,22 +48,22 @@ msgstr "Modificeret" msgid "when the object was last modified" msgstr "Hvornår objektet sidst blev redigeret" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktivér udvalgte %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deaktiver udvalgte %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Attributværdi" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Attributværdier" @@ -77,19 +76,19 @@ msgstr "Navn" msgid "image" msgstr "Billede" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Billeder" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Lager" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Aktier" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -97,35 +96,31 @@ msgstr "Aktier" msgid "price" msgstr "Pris" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Produktvurdering" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Grundlæggende information" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Vigtige datoer" -#: core/admin.py:218 -msgid "translations" -msgstr "Oversættelser" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Bestil produkt" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Bestil produkter" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Er forretning" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Konfig" @@ -187,33 +182,34 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Få en liste over understøttede sprog" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Hent applikationens eksponerbare parametre" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Send en besked til supportteamet" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Anmod om en CORSed URL. Kun https er tilladt." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "Globalt søgepunkt til at søge på tværs af projektets tabeller" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Køb en ordre som virksomhed" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -244,8 +240,7 @@ msgstr "" "attributter" #: core/docs/drf/viewsets.py:57 -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" @@ -298,11 +293,10 @@ msgstr "" "Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer" #: core/docs/drf/viewsets.py:111 -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" +"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare " +"felter" #: core/docs/drf/viewsets.py:118 msgid "list all categories (simple view)" @@ -336,8 +330,7 @@ msgstr "Liste over alle kategorier (enkel visning)" #: core/docs/drf/viewsets.py:146 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." #: core/docs/drf/viewsets.py:150 msgid "retrieve a single order (detailed view)" @@ -379,19 +372,19 @@ msgstr "" "ved hjælp af brugerens saldo; hvis `force_payment` bruges, igangsættes en " "transaktion." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "Køb en ordre uden at oprette en konto" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "afslutter ordrekøbet for en ikke-registreret bruger." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -399,11 +392,11 @@ msgstr "" "Tilføjer et produkt til en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -411,218 +404,237 @@ msgstr "" "Fjerner et produkt fra en ordre ved hjælp af de angivne `product_uuid` og " "`attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Liste over alle attributter (simpel visning)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "For ikke-ansatte brugere er det kun deres egne ønskelister, der returneres." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Hent en enkelt attribut (detaljeret visning)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Opret en attribut" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Virker ikke for ikke-ansatte brugere." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Slet en attribut" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Omskriv en eksisterende attribut, der gemmer ikke-redigerbare filer" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Omskriv nogle felter i en eksisterende attribut og gem ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Tilføj et produkt til ordren" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Tilføjer et produkt til en ønskeliste ved hjælp af den angivne " "`product_uuid`." -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Fjern et produkt fra ønskelisten" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 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`." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Tilføj mange produkter til ønskelisten" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Tilføjer mange produkter til en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Fjern et produkt fra ordren" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Fjerner mange produkter fra en ønskeliste ved hjælp af de angivne " "`product_uuids`." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`." -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Liste over alle produkter (enkel visning)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(præcis) Produkt-UUID" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Produktnavn" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(liste) Kategorinavne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(præcis) UUID for kategori" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Tag-navne, skelner ikke mellem store og små bogstaver" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum aktiekurs" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maksimal aktiekurs" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(præcis) Kun aktive produkter" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Mærkenavn" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum lagermængde" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(nøjagtig) Produktsug" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(præcis) Digital vs. fysisk" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Hent et enkelt produkt (detaljeret visning)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "Produkt UUID eller Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Opret et produkt" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Omskriv et eksisterende produkt og bevar ikke-redigerbare felter" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Opdater nogle felter i et eksisterende produkt og bevar ikke-redigerbare " "felter" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Slet et produkt" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Angiv alle adresser" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Hent en enkelt adresse" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Opret en ny adresse" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Slet en adresse" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Opdater en hel adresse" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Delvis opdatering af en adresse" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Automatisk udfyldning af adresseinput" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Der er ikke angivet noget søgeord." @@ -656,7 +668,7 @@ msgid "add a product to the order" msgstr "Tilføj et produkt til ordren" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordre {order_uuid} ikke fundet" @@ -673,67 +685,68 @@ msgstr "Fjern alle produkter fra ordren" msgid "buy an order" msgstr "Køb en ordre" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Angiv enten order_uuid eller order_hr_id - det udelukker hinanden!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Forkert type kom fra metoden order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Tilføj et produkt til ordren" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Ønskeliste {wishlist_uuid} ikke fundet" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Fjern et produkt fra ordren" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Køb en ordre" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Original adressestreng leveret af brugeren" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Grænsen skal være mellem 1 og 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fungerer som en charme" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Egenskaber" @@ -746,11 +759,11 @@ msgid "groups of attributes" msgstr "Grupper af attributter" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Kategorier" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Mærker" @@ -758,7 +771,7 @@ msgstr "Mærker" msgid "category image url" msgstr "Kategorier" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Markup-procentdel" @@ -766,60 +779,58 @@ msgstr "Markup-procentdel" #: core/graphene/object_types.py:110 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." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Leverandører" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Breddegrad (Y-koordinat)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Længdegrad (X-koordinat)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Sådan gør du" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Vurderingsværdi fra 1 til 10, inklusive, eller 0, hvis den ikke er " "indstillet." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Repræsenterer feedback fra en bruger." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Meddelelser" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Download url for dette ordreprodukt, hvis det er relevant" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "En liste over bestillingsprodukter i denne ordre" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Faktureringsadresse" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -827,47 +838,47 @@ msgstr "" "Leveringsadresse for denne ordre, lad den være tom, hvis den er den samme " "som faktureringsadressen, eller hvis den ikke er relevant" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Samlet pris for denne ordre" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Samlet antal produkter i ordren" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Er alle produkterne i ordren digitale?" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Bestillinger" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Billed-URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Produktets billeder" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Kategori" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Tilbagemeldinger" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Attributgrupper" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -875,31 +886,31 @@ msgstr "Attributgrupper" msgid "quantity" msgstr "Mængde" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Antal tilbagemeldinger" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produkter" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promokoder" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Produkter til salg" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Kampagner" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Leverandør" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -907,77 +918,77 @@ msgstr "Leverandør" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Produkter på ønskelisten" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Ønskelister" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Projektets navn" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Virksomhedens e-mail" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Virksomhedens navn" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Virksomhedens adresse" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Virksomhedens telefonnummer" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'e-mail fra', nogle gange skal den bruges i stedet for værtsbrugerværdien" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "E-mail-værtsbruger" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Maksimalt beløb til betaling" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Minimumsbeløb for betaling" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Sprogkode" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Sprogets navn" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Sprogflag, hvis det findes :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Få en liste over understøttede sprog" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Søgeresultater for produkter" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Søgeresultater for produkter" @@ -1058,8 +1069,7 @@ msgstr "Attribut for denne værdi" msgid "the specific product associated with this attribute's value" msgstr "Det specifikke produkt, der er knyttet til denne attributs værdi" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Tilknyttet produkt" @@ -1103,279 +1113,276 @@ msgstr "Tilføj en detaljeret beskrivelse af denne kategori" msgid "category description" msgstr "Beskrivelse af kategori" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Navnet på dette mærke" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Varemærke" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Upload et logo, der repræsenterer dette brand" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Brandets lille image" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Upload et stort logo, der repræsenterer dette brand" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Brandets store image" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Tilføj en detaljeret beskrivelse af brandet" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Varemærkebeskrivelse" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Valgfrie kategorier, som dette brand er forbundet med" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Kategorier" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Kategori, som dette produkt tilhører" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Tilknyt eventuelt dette produkt til et brand" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tags, der hjælper med at beskrive eller gruppere dette produkt" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Produktmærker" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Angiver, om dette produkt leveres digitalt" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Er produktet digitalt?" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Giv produktet et klart identificerende navn" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Produktets navn" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Tilføj en detaljeret beskrivelse af produktet" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Produktbeskrivelse" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Reservedelsnummer for dette produkt" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Varenummer" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Gemmer legitimationsoplysninger og slutpunkter, der er nødvendige for " "leverandørens API-kommunikation" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Oplysninger om godkendelse" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Definer markeringen for produkter, der hentes fra denne leverandør" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Sælgerens markup-procentdel" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Navn på denne leverandør" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Leverandørens navn" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Brugernes kommentarer om deres oplevelse med produktet" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Kommentarer til feedback" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +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" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Relateret ordreprodukt" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Brugertildelt vurdering af produktet" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Produktvurdering" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Den faktureringsadresse, der bruges til denne ordre" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Valgfri kampagnekode anvendt på denne ordre" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Anvendt kampagnekode" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Den leveringsadresse, der er brugt til denne ordre" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Leveringsadresse" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Ordrens aktuelle status i dens livscyklus" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Bestillingsstatus" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" -"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" -" tabelvisningen" +"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges " +"tabelvisningen" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON-repræsentation af ordreattributter for denne ordre" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "Den bruger, der har afgivet ordren" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Bruger" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Tidsstemplet for, hvornår ordren blev afsluttet" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Køb tid" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "En menneskeligt læsbar identifikator for ordren" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "menneskeligt læsbart ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Bestil" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "En bruger må kun have én afventende ordre ad gangen!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "Du kan ikke tilføje produkter til en ordre, der ikke er i gang." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Du kan ikke tilføje inaktive produkter til en ordre" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Du kan ikke tilføje flere produkter, end der er på lager" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} findes ikke: {product_uuid}." -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 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." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} findes ikke med forespørgsel <{query}>." -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promokode findes ikke" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "Du kan kun købe fysiske produkter med angivet leveringsadresse!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Adressen findes ikke" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "Du kan ikke købe i øjeblikket, prøv venligst igen om et par minutter." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Ugyldig kraftværdi" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Du kan ikke købe en tom ordre!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Utilstrækkelige midler til at gennemføre ordren" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1383,184 +1390,184 @@ msgstr "" "du kan ikke købe uden registrering, angiv venligst følgende oplysninger: " "kundens navn, kundens e-mail, kundens telefonnummer" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Ugyldig betalingsmetode" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "Den pris, som kunden har betalt for dette produkt på købstidspunktet" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Købspris på bestillingstidspunktet" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Interne kommentarer til administratorer om dette bestilte produkt" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Interne kommentarer" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Notifikationer til brugere" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON-repræsentation af dette elements attributter" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Bestilte produktattributter" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Henvisning til den overordnede ordre, der indeholder dette produkt" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Forældreordre" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Det specifikke produkt, der er knyttet til denne ordrelinje" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Mængde af dette specifikke produkt i ordren" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Produktmængde" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Aktuel status for dette produkt i bestillingen" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Status for produktlinje" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Intern tag-identifikator for produkttagget" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Tag-navn" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Brugervenligt navn til produktmærket" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Navn på tag-visning" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Produktmærke" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Giv alternativ tekst til billedet af hensyn til tilgængeligheden" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Billedets alt-tekst" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Upload billedfilen til dette produkt" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Produktbillede" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Bestemmer den rækkefølge, billederne vises i" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Skærm-prioritet" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Det produkt, som dette billede repræsenterer" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Produktbilleder" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Unik kode, der bruges af en bruger til at indløse en rabat" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Identifikator for kampagnekode" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Fast rabatbeløb anvendes, hvis procent ikke bruges" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Fast rabatbeløb" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentvis rabat, hvis det faste beløb ikke bruges" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Procentvis rabat" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Tidsstempel, når promokoden udløber" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Slut gyldighedstid" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Tidsstempel, hvorfra denne promokode er gyldig" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Start gyldighedstid" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Tidsstempel, hvor promokoden blev brugt, blank, hvis den ikke er brugt endnu" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Tidsstempel for brug" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Bruger tildelt denne promokode, hvis relevant" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Tildelt bruger" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Kampagnekode" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Kampagnekoder" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1568,184 +1575,184 @@ msgstr "" "Der skal kun defineres én type rabat (beløb eller procent), men ikke begge " "eller ingen af dem." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Promokoden er allerede blevet brugt" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ugyldig rabattype for promokode {self.uuid}." -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Procentvis rabat for de valgte produkter" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Rabatprocent" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Giv et unikt navn til denne kampagne" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Navn på kampagne" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Beskrivelse af kampagnen" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Vælg, hvilke produkter der er inkluderet i denne kampagne" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Inkluderede produkter" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Forfremmelse" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Den leverandør, der leverer dette produkt, lagerfører" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Tilknyttet leverandør" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Endelig pris til kunden efter tillæg" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Salgspris" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Det produkt, der er knyttet til denne lagerpost" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Den pris, der er betalt til sælgeren for dette produkt" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Leverandørens købspris" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Tilgængelig mængde af produktet på lager" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Antal på lager" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Leverandørtildelt SKU til identifikation af produktet" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "Leverandørens SKU" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Digital fil knyttet til dette lager, hvis relevant" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Digital fil" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Lagerposteringer" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Produkter, som brugeren har markeret som ønskede" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Bruger, der ejer denne ønskeliste" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Ønskelistens ejer" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Ønskeliste" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Download" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Downloads" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "Du kan ikke downloade et digitalt aktiv for en ikke-færdiggjort ordre" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Dokumentarfilm" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Uafklaret" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Gade" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Distrikt" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "By" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Region" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Postnummer" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Land" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolokaliseringspunkt (længdegrad, breddegrad)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Fuldt JSON-svar fra geokoderen for denne adresse" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Gemt JSON-svar fra geokodningstjenesten" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adresse" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adresser" @@ -1814,8 +1821,8 @@ msgstr "Hej %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Tak for din ordre #%(order.pk)s! Vi er glade for at kunne informere dig om, " "at vi har taget din ordre i brug. Nedenfor er detaljerne om din ordre:" @@ -1900,8 +1907,8 @@ msgstr "Nøgle" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Tak for din bestilling! Vi er glade for at kunne bekræfte dit køb. Nedenfor " "er detaljerne om din ordre:" @@ -1959,7 +1966,7 @@ msgstr "{config.PROJECT_NAME} | Ordre leveret" msgid "you do not have permission to perform this action." msgstr "Du har ikke tilladelse til at udføre denne handling." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Parameteren NOMINATIM_URL skal være konfigureret!" @@ -1967,8 +1974,7 @@ 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." #: core/validators.py:22 msgid "invalid phone number format" @@ -1982,7 +1988,10 @@ msgstr "Du kan kun downloade det digitale aktiv én gang" msgid "favicon not found" msgstr "Favicon ikke fundet" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fejl i geokodning: {e}" + +#~ msgid "translations" +#~ msgstr "Oversættelser" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index 6e39010dc473495a4fe741f83581c04c550ee9b7..baad2cb7f7442f1ccfd5e918396c77e82b9e81d1 100644 GIT binary patch delta 7751 zcmX}x3wY0EAII_g&&;rynVFqWm~G}XGv`%~ISx657+K6QhopM=XO_vz=|_pw7E;pa zSwx}aDn0bblZ1q;B5_@ju9oD9=lyZtJ^$-LKii+87%U-|HNP`pOiH!V+wR;EKI`Ba3=$}g6g0w&6r5siE8lQsONq}-49APhN6i>zG8Y| zYn+ZjSmy4(iOq?RqXuF!^gX{Z%_u|@55_p0<}5{Z@Fr>i`>`Q@jWzLS7gu2|;$T`I zfDJJh3$QzGMrGg%*2mlU6ozFQ(}e!b^Au`eC6ax!2bJV6@rZz)(Da8t_F_hc{eYt(7r>#0@Y6V_K1aHIPO{F!n>O*@LK=j>kGU6*Yi) z?*2wp!`oc^9%`vR!n$|@mAMP3j&7iqxCR>|5fd>0?`=)~HItrHXygM>sUL&-;vCe# ziclRaN6lc9yZ;udp*^T}_G1`+ihBMO*2AAsDZh<69ra1CZ0@I^j(eg;JPg%PA*$n< z$bK;kkbP#}Laq5p7hgp^ADv}PdrZa-I10mX4Qc>eT)Z2@i4UU&;6LXIf1n0ZzpWie zGHMC3QK`;F`Z9e`1DlW8xD?gkN2rdzLM`D%R0gl2mhiu*V;jVmbUz(QhTmjSP)7x* zy)Xms!BwaM9Y@XN2h{nlLM=gTJ6oTEYB1ZyT~Y1jVH%Fa94yAoxEJ;Ocq$`w{-;o2 zaAqND7wcqVbn~XLk*|`dBmK+NDLwW^|1*y!1kDk{ZX56I%>~6 zi(xwd%P926G8~ClaS-0$(GF-mYFC$IPuzi;;SE$Ke2h|=3PNS75t1a6jv8=2YL7hY z?yp1*cq96?sm@Sni8VXhwameW#Cprcy$+}sSWk?=L8$g7Vndz(*%Y*vOHmJQMD6kl)E9Q6mf)zn ze->L2|AdJc#hKKu?ubhD!>D8UGA3XJPQas>j#=zHWqb?<(Z6|$g1%6U+B7dkpG#) zK6Yl4QEOR>T9PtU1Mi?xd<0wL4QEiXLVg?mz z=nYf`zQImdtG})9fh55^j%;xAp^JS3>~F>W$ScDvb@68ypzjZ~ulBkaLfj3Np+Tq# z%^67kM^ku)in{ncYL{Ne8dxLGez6WJ=T!*!(FGsbr4eQ}Y7=-`9 zO#B8{VUT|iJCVYARLZIkwlm5=JvbGc<2r1Lhp-u5MP(?G^=pemP;0#e)3E~eW;~5* z_Xg@WA>jer-cW2z>@T9wnZg#-j4xmvynO`Wz-(X8fFLh5Nd#nkO}!s1%*&5PN3H8B5LMWus${#ZeL6ps1f%n_9umv8*B)o~;F@_hp)-WHn zR|-*^X-dQ?WXqn2h5YO_|MHfPRAyJsFlE$MDd)A_$hp)H1vvJZC0MZ`s@)CaOd zwb|0K4Nk*$ScYooBr2r=581VDiP6NvF#>0y?k_>@kxGoi)94@JV{=ewNJZXQ`(l`g zF~r5F2FfrBccGp;hLL#5c?Xq&$b9<`nGEbr`~+$sALC9ui<*cx&X{kj@t4#%^52Mx z$_e(t&z+YroBC=6w!`+=o_L^h33etvfLhDjs7+bx5xZ0!umkY|)N{MBDONdSIdaNK zw~2mxV>%UjU=3=-d$A^-L}lVUYVB{~Gz^%;U~m?aJo7OsBZ-A>z_^`wAZm&3U=3_O z*=Dp2YT&*76dF(%;%-brb+iC=DoRidzleH~Y)37@M;L-9QJe81>a_fZwXo(CyLZB{ z8F99A3~GWUn2Y|`DCih{k2#n$)pqnCs-elK)XqW8U=wOUTTuh~7;EEc)BrAEAl`8I zZ=(hfLE7|uSFD3Wk@orhr=Sr{K^?ors0{2xHM}1+kbj|`JC2(1Rd@d{RL4Qn?fn>3 zhwV@U9*fnn0JYZ&F$9aSzRv#&3fkoxF&_6|7@k5scm)IS59eQ~hN{i5dm{$*{T$Q` z`=i>KfU&s9)t5QnLrw4~)}?=Ql7i0vkC=fmkJ|Iu3-zm5fcnCV*dNPqC|*S^MfaI@ z4~<3*WTvwOb)Yh0~Qy7X}h?B7{=3`HsfttxK)Hy$nTH{L?idRw3 z-$tG9kl8kKd8lJJ#>Hz<6MP-};+M0@zjlB89J_W|*phevYLhHLrF1CxQZ6{rqB z#dJJ@1JOLjK7l;c@r|Bq2b_$`Tszc+i?JUrn@j#Rk~36v#MH;_2*+a!J%FuoA1X7~ zFcLH8*_8LdhQuQ=5oe+{=_=IbeH-iJZX`M82=ekXU7s*!1eWRKMaWyJKU!Z=hZlh*gG~fQ}J&%gNz(o88HGx~$9D^6!ZO?By zP|!>Up+>q0wMi;b51w}hvs7B^4ygMRP?=kSVYmk4af|a)%p<;tTJv^K+YH@&Uh+sS9leUqub@66RufkH%M)oc?#lxsIx{g|kVDg-bQ5c8!Vj~=jeQ=(O52BXpThtQ#h6#8F z)owzu%|uVUd;SMd(54!JU2rO9;a1GYbEs32`-~k(DaI17#TvL1wfR0kW#}N*!Lz7M zeHk^N8>kG2F1GC?Ehhik6fLOG7joT=zIb;)s5jqK)QlfPb?l*b{SH)vmrygkiRvhz z#I_fUNyN=i1M7o&Zh~`03G1(vKS@O>u0V~r40~b)W?~hp!;~egACAOy+=ET=0?x%c z&)Q>Fgt}jeHSip2q8G3&R=GIcztpZ>C+yCR#W)U+U?66e+Vk2Ln-TYQ&cSrz4KDu7 zdEFWPoc(8aH=M$A({L1?#<7_Fylv0FhC(MQ_MVRS z4D~^shIu#?EAT-KSYgZqI0pM+rPHju`=axk{uK0JIZnr0s1Z(HW&f#l7!|kotZSWr zU`+_gLn`FU*vU-hcO%bt+g+vB5Y6p<~Rj)82pmmOkJ@J zaRK(mwb%{6!!&HN&i+$vAhskfL3Q{ZcECTe6}DY(*SG-lh?k)zcpf!@%jnnfsG^X9 zkuTfR&iKCn z59eZ6yjJG7DQZz}e~*WwHpvc*zKarc|PW|t%jhf)7Hj=-bX8&fyhOgxIY z#BVr%LOtJX6Mr$Ie-Z_qb# z7mUZqE&TUktn?1V3PhOgA? z5})ha;?0jw@vZdA<9qqu^)AOJ_+IsDB~0|K@Mb2o^ey(v6H2oe(#B}MJecbR$~Td@ z{r@wZ(wo#T;#$k4&pK~h;^V%zywiy(5v!E#gWe-tHA9Cv^BH zrOVXlGoNb-u|9>E?#h0Ap6ey9EUuy4U+Nu5&InsW^!H~jg^k`{$q6A(Q~LnXd9H0< zT1qG1POl&(!{>P`Q!=7fyYKYi?n$mfuD7Wx_fDi_MXje)n;N~WRjrYS1!6;x)XQbB5pbaT%=x$c;_wwV)d zEv8gsyXII^>ZECtHRhCKA2Ta!Y<_>wY2Ht_?|II>?^&L6&V99BKH~S)5kL2Ixc^Fr z&pw~yB;fZUj#KRCIQ!#O%cqs&M1l`>Kib+EBZ!Nw_oKd2g|WCAV{j+7zz;D4Ph%Pe zw7&kF>ts?`K}8{^;tAZ#0Is4ssL!NRd$aR@mbVBnrG{KuH)oUh@;{jOvGwyEvkdpPy;xEQTQ(m#Q)m35v?{MPQW{`H5TAx z?2UU-8Mun!7}}OBVJfzwf9Gimjqo6b;0LIbA4h%R0*0Z}&U6%x%?J}v1IoeXScn?v zPu8G4jfVd@UqS?9RUk&6_(GVYIwhm z-$O0cQ4GazP?@`o>L`#|Xo({+1#{6Ki#w2i&14uA8u?wQ)R&{aI0rSb8dL{$s2S|B z_g_af^Z}}!BN&FqP|tsh&GEmel!ua5osKkXPnUu^9){s~KdPZ=sE%hM`^H&{>^J9i z)S92O@io-*S)JI(*b(z_0%{=JPy=|y#_wYb;?Ge7asOirjXRrxq+vKWI--`K4=U9I zk-nT!sDUlPF1QZW;89dZU!#`rCsYQnp_Z^I59`>*pze1^lHxjr6x7jV)LwA$Cftn5 z%vsb-eng$`MqSMku@Y0t|)NLX4prCHpM|yst=>q=p-r=U!n%|GitX7-DG}@l29}0hN|y_T9T2-%hV~w zk+=+%ne(VknR2ta-_NC>O*akIfnu#?4XWYIr~%cZj@=uWfQL~tI*;nm{}%I}2u2M! z57o{XX8FS!SZHR}47F*}u`Q0q-nam@S&yI^ zOrcU8<)9{ZGpfBJRE7qkCU!3}G1qy--gp8vvK6Qo$tLrFvkTSmTlW4(_WtLnCHv0C zmr=*BQ6KZBOhmPJ8|no%3?s1&)!tN$()piFA%==|s0VkWc6kHp3-6cbp z^fkM-KkEJp)BtNy9qq(4{MdRKTMIGc%ix zTFYA0lGLLbcnh=fBzC~S+l~2{MLYpBa1~}^gRTD-uTP}E`7P<+pZu%Br9ut8ips#h zu?NNuF!d!!5}f(ShIjsEKkNsZzSrA@u-w%VtdR*4v14~>$g~6z#!^(qT1Py&G9HU#(!d4{5RHM zj9bj>k-~OV%32IIGwOkQa0ce!3)mWuV;j7N%1{RD*BS3ct@Rqz5;UORjOS791`aj9 z3GGqsjm4Je)==n4;T3FzmoXTxqSiW~gfovR*c5xC8ZJg<;vsB;b*QC$9+iQwFa|H6 z_Ef+yvlj-T209%XsOxN`pqU-QW_Ss;c7DT61_CjhxC`n9)fYAL`%vFofV}pddej6i zq6Y92YRQ}tW*~v6iKSp9=3tP{|1A_WlK~ir)mVmeu^pbnRE*+9-W&5!YgvujGxJcJ zY9+S7S5X-`j9Q{&s7)I_%52i1sJ&BzIXeHJQP45*8*SDy2eq5aa5mPVmLQ#-sxKB{ zM_h)j=#spLbI^zKBi@bxJRj7fS!M%7DHIe!<@_)*YKiiS-7%Gn5 zXMfeK{$tIqO-6NCf_XU6x($00pGK{D{QYJrTceh080KRw>bcLbHHMEf=8tntN=j|T zBI_>Hi2s3sco~(6-%)EH^MK<_!c-iH%a9~GXHXgGHQo*wUm~7}TB3vp%_hAKmC=DN z1&w?xM&QHt#$0SnT#GstTTu<~LA_88qcZXZhTvt?X7rn2PD>azA#RD zI@)+N2J8G+P*4Ytqek>3>ey{TW#AK3!zWSC{R{Qn52zUjmz(=>sE%8q?&qO89D*9~ z47>qnq4wH54AJ?oqo6PDK&{D}n1shL41dB941CDEm?EulsD_eJdm|6^{h_ECKZt5) zCMMuUTYtd%DPI5m|BgZ^4_wC1c*Dcy=QR&?JnuvOI?h66WDgF&16YE=kC>$>L+zny zsDUiCZbh}T&w9evUqM$7HmxwJO+#fO2YX=wYGBoPD=tROF3sLV}59m6Uc@5OB5gO%j}b_y4%(8zl{YSwNLwkMu|Y!asymC|RiDK?-s-yu|o zXE6&e;Xq8B%wNfI66*MNn_>oBfXdtu)Lz;&h4t@GVLKHX$S>F(drvhZbg`Z8V+Z^k zm6@iGnE~{}2;zG%3a4TUE=6s^mr$GcLk!2ykfb@^BJVtBv^(wk50rBN{i%qWZc-MH zLx?j`YhH~?^*n5jORxoQKn-jccEztzGmft^9j2q+gk4b?t-@T~jvBCgib5QPA5m)? zI>Y=?D;t%fN>s|LQK?>t(YO}7<4#nDzDNC7#aEjd*Wt~?FWC5dOd5WCWA2mS#S>_F! zi`okhquQ&&2nOe@rl1aAM0L=BI+h<}YdnWqqEPayrO3n#?23ta7slWW?1w9D{3R;0 zzoI%0n`8c-kbr8pC%Q_-y%e<86HuFKGWNm+*a_dmQv3~dO2*7J19=V;i1(siv7eyY zJAum3ml%v!QSX6(d1gQns0ruHEp=O?nYA+vCu@7os<4_ryIiLKiu$T&^d^I-19jFl>z+3SUw#D!#O@}w( zUBpu{3y)!I^eu3lDcA;e%<540k76VI4K-2ULi4H*cPXf%2>am(?2TKn48O$y?6=6A z*J5l#{D5^iW)bhR@i*4c#pbzgn92Q8oPY~)G+x2G(H*?RJh%&cP;nBIF?y*?`f&G0>JjK}d7{1Ojh`f4^Dp2IFUehn`s`giIm7A6L-c?9D$KI4mE&k48eC%4SkAgsMXWv-QFI@5D&rv+=1Qj0`|~z8_a;p zFpjup1Nm2~c2J=Vylih=#0=t~I`abRXuThMQoj!U@i+$JDO5XOqmJPP49AF#W)o+i z-Xndm07s&pU%SzDoX03^rs777-(*rX3P%vnMy>TJR3^@2HvWO?D0{QHKNz(%cjGYJ zg8KedROW_kF_~D88o;O42zRUb!cbhyjqRxOoVU$1a4#x#`%$U<1-16M&zN7uQP%mG zO8p*;!DF`mBDN+@c-H(X7NSqj>0f-jSL1Vi+r9Jg89~q5s`)-IE+NkMjMpV0J8T}6 z5nP%?B<}PcNk~t8ic$tOg*Zpe@Hx$;oWJDlOlaYI)q5x5WRtnvkK%g8dp@y8;u=c& z#A6w1>-_oI<@u7beT%)eNd>;=yh%yvz8Y_NQju@3_m8Ax-$w7(q;bCGURiQ`-xJ>Q z+Yb}>PwO(<`RNsr<2Px^19(7Ts+6l4uXM4WX zbl)JysgtCe{fZD>3@-K@IFqBj$KIU2K&T2dW277;%%NUE!y{_7n_zHxrDfs z`j%X?xiX3Cy^(3j`MW8dr$(P@t_8&UjK?fnc5x}!I<8J!CEQ=+?M%xKTSfHeX9|U_ z-i5T}keSpDB|5{k!;4Mt;d|LDNzeAJ@MflG$F8*B>BHUQT;sX^LfvNXo%Bwz>nR0M zqnBI-S2Wipu1#K8%R=84ucYPh)HwgdWA6R@D<^TWy diff --git a/core/locale/de_DE/LC_MESSAGES/django.po b/core/locale/de_DE/LC_MESSAGES/django.po index f8b0f066..be4c2d7c 100644 --- a/core/locale/de_DE/LC_MESSAGES/django.po +++ b/core/locale/de_DE/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,8 +29,7 @@ msgstr "Ist aktiv" #: core/abstract.py:20 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." @@ -51,22 +50,22 @@ msgstr "Geändert" msgid "when the object was last modified" msgstr "Wann das Objekt zuletzt bearbeitet wurde" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s aktivieren" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Ausgewählte %(verbose_name_plural)s deaktivieren" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Attribut Wert" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Attribut Werte" @@ -79,19 +78,19 @@ msgstr "Name" msgid "image" msgstr "Bild" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Bilder" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Lagerbestand" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Bestände" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Bestände" msgid "price" msgstr "Preis" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Produktbewertung" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Grundlegende Informationen" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Wichtige Termine" -#: core/admin.py:218 -msgid "translations" -msgstr "Übersetzungen" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Produkt bestellen" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Produkte bestellen" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Ist Business" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Konfigurieren Sie" @@ -188,34 +183,36 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Abrufen der exponierbaren Parameter der Anwendung" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Senden Sie eine Nachricht an das Support-Team" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Fordern Sie eine CORS-gesicherte URL an. Nur https erlaubt." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "Globaler Suchendpunkt zur Abfrage aller Tabellen des Projekts" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Eine Bestellung als Unternehmen kaufen" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -246,8 +243,7 @@ msgstr "" "Editierbarkeit" #: core/docs/drf/viewsets.py:57 -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" @@ -277,8 +273,8 @@ msgstr "" #: core/docs/drf/viewsets.py:84 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" -" Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " +"Daten zu speichern" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -303,8 +299,7 @@ msgstr "" "Editierbarkeit" #: core/docs/drf/viewsets.py:111 -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" @@ -333,8 +328,8 @@ msgstr "" #: core/docs/drf/viewsets.py:138 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" -" Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " +"Daten zu speichern" #: core/docs/drf/viewsets.py:145 msgid "list all orders (simple view)" @@ -369,8 +364,8 @@ msgstr "" #: core/docs/drf/viewsets.py:167 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" -" Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " +"Daten zu speichern" #: core/docs/drf/viewsets.py:171 msgid "purchase an order" @@ -386,21 +381,20 @@ msgstr "" "wird der Kauf mit dem Guthaben des Benutzers abgeschlossen; bei Verwendung " "von \"force_payment\" wird eine Transaktion ausgelöst." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 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." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -408,11 +402,11 @@ msgstr "" "Fügt ein Produkt unter Verwendung der angegebenen `product_uuid` und " "`attributes` zu einer Bestellung hinzu." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -420,224 +414,244 @@ msgstr "" "Entfernt ein Produkt aus einer Bestellung unter Verwendung der angegebenen " "`product_uuid` und `attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Alle Attribute auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Bei Nicht-Mitarbeitern werden nur ihre eigenen Wunschlisten zurückgegeben." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Ein einzelnes Attribut abrufen (detaillierte Ansicht)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Ein Attribut erstellen" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Funktioniert nicht für Benutzer, die nicht zum Personal gehören." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Ein Attribut löschen" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Umschreiben eines vorhandenen Attributs, wobei nicht editierbare Daten " "gespeichert werden" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" -" Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " +"Daten zu speichern" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Fügt ein Produkt mit der angegebenen `product_uuid` zu einer Wunschliste " "hinzu" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Ein Produkt von der Wunschliste entfernen" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Entfernt ein Produkt aus einer Wunschliste unter Verwendung der angegebenen " "`product_uuid`." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Viele Produkte auf den Wunschzettel setzen" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Fügt einer Wunschliste viele Produkte unter Verwendung der angegebenen " "`product_uuids` hinzu" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Entfernt viele Produkte aus einer Wunschliste unter Verwendung der " "angegebenen `product_uuids`." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Alle Produkte auflisten (einfache Ansicht)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(genaue) Produkt-UUID" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Produktname" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "" "(Liste) Kategorienamen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(genau) Kategorie UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" -msgstr "" -"(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" +msgstr "(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Mindestaktienkurs" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maximaler Aktienkurs" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(genau) Nur aktive Produkte" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Markenname" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Mindestlagermenge" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(genau) Produktausschnitt" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(genau) Digital vs. physisch" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Ein einzelnes Produkt abrufen (Detailansicht)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "Produkt UUID oder Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Ein Produkt erstellen" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" -" Felder" +"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer " +"Felder" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Einige Felder eines bestehenden Produkts aktualisieren, nicht editierbare " "Felder beibehalten" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Ein Produkt löschen" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Alle Adressen auflisten" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Eine einzelne Adresse abrufen" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Eine neue Adresse erstellen" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Eine Adresse löschen" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Eine ganze Adresse aktualisieren" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Teilweise Aktualisierung einer Adresse" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Autovervollständigung der Adresseingabe" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Kein Suchbegriff angegeben." @@ -671,7 +685,7 @@ msgid "add a product to the order" msgstr "Ein Produkt zur Bestellung hinzufügen" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Bestellung {order_uuid} nicht gefunden" @@ -688,68 +702,69 @@ msgstr "Alle Produkte aus der Bestellung entfernen" msgid "buy an order" msgstr "Eine Bestellung kaufen" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Bitte geben Sie entweder order_uuid oder order_hr_id an - beide schließen " "sich gegenseitig aus!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Von der Methode order.buy() kam der falsche Typ: {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Ein Produkt zur Bestellung hinzufügen" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wunschzettel {wishlist_uuid} nicht gefunden" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Ein Produkt aus der Bestellung entfernen" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Eine Bestellung kaufen" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Vom Benutzer angegebene Originaladresse" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Der Grenzwert muss zwischen 1 und 10 liegen." -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funktioniert wie ein Zauber" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Attribute" @@ -762,11 +777,11 @@ msgid "groups of attributes" msgstr "Gruppen von Attributen" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Kategorien" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Marken" @@ -774,7 +789,7 @@ msgstr "Marken" msgid "category image url" msgstr "Kategorien" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Markup Percentage" @@ -786,55 +801,53 @@ msgstr "" "verwendet werden." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Anbieter" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Breitengrad (Y-Koordinate)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Längengrad (X-Koordinate)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Wie" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Bewertungswert von 1 bis einschließlich 10 oder 0, wenn nicht festgelegt." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Stellt das Feedback eines Benutzers dar." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Benachrichtigungen" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Download-Url für dieses Bestellprodukt, falls zutreffend" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Eine Liste der bestellten Produkte in dieser Reihenfolge" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Rechnungsadresse" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -842,47 +855,47 @@ msgstr "" "Lieferadresse für diese Bestellung, leer lassen, wenn sie mit der " "Rechnungsadresse übereinstimmt oder nicht zutrifft" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Gesamtpreis für diese Bestellung" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Gesamtmenge der bestellten Produkte" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Sind alle Produkte in der Bestellung digital" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Bestellungen" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Bild URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Bilder des Produkts" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Kategorie" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Rückmeldungen" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Marke" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Attribut-Gruppen" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -890,31 +903,31 @@ msgstr "Attribut-Gruppen" msgid "quantity" msgstr "Menge" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Anzahl der Rückmeldungen" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produkte" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Zum Verkauf stehende Produkte" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Werbeaktionen" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Anbieter" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -922,77 +935,77 @@ msgstr "Anbieter" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Auf dem Wunschzettel stehende Produkte" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Wunschzettel" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Name des Projekts" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Unternehmen E-Mail" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Name des Unternehmens" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Adresse des Unternehmens" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Telefonnummer des Unternehmens" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "E-Mail von\", muss manchmal anstelle des Host-Benutzerwerts verwendet werden" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "E-Mail-Host-Benutzer" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Höchstbetrag für die Zahlung" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Mindestbetrag für die Zahlung" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Konfiguration" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Sprachcode" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Name der Sprache" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Sprachflagge, falls vorhanden :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Eine Liste der unterstützten Sprachen abrufen" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Suchergebnisse für Produkte" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Suchergebnisse für Produkte" @@ -1074,8 +1087,7 @@ msgid "the specific product associated with this attribute's value" msgstr "" "Das spezifische Produkt, das mit dem Wert dieses Attributs verbunden ist" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Zugehöriges Produkt" @@ -1121,288 +1133,286 @@ msgstr "Fügen Sie eine detaillierte Beschreibung für diese Kategorie hinzu" msgid "category description" msgstr "Beschreibung der Kategorie" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Name dieser Marke" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Markenname" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Laden Sie ein Logo hoch, das diese Marke repräsentiert" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Marke kleines Bild" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Laden Sie ein großes Logo hoch, das diese Marke repräsentiert" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Großes Image der Marke" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Fügen Sie eine detaillierte Beschreibung der Marke hinzu" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Beschreibung der Marke" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "" "Optionale Kategorien, mit denen diese Marke in Verbindung gebracht wird" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Kategorien" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Kategorie, zu der dieses Produkt gehört" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Optional können Sie dieses Produkt mit einer Marke verknüpfen" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tags, die helfen, dieses Produkt zu beschreiben oder zu gruppieren" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Produkt-Tags" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Gibt an, ob dieses Produkt digital geliefert wird" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Ist das Produkt digital" -#: core/models.py:293 +#: core/models.py:301 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." -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Name des Produkts" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Fügen Sie eine detaillierte Beschreibung des Produkts hinzu" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Beschreibung des Produkts" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Teilenummer für dieses Produkt" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Teilnummer" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Speichert Anmeldeinformationen und Endpunkte, die für die API-Kommunikation " "des Anbieters erforderlich sind" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informationen zur Authentifizierung" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieren Sie den Aufschlag für Produkte, die von diesem Lieferanten " "bezogen werden" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Prozentualer Aufschlag des Lieferanten" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Name dieses Anbieters" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Name des Anbieters" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Kommentare der Nutzer über ihre Erfahrungen mit dem Produkt" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Kommentare zum Feedback" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" -"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese" -" Rückmeldung bezieht" +"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese " +"Rückmeldung bezieht" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Produkt zur Bestellung" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Vom Benutzer zugewiesene Bewertung für das Produkt" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Produktbewertung" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Rückmeldung" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Die für diese Bestellung verwendete Rechnungsadresse" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Optionaler Promo-Code für diese Bestellung" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Angewandter Promo-Code" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Die für diese Bestellung verwendete Lieferadresse" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Lieferadresse" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Aktueller Status des Auftrags in seinem Lebenszyklus" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Status der Bestellung" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "JSON-Struktur der Benachrichtigungen, die den Benutzern angezeigt werden " "sollen; in der Admin-UI wird die Tabellenansicht verwendet" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON-Darstellung der Auftragsattribute für diesen Auftrag" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "Der Benutzer, der die Bestellung aufgegeben hat" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Benutzer" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Der Zeitstempel, zu dem der Auftrag abgeschlossen wurde" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Zeit kaufen" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Ein von Menschen lesbarer Identifikator für den Auftrag" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "menschenlesbare ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Bestellung" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Ein Benutzer darf immer nur einen schwebenden Auftrag haben!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Sie können keine Produkte zu einem Auftrag hinzufügen, der nicht in " "Bearbeitung ist." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Sie können nicht mehr Produkte hinzufügen, als auf Lager sind" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} existiert nicht: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Sie können keine Produkte aus einer Bestellung entfernen, die nicht in " "Bearbeitung ist." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} existiert nicht mit Abfrage <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promocode existiert nicht" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sie können nur physische Produkte mit angegebener Lieferadresse kaufen!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Adresse ist nicht vorhanden" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Sie können im Moment nicht kaufen, bitte versuchen Sie es in ein paar " "Minuten erneut." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Ungültiger Force-Wert" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Sie können keine leere Bestellung kaufen!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Unzureichende Mittel für die Ausführung des Auftrags" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1410,192 +1420,191 @@ msgstr "" "Sie können nicht ohne Registrierung kaufen, bitte geben Sie die folgenden " "Informationen an: Kundenname, Kunden-E-Mail, Kunden-Telefonnummer" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Ungültige Zahlungsmethode" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Der Preis, den der Kunde zum Zeitpunkt des Kaufs für dieses Produkt bezahlt " "hat" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Einkaufspreis zum Zeitpunkt der Bestellung" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Interne Kommentare für Administratoren zu diesem bestellten Produkt" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Interne Kommentare" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Benutzerbenachrichtigungen" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON-Darstellung der Attribute dieses Artikels" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Bestellte Produktattribute" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Verweis auf den übergeordneten Auftrag, der dieses Produkt enthält" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Übergeordneter Auftrag" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Das spezifische Produkt, das mit dieser Auftragszeile verbunden ist" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Menge dieses spezifischen Produkts in der Bestellung" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Produktmenge" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Aktueller Status dieses Produkts im Auftrag" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Status der Produktlinie" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Interner Tag-Identifikator für das Produkt-Tag" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Tag name" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Benutzerfreundlicher Name für den Produktanhänger" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Tag-Anzeigename" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Produkt-Tag" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "" "Geben Sie einen alternativen Text für das Bild an, um die Barrierefreiheit " "zu gewährleisten." -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Bild-Alt-Text" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Laden Sie die Bilddatei für dieses Produkt hoch" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Produktbild" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Legt die Reihenfolge fest, in der die Bilder angezeigt werden" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Priorität anzeigen" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Das Produkt, das dieses Bild darstellt" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Produktbilder" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "" "Einzigartiger Code, den ein Nutzer zum Einlösen eines Rabatts verwendet" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Kennung des Promo-Codes" -#: core/models.py:953 +#: core/models.py:968 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" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Fester Rabattbetrag" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Prozentualer Rabatt, wenn der Festbetrag nicht verwendet wird" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Prozentualer Rabatt" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Zeitstempel, wann der Promocode abläuft" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Ende der Gültigkeitsdauer" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Zeitstempel, ab dem dieser Promocode gültig ist" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Beginn der Gültigkeitsdauer" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Zeitstempel, wann der Promocode verwendet wurde, leer, wenn noch nicht " "verwendet" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Zeitstempel der Verwendung" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Diesem Promocode zugewiesener Benutzer, falls zutreffend" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Zugewiesener Benutzer" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Promo-Code" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Promo-Codes" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1603,187 +1612,186 @@ msgstr "" "Es sollte nur eine Art von Rabatt definiert werden (Betrag oder " "Prozentsatz), aber nicht beides oder keines von beiden." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Promocode wurde bereits verwendet" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ungültiger Rabatttyp für Promocode {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Prozentualer Rabatt für die ausgewählten Produkte" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Prozentsatz der Ermäßigung" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Geben Sie einen eindeutigen Namen für diese Aktion an" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Name der Aktion" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Wählen Sie aus, welche Produkte in dieser Aktion enthalten sind" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Enthaltene Produkte" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Förderung" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Der Verkäufer, der dieses Produkt liefert, hat folgende Bestände" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Zugehöriger Anbieter" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Endpreis für den Kunden nach Aufschlägen" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Verkaufspreis" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Das mit diesem Bestandseintrag verbundene Produkt" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Der an den Verkäufer gezahlte Preis für dieses Produkt" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Einkaufspreis des Verkäufers" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Verfügbare Menge des Produkts auf Lager" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Vorrätige Menge" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Vom Hersteller zugewiesene SKU zur Identifizierung des Produkts" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU des Verkäufers" -#: core/models.py:1116 +#: core/models.py:1130 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" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Digitale Datei" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Bestandseinträge" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Produkte, die der Benutzer als gewünscht markiert hat" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Benutzer, dem diese Wunschliste gehört" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Besitzer der Wishlist" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Wunschzettel" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Herunterladen" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Herunterladen" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Sie können kein digitales Asset für eine nicht abgeschlossene Bestellung " "herunterladen" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Dokumentarfilm" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Dokumentarfilme" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Ungelöst" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Straße" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Bezirk" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Stadt" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Region" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Postleitzahl" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Land" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Längengrad, Breitengrad)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Vollständige JSON-Antwort vom Geocoder für diese Adresse" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Gespeicherte JSON-Antwort vom Geokodierungsdienst" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adresse" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adressen" @@ -1852,8 +1860,8 @@ msgstr "Hallo %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung #%(order.pk)s! Wir freuen uns, Ihnen " "mitteilen zu können, dass wir Ihre Bestellung in Arbeit genommen haben. " @@ -1939,8 +1947,8 @@ msgstr "Schlüssel" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung! Wir freuen uns, Ihren Kauf zu bestätigen. " "Nachstehend finden Sie die Details Ihrer Bestellung:" @@ -1967,8 +1975,7 @@ msgstr "Sowohl Daten als auch Timeout sind erforderlich" #: core/utils/caching.py:43 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" #: core/utils/db.py:7 #, python-brace-format @@ -1999,7 +2006,7 @@ msgstr "{config.PROJECT_NAME} | Auftrag ausgeliefert" msgid "you do not have permission to perform this action." msgstr "Sie haben nicht die Erlaubnis, diese Aktion durchzuführen." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Der Parameter NOMINATIM_URL muss konfiguriert werden!" @@ -2022,7 +2029,10 @@ msgstr "Sie können das digitale Asset nur einmal herunterladen" msgid "favicon not found" msgstr "Favicon nicht gefunden" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geokodierungsfehler: {e}" + +#~ msgid "translations" +#~ msgstr "Übersetzungen" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index 0d4c9764733ffa80a0c1c18ed6e2c059d1eedc75..bbf03cac1c688f9448476fbc675030568a4abf07 100644 GIT binary patch delta 7751 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 diff --git a/core/locale/en_GB/LC_MESSAGES/django.po b/core/locale/en_GB/LC_MESSAGES/django.po index 5e42fe43..d099d378 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -32,11 +32,9 @@ msgstr "Is Active" #: core/abstract.py:20 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" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -54,22 +52,22 @@ msgstr "Modified" msgid "when the object was last modified" msgstr "When the object was last edited" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activate selected %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Attribute Values" @@ -82,19 +80,19 @@ msgstr "Name" msgid "image" msgstr "Image" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Stocks" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -102,35 +100,31 @@ msgstr "Stocks" msgid "price" msgstr "Price" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Rating" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Basic Info" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Important Dates" -#: core/admin.py:218 -msgid "translations" -msgstr "Translations" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Order Product" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Order Products" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Is Business" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Config" @@ -194,31 +188,31 @@ msgstr "" "Apply only a key to read permitted data from cache.\n" "Apply key, data and timeout with authentication to write data to cache." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Get a list of supported languages" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Get application's exposable parameters" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Send a message to the support team" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "Global search endpoint to query across project's tables" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Purchase an order as a Business" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,8 +241,7 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" #: core/docs/drf/viewsets.py:57 -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" @@ -297,8 +290,7 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" #: core/docs/drf/viewsets.py:111 -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" @@ -372,19 +364,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -392,11 +384,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -404,207 +396,227 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(exact) Product slug" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "No search term provided." @@ -638,7 +650,7 @@ msgid "add a product to the order" msgstr "Add a product to the order" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} not found" @@ -655,67 +667,68 @@ msgstr "Remove all products from the order" msgid "buy an order" msgstr "Buy an order" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Add a product to the order" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} not found" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Buy an order" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Attributes" @@ -728,11 +741,11 @@ msgid "groups of attributes" msgstr "Groups of attributes" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Brands" @@ -740,7 +753,7 @@ msgstr "Brands" msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Markup Percentage" @@ -750,53 +763,52 @@ msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -804,47 +816,47 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -852,31 +864,31 @@ msgstr "Attribute groups" msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -884,76 +896,76 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Products search results" @@ -1034,8 +1046,7 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Associated product" @@ -1079,276 +1090,275 @@ msgstr "Add a detailed description for this category" msgid "category description" msgstr "Category description" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Name of this brand" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Brand name" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Brand small image" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Brand big image" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Brand description" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categories" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Product tags" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Product name" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Product description" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Part number" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Related order product" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Product rating" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Order status" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "User" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Buy time" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Order" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1356,183 +1366,183 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Invalid payment method" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "User notifications" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Parent order" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Product line status" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Tag name" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Product tag" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Product image" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Display priority" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Product images" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "End validity time" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Promo code" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1540,184 +1550,184 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Included products" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promotion" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Selling price" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Digital file" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Download" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Downloads" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentary" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Street" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "District" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "City" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Region" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Postal code" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Country" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Address" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adresses" @@ -1786,11 +1796,11 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" -" have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " +"have taken your order into work. Below are the details of your order:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1872,11 +1882,11 @@ msgstr "Key" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are" -" the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are " +"the details of your order:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1931,15 +1941,14 @@ msgstr "{config.PROJECT_NAME} | Order Delivered" msgid "you do not have permission to perform this action." msgstr "You do not have permission to perform this action." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URL parameter must be configured!" #: core/validators.py:16 #, python-brace-format 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" +msgstr "Image dimensions should not exceed w{max_width} x h{max_height} pixels" #: core/validators.py:22 msgid "invalid phone number format" @@ -1953,11 +1962,15 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" -#~ msgid "you cannot create a momental order without providing a billing address" +#~ msgid "translations" +#~ msgstr "Translations" + +#~ msgid "" +#~ "you cannot create a momental order without providing a billing address" #~ msgstr "" #~ "you cannot create a momental order without providing a billing address" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index 6fa08a5ec401eaa8256bd5090cee26c1ae17aaeb..d43ebe30af0d2a85ef40641e2501bf77992d96ef 100644 GIT binary patch delta 7751 zcmXxp3w+P@9>?+TpUpNlyN}ssS7w`;*+vYT8Y1^%NE%vNM4?jR$0)bl_CrOThA5E| ziIT3ma1Nb=B;Bo>Q@Tpd>EyiLeZTF|@A3Rze!uVK^ZopOLx1dSbbMzc@8g)DHHM#k z0b`P}A;OrUjf~lzq*h~o$TB7#e?;|%w6SJk9Q9t#5vWHdVInTXmbd|9@deDrBbb4| zBKLVFv8^$yX(+;Ud>fx*0cTMY)aMw}0-r+-_z%>5U!wX$bB&>BQjkYXUo6Ba7>f0- ze=D}9ehjq`lc(oAW7<(@MSU2i;4RLjs0p^B7H|L)@I4H{?_B*nhEWe^^g)<_Wmt_B zxEU3JvlxSa;4F;JH>M5qn`IP&aTgMOvkw*Ww@?p!gwgl|YNAFRjETf>)Pj;R3X4z+ zt#JKgT>E6_Y-~#Za@2wzLNATNQxu4bIpS`(h@Geh71&UALG{<5CSHw-z+YA7 zQH;bBs0Dw4n(%_FH|l6i6Y6mofk_>SzXr&mAsh#w&TJHFr{l31PDU+Yrt9B?8hE>_ zKaV=9SFkyrKt-+rHPHps5eJhPX_$sV*sGBEYbSkZ(8>p)LOΜ0)BlYEcucK<(f$ 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 P!-gO4wyS96;n4pB86NRJ delta 7804 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 diff --git a/core/locale/en_US/LC_MESSAGES/django.po b/core/locale/en_US/LC_MESSAGES/django.po index 66d41d55..d7be73a3 100644 --- a/core/locale/en_US/LC_MESSAGES/django.po +++ b/core/locale/en_US/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -27,11 +27,9 @@ msgstr "Is Active" #: core/abstract.py:20 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" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -49,22 +47,22 @@ msgstr "Modified" msgid "when the object was last modified" msgstr "When the object was last edited" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activate selected %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactivate selected %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Attribute Value" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Attribute Values" @@ -77,19 +75,19 @@ msgstr "Name" msgid "image" msgstr "Image" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Stocks" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -97,35 +95,31 @@ msgstr "Stocks" msgid "price" msgstr "Price" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Product rating" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Basic Info" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Important dates" -#: core/admin.py:218 -msgid "translations" -msgstr "Translations" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Order Product" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Order Products" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Is Business" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Config" @@ -189,31 +183,31 @@ msgstr "" "Apply only a key to read permitted data from cache.\n" "Apply key, data and timeout with authentication to write data to cache." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Get a list of supported languages" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Get application's exposable parameters" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Send a message to the support team" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Request a CORSed URL. Only https allowed." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "Global search endpoint to query across project's tables" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Purchase an order as a Business" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -242,8 +236,7 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" #: core/docs/drf/viewsets.py:57 -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" @@ -292,8 +285,7 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" #: core/docs/drf/viewsets.py:111 -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" @@ -367,19 +359,19 @@ msgstr "" "completed using the user's balance; If `force_payment` is used, a " "transaction is initiated." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "purchase an order without account creation" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizes the order purchase for a non-registered user." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -387,11 +379,11 @@ msgstr "" "Adds a product to an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -399,207 +391,226 @@ msgstr "" "Removes a product from an order using the provided `product_uuid` and " "`attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "List all attributes (simple view)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "For non-staff users, only their own wishlists are returned." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Retrieve a single attribute (detailed view)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Create an attribute" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Doesn't work for non-staff users." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Delete an attribute" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rewrite an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "Rewrite some fields of an existing attribute saving non-editables" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Add a product to the order" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Adds a product to an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Remove a product from the wishlist" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "Removes a product from an wishlist using the provided `product_uuid`" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Add many products to the wishlist" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "Adds many products to an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Remove a product from the order" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Removes many products from an wishlist using the provided `product_uuids`" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " +"`true`/`false` for booleans, integers, floats; otherwise treated as " +"string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," +"\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…`\n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`\n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " +"`true`/`false` for booleans, integers, floats; otherwise treated as " +"string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" "`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`,\n" "`b64-description=icontains-aGVhdC1jb2xk`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "List all products (simple view)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(exact) Product UUID" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Product name" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(list) Category names, case-insensitive" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(exact) Category UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(list) Tag names, case-insensitive" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Minimum stock price" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maximum stock price" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exact) Only active products" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Brand name" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimum stock quantity" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(exact) Product slug" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. physical" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Retrieve a single product (detailed view)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "Product UUID or Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Create a product" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Rewrite an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Update some fields of an existing product, preserving non-editable fields" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Delete a product" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "List all addresses" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Retrieve a single address" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Create a new address" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Delete an address" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Update an entire address" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Partially update an address" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Autocomplete address input" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "No search term provided." @@ -633,7 +644,7 @@ msgid "add a product to the order" msgstr "Add a product to the order" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} not found" @@ -650,67 +661,68 @@ msgstr "Remove all products from the order" msgid "buy an order" msgstr "Buy an order" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Please provide either order_uuid or order_hr_id - mutually exclusive!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Wrong type came from order.buy() method: {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Add a product to the order" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} not found" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Remove a product from the order" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Buy an order" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Original address string provided by the user" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Limit must be between 1 and 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - works like a charm" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Attributes" @@ -723,11 +735,11 @@ msgid "groups of attributes" msgstr "Groups of attributes" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categories" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Brands" @@ -735,7 +747,7 @@ msgstr "Brands" msgid "category image url" msgstr "Categories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Markup Percentage" @@ -745,53 +757,52 @@ msgid "which attributes and values can be used for filtering this category." msgstr "Which attributes and values can be used for filtering this category." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitude (Y coordinate)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitude (X coordinate)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "How to" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Rating value from 1 to 10, inclusive, or 0 if not set." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Represents feedback from a user." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Download url for this order product if applicable" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "A list of order products in this order" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Billing address" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -799,47 +810,47 @@ msgstr "" "Shipping address for this order, leave blank if same as billing address or " "if not applicable" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Total price of this order" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Total quantity of products in order" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Are all of the products in the order digital" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Orders" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Product's images" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Category" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Attribute groups" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -847,31 +858,31 @@ msgstr "Attribute groups" msgid "quantity" msgstr "Quantity" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Number of feedbacks" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Products" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Products on sale" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -879,76 +890,76 @@ msgstr "Vendor" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Wishlisted products" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Wishlists" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Project name" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Company Email" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Company Name" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Company Address" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Company Phone Number" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from', sometimes it must be used instead of host user value" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Email host user" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Maximum amount for payment" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Minimum amount for payment" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Language code" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Language name" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Language flag, if exists :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Get a list of supported languages" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Products search results" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Products search results" @@ -1029,8 +1040,7 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Associated product" @@ -1074,276 +1084,275 @@ msgstr "Add a detailed description for this category" msgid "category description" msgstr "Category description" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Name of this brand" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Brand name" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Upload a logo representing this brand" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Brand small image" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Upload a big logo representing this brand" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Brand big image" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Add a detailed description of the brand" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Brand description" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Optional categories that this brand is associated with" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categories" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Category this product belongs to" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Optionally associate this product with a brand" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tags that help describe or group this product" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Product tags" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indicates whether this product is digitally delivered" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Is product digital" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Provide a clear identifying name for the product" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Product name" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Add a detailed description of the product" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Product description" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Part number for this product" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Part number" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stores credentials and endpoints required for vendor's API communication" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Authentication info" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Define the markup for products retrieved from this vendor" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Vendor markup percentage" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Name of this vendor" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Vendor name" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "User-provided comments about their experience with the product" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Feedback comments" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "References the specific product in an order that this feedback is about" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Related order product" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "User-assigned rating for the product" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Product rating" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "The billing address used for this order" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Optional promo code applied to this order" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Applied promo code" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "The shipping address used for this order" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Shipping address" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Current status of the order in its lifecycle" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Order status" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "JSON structure of notifications to display to users, in admin UI the table-" "view is used" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON representation of order attributes for this order" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "The user who placed the order" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "User" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "The timestamp when the order was finalized" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Buy time" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "A human-readable identifier for the order" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "human-readable ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Order" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "A user must have only one pending order at a time!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "You cannot add products to an order that is not a pending one" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "You cannot add inactive products to order" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "You cannot remove products from an order that is not a pending one" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} does not exist with query <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promocode does not exist" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "You can only buy physical products with shipping address specified!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Address does not exist" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "You can not purchase at this moment, please try again in a few minutes." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Invalid force value" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "You cannot purchase an empty order!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Insufficient funds to complete the order" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1351,183 +1360,183 @@ msgstr "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Invalid payment method" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "The price paid by the customer for this product at purchase time" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Purchase price at order time" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Internal comments for admins about this ordered product" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Internal comments" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "User notifications" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON representation of this item's attributes" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Ordered product attributes" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Reference to the parent order that contains this product" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Parent order" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "The specific product associated with this order line" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Quantity of this specific product in the order" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Product quantity" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Current status of this product in the order" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Product line status" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Internal tag identifier for the product tag" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Tag name" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "User-friendly name for the product tag" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Tag display name" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Product tag" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Provide alternative text for the image for accessibility" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Image alt text" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Upload the image file for this product" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Product image" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Determines the order in which images are displayed" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Display priority" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "The product that this image represents" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Product images" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Unique code used by a user to redeem a discount" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Fixed discount amount applied if percent is not used" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Fixed discount amount" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Percentage discount applied if fixed amount is not used" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Percentage discount" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Timestamp when the promocode expires" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "End validity time" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Timestamp from which this promocode is valid" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Start validity time" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "Timestamp when the promocode was used, blank if not used yet" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Usage timestamp" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "User assigned to this promocode if applicable" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Assigned user" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Promo code" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1535,184 +1544,184 @@ msgstr "" "Only one type of discount should be defined (amount or percent), but not " "both or neither." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Promocode has been used already" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Invalid discount type for promocode {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Percentage discount for the selected products" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Discount percentage" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Provide a unique name for this promotion" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Promotion name" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Select which products are included in this promotion" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Included products" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promotion" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "The vendor supplying this product stock" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Associated vendor" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Final price to the customer after markups" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Selling price" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "The product associated with this stock entry" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "The price paid to the vendor for this product" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Vendor purchase price" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Available quantity of the product in stock" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Quantity in stock" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Vendor-assigned SKU for identifying the product" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "Vendor's SKU" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Digital file associated with this stock if applicable" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Digital file" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Stock entries" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Products that the user has marked as wanted" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "User who owns this wishlist" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Wishlist's Owner" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Wishlist" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Download" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Downloads" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "You can not download a digital asset for a non-finished order" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentary" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Unresolved" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Street" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "District" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "City" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Region" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Postal code" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Country" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Full JSON response from geocoder for this address" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Stored JSON response from the geocoding service" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Address" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adresses" @@ -1781,11 +1790,11 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" -" have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " +"have taken your order into work. Below are the details of your order:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1867,11 +1876,11 @@ msgstr "Key" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are" -" the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are " +"the details of your order:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1926,15 +1935,14 @@ msgstr "{config.PROJECT_NAME} | Order Delivered" msgid "you do not have permission to perform this action." msgstr "You do not have permission to perform this action." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URL parameter must be configured!" #: core/validators.py:16 #, python-brace-format 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" +msgstr "Image dimensions should not exceed w{max_width} x h{max_height} pixels" #: core/validators.py:22 msgid "invalid phone number format" @@ -1948,7 +1956,10 @@ msgstr "You can only download the digital asset once" msgid "favicon not found" msgstr "favicon not found" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" + +#~ msgid "translations" +#~ msgstr "Translations" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index 1a714bb172d0339370340fb53d39ab2bcc3a6ca0..d2692e9e4ceeb26f8e4c2630a8bdb644e65bfd52 100644 GIT binary patch delta 7751 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 delta 7798 zcmXxp349jC8OQN`F(e^CLhgiIZ*Fq{F(C#BXE_2GKq}!ziGYek)I?AtxN^%a*>DEr z5EQ&hh$tXZEFTmqT6!Q_3s%u$1hl1K(H89Q&y4TKH{W??cV}mwd3KWzUVgvD#$zqq zvk?KS9X_-y-eUI)D3p$a8o>r8t@G2ydO}<<8mE`rqcnr#2JOR z;nNt5yY2D)m`{8THIa6Cy3Tc+E;QQHaW5v}Y-jsAS326@c+{RvMWwVFTjMO$1fI3W zn@|HEwDJ3>tvZRJ_%$kXS5P+!VinrrX!K(N2H^19$iG%Hk`B%MZdB^0qb{6}nphp` z2AfeUc*7ol8#T~z)HokuIDU*e{~K(F*HI}CC9Qfo(yZNG8oKdFjKKR)13ihl@f@UX zoE1pDId7x({Jf2Cpw7=NqL8r=yW%v|M0TJi@Rp5_VI=WiQ4?{$vyI@+W+G`A!GS{5 z7W7A@dKhvqXDn)B%dr?YpawjNy3tptExd}#;0@Fkw&7$wwsENA-H@cXPG1_j(F{~A zxY!%Fp)zw0wUU3Mp6`~on=Qyk^%tQA>~G_tsPQIZ4nBw_SdTmK1nT^1I-~XcKShH{ zI;&7s{2nTmC$JP-5-?Mz58jG3sFiF)P3RDEs`E9*ViNgR28%HY2cjP*po;KmRL!i% za6SLe(-?xgaV*}z;W(z7nb0e!s&2#qco?<9AZDjx3`b=u4waExkz_gDP!oOxRU_-| z@vW!{H=(PdxIRCnmvyLtx1lDq8}-=z78CIVYDLYc8wUK! zyeC?tCfo%z&M>4doqJHlxDGYWYp5-B575wn@1eHh9I9A;wg&YzD+@yvO*(eKao7(R zql)z-)PR0Eb)$UL!up`bD??>y7;0gYkcGL^el7c(H)RrPyg{fJ*hq}VO4N9dV~n2vc{Jka*nm2*3038XP!}9SZNXW4 z{1O%rUqe6U@JyW)jB^GW|U;o_Hc^0=4MgMPn@uvgcet{&NZj zo0Zj~_Ob!BCA(1ryo-7G8Qz9LcNn{3F7Y(X#xsOOn(KE1ZNRa@XjA>96r?it{8*7I-CtQ{saSb{V?-tPsX;yccC&=iCWP7 zVdQ^2jn#C7;$>8o`tCH<8;!a!0hRI`?1Tl#1L91y{V!Nw#t`}&QR5uMc6btl@eAyL z-(nrcxx;xq(s%`xvdCYX6_uh+oQ3)LGG^gvycKVtGL+5!b;e1ky4>p zpb_SGLMPOCQ!oSFIvU++yoD|C3bw|dPN;C!Xk{N@7+yy0U5imB13?%;T#R}_4Mfd+GU~d;$ZOx( zjatC>s0my}ZJ9ILOe6@kFh53PK8EP|{}m0bWC#Y~Y^=lu*b&cTD#q|4?}uGbdpR3b zGYe5gwHhOFA1Wg!P+Rmds%Rs|nj#&6s+~H_*Ykghh8~j^qpGRxG1FR)F`TdmRZPcG6Z#9Ph%O?@a;_mym^11D^B#ExHE{4$lc_A+MBEqkg8Kpk zG4et4UTE*q(13XujwPsSAB4d;-o{f<13!T(vNfm)zKlxwyBLQj?eS)8MSLBTF=(23 zoU<^8xHm?j`yh={HBhO18Xby8`xDFg3ko!AzG(vGb=HpJ(%uk^P@I7Mw;7CGcVki#4u{aF3q9*(= z)P!0+YPKL5RZE>wHBg2c?>^f<7hRpOnub!n6L}h)Jy?u;F$^!DYU01B8+EES1C^nQ zbP~43Dpba5u@D!a#@&Y+?{_x7h8>7o)R6x{Gzx0Wo2eF6)jO~g9z>=5BC4papfV8h zm@&qhh8nOVcE|Df8(fc?z@Qm+3s6Nq9X0V?Gsyoq8hhxNjG;5lzunYe4sjFa;u-9W z!H+vmIrhL9T!N9f)w&l|<;O7|n^8}}El-&9Ly&i!lZv%C-=#rTou5%BKKi8Dt0!;- z@mg$$7f~y@ju9Bd)w*$eRHizjGH^F)oMjk=9%{ln@ix4QC7At`$%uQ8ZPcPxx*G4m z!`KGf%rbi#k4k+8#$y5Y!NGVtF2lKa1odY!*F63m6=tji8o>z-Of=Os?Kk) z7=xZRsqTT=f@;*tHd=pg`>$Ek*h1}PIYwgz#^N;VJggvYKo#e|P&M^G4Ab);@Qg`W z6zakRRO*UsJP-?rC!!wHRj3FQD%8Pi)8i zonZ2&6vd++w>%q{Vk+?v^y9;*nLmf!a2>|spHUOOh`rFq9}P-zA8Q4whNhy%tHmtb zh^}UIgocXi7;0vJ!an#dcESAl=6A#t97DVnmCFBOHU=&*ndpexiegla^h8Z$H0o)o zLO;&4{o5Cif2DFC9a_mpsQ5hUg6r0(g=T_zsFfC@Zaf%O)zzpQZAVRPA8MQo;cV=Ii!lq|N8Ru{yaWBunj)>jWa2eA4fmqX zPhD(|55!>NYSdOgg{qn5E)A{xFb=~{u`A{*F;zPWgNXNI8orAu_?0zasmVkJs=wS? zWnG53^uLM|@idOaF3ZdxFz!kknRI-Is`9AiW}yDoDcF(z1*lqh155A{>cx|}!dQX% zIuCXJ9_)`_U@2y=G=Du$!k)xCjjnUv9>{vmoHz|fal%VD1b;@&c*rWpxf8crucD3* zs52R=M?H2MF%18NIrt^2X4-fZAf}?WU765rM_1^ERR;vI|Gy3DiU~8qC5*V*&9Z8}CDnbH0K6tGaK{p_K=2 zG>>5s<`EA^T{s&x;Op2MzeH_W`X=*-M-FPsN-!0BVuop=hBv8*j7egHcW@5e%H z#!^glx0)BsXe0^F8r0qvZZq%l(WuO6*FLem??taTF)w@}ol$%Ta&9y>dXFZi zCp||io1VVN?|_@1v;0&_e&aPJM*8-7M-xA5wSeO>eBbhRC6y+vqoq#*R${B0k@>O5 z^Cjo`mU$hLd--;H4<)Dj>bzCSWxl=Mr^zY4E#8mG_xo0Pl_{Nk&v>g+mKM)tjPYFh zYrbn~|A;S|p>FeJv2_do7?)jRG_kM`(O3F_0<9-rs=Qqz4az06cE zewXdj@t^ssNc6u*pZETl8XLca)-CpoqdJ98F!2u0mlo@L){9Tei(XDVk^T(6^Z4cv z@Ak%|rF3ng)l82*v-vJ2)@Lf_+O~@;_-^1^#J7UuOTEUlyzn(dzkFuW*zR3QOKCfY z-VsEf^L@>WPcQYo=~blX`Rctn>3Q+1?KS;5dYbQ4zOU1_%{!W26u*&{o`x#E)qGVy zm-%k>!ZZ5%Uhpb1Mx}1%oQLT9fbS;SbMTkX6dL=RKFoNapmlZS^qQ*5$EH3!y{4(C WVsbw^CeN5OiFis))9UpTLjDi=K@PG2 diff --git a/core/locale/es_ES/LC_MESSAGES/django.po b/core/locale/es_ES/LC_MESSAGES/django.po index 84bc7da1..523da08b 100644 --- a/core/locale/es_ES/LC_MESSAGES/django.po +++ b/core/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,8 +29,7 @@ msgstr "Está activo" #: core/abstract.py:20 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" @@ -51,22 +50,22 @@ msgstr "Modificado" msgid "when the object was last modified" msgstr "Cuándo se editó el objeto por última vez" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activar %(verbose_name_plural)s seleccionados" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desactivar %(verbose_name_plural)s seleccionados" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Atributo Valor" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Valores de los atributos" @@ -79,19 +78,19 @@ msgstr "Nombre" msgid "image" msgstr "Imagen" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Imágenes" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Acciones" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Acciones" msgid "price" msgstr "Precio" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Valoración del producto" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Información básica" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Fechas importantes" -#: core/admin.py:218 -msgid "translations" -msgstr "Traducciones" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Pedir un producto" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Pedir productos" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Es Negocio" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Configurar" @@ -189,40 +184,41 @@ 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é." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Obtener los parámetros exponibles de la aplicación" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Enviar un mensaje al equipo de asistencia" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Solicitar una URL CORSed. Solo se permite https." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Punto final de búsqueda global para consultar todas las tablas del proyecto" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Comprar un pedido como empresa" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Compra un pedido como empresa, utilizando los `productos` proporcionados con" -" `product_uuid` y `attributes`." +"Compra un pedido como empresa, utilizando los `productos` proporcionados con " +"`product_uuid` y `attributes`." #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -245,8 +241,7 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescribir un grupo de atributos existente guardando los no editables" #: core/docs/drf/viewsets.py:57 -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" @@ -274,8 +269,7 @@ msgstr "Reescribir un atributo existente guardando los no editables" #: core/docs/drf/viewsets.py:84 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" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -298,11 +292,10 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescribir un valor de atributo existente guardando los no editables" #: core/docs/drf/viewsets.py:111 -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" +"Reescribir algunos campos de un valor de atributo existente guardando los no " +"editables" #: core/docs/drf/viewsets.py:118 msgid "list all categories (simple view)" @@ -380,19 +373,19 @@ msgstr "" "finaliza utilizando el saldo del usuario; Si se utiliza `force_payment`, se " "inicia una transacción." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "comprar un pedido sin crear una cuenta" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza la compra del pedido para un usuario no registrado." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -400,11 +393,11 @@ msgstr "" "Añade un producto a un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -412,221 +405,241 @@ msgstr "" "Elimina un producto de un pedido utilizando el `product_uuid` y los " "`attributes` proporcionados." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Listar todos los atributos (vista simple)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Para los usuarios que no forman parte del personal, sólo se devuelven sus " "propias listas de deseos." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar un único atributo (vista detallada)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Crear un atributo" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "No funciona para los usuarios que no son personal." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Borrar un atributo" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescribir un atributo existente guardando los no editables" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 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" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Añadir un producto al pedido" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Añade un producto a una lista de deseos utilizando el `product_uuid` " "proporcionado" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Eliminar un producto de la lista de deseos" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Elimina un producto de una lista de deseos utilizando el `product_uuid` " "proporcionado." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Añadir muchos productos a la lista de deseos" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Añade varios productos a una lista de deseos utilizando los `product_uuids` " "proporcionados." -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Eliminar un producto del pedido" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Elimina varios productos de una lista de deseos utilizando los " "`product_uuids` proporcionados." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`." -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Listar todos los productos (vista simple)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "UUID (exacto) del producto" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Nombre del producto" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "" "(lista) Nombres de categoría, sin distinción entre mayúsculas y minúsculas" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(exacto) Categoría UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "" "(lista) Nombres de etiquetas, sin distinción entre mayúsculas y minúsculas" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Precio mínimo de las acciones" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Precio máximo de las acciones" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exacto) Sólo productos activos" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Marca" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantidad mínima de existencias" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(exacto) Babosa del producto" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exacto) Digital frente a físico" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Recuperar un solo producto (vista detallada)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID o babosa del producto" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Crear un producto" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescribir un producto existente conservando los campos no editables" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Actualizar algunos campos de un producto existente, conservando los campos " "no editables" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Eliminar un producto" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Enumerar todas las direcciones" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Recuperar una única dirección" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Crear una nueva dirección" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Borrar una dirección" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Actualizar una dirección completa" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Actualizar parcialmente una dirección" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Autocompletar direcciones" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "No se proporciona ningún término de búsqueda." @@ -660,7 +673,7 @@ msgid "add a product to the order" msgstr "Añadir un producto al pedido" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pedido {order_uuid} no encontrado" @@ -677,68 +690,68 @@ msgstr "Eliminar todos los productos del pedido" msgid "buy an order" msgstr "Comprar un pedido" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 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}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Añadir un producto al pedido" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista de deseos {wishlist_uuid} no encontrada" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Eliminar un producto del pedido" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Comprar un pedido" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Cadena de dirección original proporcionada por el usuario" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "El límite debe estar entre 1 y 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona a las mil maravillas" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Atributos" @@ -751,11 +764,11 @@ msgid "groups of attributes" msgstr "Grupos de atributos" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categorías" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Marcas" @@ -763,7 +776,7 @@ msgstr "Marcas" msgid "category image url" msgstr "Categorías" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Porcentaje de recargo" @@ -774,56 +787,54 @@ msgstr "" "Qué atributos y valores se pueden utilizar para filtrar esta categoría." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Vendedores" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitud (coordenada Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitud (coordenada X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Cómo" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 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." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Representa la opinión de un usuario." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notificaciones" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Descargar url para este producto de pedido si procede" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Una lista de los productos del pedido" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Dirección de facturación" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -831,47 +842,47 @@ msgstr "" "Dirección de envío para este pedido, dejar en blanco si es la misma que la " "de facturación o si no procede" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Precio total de este pedido" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Cantidad total de productos del pedido" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "¿Están todos los productos en el pedido digital" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "URL de la imagen" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Imágenes del producto" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Categoría" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Comentarios" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -879,31 +890,31 @@ msgstr "Grupos de atributos" msgid "quantity" msgstr "Cantidad" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Número de reacciones" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Productos" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Códigos promocionales" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Productos a la venta" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promociones" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Vendedor" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -911,77 +922,77 @@ msgstr "Vendedor" msgid "product" msgstr "Producto" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Productos deseados" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Listas de deseos" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Nombre del proyecto" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Correo electrónico de la empresa" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Nombre de la empresa" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Dirección de la empresa" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Teléfono de la empresa" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a veces debe utilizarse en lugar del valor del usuario host" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Correo electrónico del usuario anfitrión" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Importe máximo de pago" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Importe mínimo de pago" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configuración" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Código de idioma" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Nombre de la lengua" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Bandera de idioma, si existe :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Obtener una lista de los idiomas admitidos" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Resultados de la búsqueda de productos" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Resultados de la búsqueda de productos" @@ -1062,8 +1073,7 @@ msgstr "Atributo de este valor" msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Producto asociado" @@ -1107,282 +1117,281 @@ msgstr "Añadir una descripción detallada para esta categoría" msgid "category description" msgstr "Descripción de la categoría" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Nombre de esta marca" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Marca" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Cargar un logotipo que represente a esta marca" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Marca pequeña imagen" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Sube un logotipo grande que represente a esta marca" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Gran imagen de marca" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Añadir una descripción detallada de la marca" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Descripción de la marca" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Categorías opcionales a las que se asocia esta marca" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categorías" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Categoría a la que pertenece este producto" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Si lo desea, puede asociar este producto a una marca" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Etiquetas que ayudan a describir o agrupar este producto" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Etiquetas del producto" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indica si este producto se entrega digitalmente" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "¿Es digital el producto?" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Proporcionar un nombre que identifique claramente el producto" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Nombre del producto" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Añada una descripción detallada del producto" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Descripción del producto" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Número de pieza de este producto" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Número de pieza" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Almacena las credenciales y los puntos finales necesarios para la " "comunicación API del proveedor" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Información de autenticación" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definir el margen de beneficio para los productos recuperados de este " "proveedor" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Porcentaje de margen del vendedor" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Nombre de este vendedor" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Nombre del vendedor" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Comentarios de los usuarios sobre su experiencia con el producto" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Comentarios" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Hace referencia al producto específico de un pedido sobre el que trata esta " "opinión" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Producto relacionado con el pedido" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Valoración del producto asignada por el usuario" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Valoración del producto" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Comentarios" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "La dirección de facturación utilizada para este pedido" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "La dirección de envío utilizada para este pedido" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Dirección de envío" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Estado actual del pedido en su ciclo de vida" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Estado del pedido" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "Estructura JSON de las notificaciones para mostrar a los usuarios, en la " "interfaz de administración se utiliza la vista de tabla." -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "Representación JSON de los atributos de la orden para esta orden" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "El usuario que realizó el pedido" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Usuario" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Fecha de finalización de la orden" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Comprar tiempo" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Un identificador legible por el ser humano para la orden" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "ID legible por humanos" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Pida" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Un usuario sólo puede tener una orden pendiente a la vez." -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "No puede añadir productos a un pedido que no esté pendiente" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "No se pueden añadir productos inactivos al pedido" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "No puede añadir más productos de los disponibles en stock" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} no existe: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "No puede eliminar productos de un pedido que no esté pendiente" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} no existe con la consulta <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promocode no existe" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" "Sólo puede comprar productos físicos con la dirección de envío especificada." -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "La dirección no existe" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "No puede comprar en este momento, por favor inténtelo de nuevo en unos " "minutos." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Valor de fuerza no válido" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "No se puede comprar un pedido vacío." -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Fondos insuficientes para completar el pedido" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1390,187 +1399,187 @@ msgstr "" "no puede comprar sin registrarse, facilite la siguiente información: nombre " "del cliente, correo electrónico del cliente, número de teléfono del cliente" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Método de pago no válido" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "" "El precio pagado por el cliente por este producto en el momento de la compra" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Precio de compra en el momento del pedido" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarios internos para los administradores sobre este producto solicitado" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Comentarios internos" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Notificaciones a los usuarios" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "Representación JSON de los atributos de este elemento" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Atributos ordenados del producto" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Referencia al pedido principal que contiene este producto" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Orden de los padres" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "El producto específico asociado a esta línea de pedido" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Cantidad de este producto específico en el pedido" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Cantidad de productos" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Estado actual de este producto en el pedido" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Estado de la línea de productos" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Identificador interno de la etiqueta del producto" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Nombre de la etiqueta" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Nombre fácil de usar para la etiqueta del producto" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Nombre de la etiqueta" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Etiqueta del producto" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "" "Proporcione un texto alternativo para la imagen en aras de la accesibilidad" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Texto alternativo de la imagen" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Cargar el archivo de imagen para este producto" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Imagen del producto" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Determina el orden de visualización de las imágenes" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Prioridad de visualización" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "El producto que representa esta imagen" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Imágenes de productos" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Código único utilizado por un usuario para canjear un descuento" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Promo code identifier" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Se aplica un descuento fijo si no se utiliza el porcentaje" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Importe fijo del descuento" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Porcentaje de descuento aplicado si no se utiliza el importe fijo" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Porcentaje de descuento" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Fecha de caducidad del promocode" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Hora de fin de validez" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Fecha a partir de la cual es válido este promocode" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Hora de inicio de validez" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Fecha en la que se utilizó el promocode, en blanco si aún no se ha utilizado" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Marca de tiempo de uso" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Usuario asignado a este promocode si procede" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Usuario asignado" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Promo code" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Promo codes" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1578,184 +1587,184 @@ msgstr "" "Sólo debe definirse un tipo de descuento (importe o porcentaje), pero no " "ambos ni ninguno." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "El código promocional ya ha sido utilizado" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de descuento no válido para promocode {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Porcentaje de descuento para los productos seleccionados" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Porcentaje de descuento" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Proporcione un nombre único para esta promoción" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Nombre de la promoción" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Descripción de la promoción" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Seleccione los productos incluidos en esta promoción" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Productos incluidos" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promoción" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "El vendedor que suministra este producto dispone de" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Proveedor asociado" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Precio final al cliente después de márgenes" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Precio de venta" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "El producto asociado a esta entrada en stock" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "El precio pagado al vendedor por este producto" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Precio de compra al vendedor" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Cantidad disponible del producto en stock" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Cantidad en stock" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU asignada por el proveedor para identificar el producto" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU del vendedor" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Archivo digital asociado a esta acción, si procede" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Archivo digital" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Entradas en existencias" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Productos que el usuario ha marcado como deseados" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Usuario propietario de esta lista de deseos" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Propietario de Wishlist" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Lista de deseos" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Descargar" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Descargas" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "No puede descargar un activo digital para un pedido no finalizado" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documental" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentaries" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Sin resolver" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Calle" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Distrito" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Ciudad" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Región" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Promo code" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "País" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocalización Punto(Longitud, Latitud)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Respuesta JSON completa del geocodificador para esta dirección" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Respuesta JSON almacenada del servicio de geocodificación" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Dirección" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Direcciones" @@ -1824,8 +1833,8 @@ msgstr "Hola %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "¡Gracias por su pedido #%(order.pk)s! Nos complace informarle de que hemos " "recibido su pedido. A continuación encontrará los detalles de su pedido:" @@ -1910,8 +1919,8 @@ msgstr "Clave" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Gracias por su pedido. Nos complace confirmarle su compra. A continuación " "encontrará los detalles de su pedido:" @@ -1970,7 +1979,7 @@ msgstr "{config.PROJECT_NAME} | Pedido entregado" msgid "you do not have permission to perform this action." msgstr "No tiene permiso para realizar esta acción." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "El parámetro NOMINATIM_URL debe estar configurado." @@ -1993,7 +2002,10 @@ msgstr "Sólo puede descargar el activo digital una vez" msgid "favicon not found" msgstr "favicon no encontrado" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Error de geocodificación: {e}" + +#~ msgid "translations" +#~ msgstr "Traducciones" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index b953828b17f305fd8fe44ef513aa5e8d2e9a3d91..a74e467f8ababaa8d8ad27eb7430fe64d00d46a8 100644 GIT binary patch delta 7751 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 GBjmpkVGOAN delta 7797 zcmX}x30ziH8prYbqKKj>iy+9pC?KdL;)aeQ8ET@DTbK&uo=XK$5?XFy zT3MRfrddu|F%5lQMhq~Xw+7X*mFS3qDedR%n!gUyldoT?DiK$qJ zN!XzEjptk^okA52`Iv}ja6c3H6*a)_bOyyEs183yJ@+H(eq0xw_yUbl6BdTm5K1_xqm z?1?k*X55d8z^@pJP1_PBOvF}tVyAK%0vtVMojA{&OLYWwh z`KXBwvG=Fg_Sx3u7|8u6P!rmTZUTkZC=eB=&OXqnz2kJC-W(Om0@VGP*bJXUMPMIl zFAt&?@Ci12&3KhAlsDT1lg|;{x6EF+wW6@2-Un?0#gJwP&75ZtYFD^t)tP(ZA zCe#Y{+4~1j9o3@x`2a)k6zchJFc`0+Lf(|H>U1PoySo%L@GuO;@u-ewq6VIaP0x5*}vu>*F+$*76cpeFE=t-p(5)X$4Nl zKS7}ocjE~B1BjiwIcF%>&lN1#GK-})rRQhyuc@k>m=`aMmETcIM- z23ulx>u@ZfUf$C+$?z%-N{Tm8p+1V*qjRW8e2SXTPpE7U>}7t8;!rE;jB4+L+LB`A zW$Kh-F|I^K<{~O76Y|Xc{w@V2-AvQ~s%tMRQ5|nZO=vgj*u9Q1coemwi>LwX_crf| z#;6H*LG?2T$xEjMm5l3A{p><*q5CQYb@(=FE51M_%b(VOe6zApRFN}BVi zj>GzztQ~;5Uxk|B2Gl@%FbPjsuVO3eE&7@E9vDTv6g7ca=nkf^jsnqhE+hXqS^dq* zW})_S18PflqdGW@8F&tF!hl+Ac2%&R>PgQyQiMW_t5poN2o z|40gJXlRO8P+97`&17#l>Wk5+kf&pN%t8)`Q)=6{S)ay0+V`OPIf%h{92??i*cLBg zB}TeMydEh$g9=&L?Pf)}s0U|bCO(a=@ieC4AE*eWvVR?M3~H~}qqg7>>dkl&)o;KM z^PA8f)!#TwLAR1ZcM30|KVHSg_$z9!8w};lV*)n8n^7GXp(1e)Ho{G)t=x%l= z-=cD=!7!5xx1lCF3z?|vY^I=43Tp5ChMNckU?}w*)C;OFYUX26-&=yb_MP3R z1$>X1z%|sCId_>lfja-aDQG2y7=UxI3>RTL{2CK6f*1MC*afwhb5J?+ zFe<6mU>LrPipWva7M(&RZRiM-q(e}-Q;C^6{~uD&G4Z?8>}4h@o6B$kZbEHAGMTC` z7GMWlik(Uknv_qhN2=f8oT0Z%)<9jTlqUCVg^S}7EW-@7w)kQ zTdi-QB69%)u>M4|vL>j#Pe!8cWFkk|S%U16a~2hWPLs@=vk=cvzY9BK?%k%p3T#gO zL6?HEauo*SM(ZwYNc|8h``HPcMV^$E1>M$K!V-M6y$6^ppMs3kd)C+1U-Z)kmO}z#c`opL#JBga; z1#7)~O?!eh8v_{MxrIV74n$>d32Nq**alz6PIw8mg2ekA=T=O|K{x}o1xHX3s6$Qc z2Wz8pv-k1Vo~ZjJ=&CS-f>yc=wH1|^jvFx)-$os$k5EY%R$&Hgi^`2#P!Sr0O>h+I zeBW)`w_{)G`!EErqZZa|I`QY|JKd(6clt)u0EaOP&!HyPWQN(AFlv{X@55_qG4D_ zeJMuZ8B~P6$1wDpX?_bLPV3TtsV)}gkf z(}N}wy|5Ye0_$+pL?_@)xDFMuS`5eISb!I>9k!coe(pzMOX_Ylg?I}4Q6c;gH8bBF zGw^r}rhYFfdw<+T`(r%^AKpRg-lM{Q;2`Q{HKn^8&pi8Yw;+?W7H(%v6~ z8Q&R0L3=(Ol_X10d$$>NOkTt|{0x-~&O-C+7l=_*d!e2mfxYow)I#>6`h5qrkn@;` z-(d;{FCzY$Q4R&YTK|UXupjorG1v`vp_1_%oPfO^Hha1Q6`6flAJ3t({ZrIJzCrEv zpQs50KVtv9fK93AJwp67^V?{URWj^5!lD4crg=VhQHp4lKnw48Wd`n$Q(sGWGG+rKo|P zv-OXx*R6@m&C2`WD4r{~9>isbj??9b`MaV8W)fkE?YxRm||2tFgr(p;x*+yUkoPzDK z0_Wm3tcNM<%$B5~_B0FIVmH)#VIpcmi?Ih*;VbwrWNhcr^=6_;k8zT8{);K3VKu6w zH&NOBU+jpH)#jaDh&ql-QAu?KwPlx4&&O{tukc$ipL#jw;)|&JSFjYLHkt*`LN}0x zxfG&s8EOJGs1=+_c%kAI?8-2ZVB5Qm_iJAldf4wm3$?1Z;IVcvlAQT4s3+_;3% z7`2J`tAm_PYy;+D9L~fnT#wqrT2z+*h&?cIv)Q5&Y)XAR>XgjDc$|Z3e;ixjv$p;g zDk3MbAvW9M@-T(SEhc1ZQ3IaEA`IASa-tX&^2w-I=W2|_7w!FjqmuXn4#xJ|hz>5m z5*yTy{r|4POkNT@F1s#w2H5?Tjj0(|JRD1Gvb3DsYd%Xj7|2!%}jh`~P(;btk zk3&st3F^70P!m3dG58z$aG(Cg$9p+C%lC|TF*-HyDckgj&ubae(zo5qiOC3gn8xN@ zT3k5p@$QRBj$K75m6m*5sBZYwap_z=@9l{R^S$gHi8v>P znNJ@h`SR^t>nQ(%gyjF9;gp`HeIeIlT>5PAiV`01J?qsbB!_#nMVMwM$lhPz`4W?T zE4@~UUer$8rbqtds^HT9B7MR;k=Pbt$-r1-9TDP5#RA0^)s>iSH=Hn!~I3a)CdY_6f)U*_#e$_QCY?XS=M6rS|H zO^OeiN2?O<6RureRC2EGMQ>\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,8 +29,7 @@ msgstr "Est actif" #: core/abstract.py:20 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." @@ -51,22 +50,22 @@ msgstr "Modifié" msgid "when the object was last modified" msgstr "Date de la dernière modification de l'objet" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activer les %(verbose_name_plural)s sélectionnés" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Désactiver les %(verbose_name_plural)s sélectionnés" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Valeur de l'attribut" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Valeurs des attributs" @@ -79,19 +78,19 @@ msgstr "Nom" msgid "image" msgstr "Image" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Images" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Stocks" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Stocks" msgid "price" msgstr "Prix" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Evaluation du produit" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Informations de base" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Important Dates" -#: core/admin.py:218 -msgid "translations" -msgstr "Traductions" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Commander un produit" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Commander des produits" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Est l'entreprise" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Config" @@ -188,35 +183,37 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Obtenir les paramètres exposables de l'application" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Envoyer un message à l'équipe d'assistance" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Demander une URL CORSée. Seul https est autorisé." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Point d'arrivée de la recherche globale pour interroger les tables du projet" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Acheter une commande en tant qu'entreprise" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,8 +244,7 @@ msgstr "" "modifiables" #: core/docs/drf/viewsets.py:57 -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" @@ -277,8 +273,8 @@ msgstr "" #: core/docs/drf/viewsets.py:84 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" -" non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " +"non modifiables" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -303,8 +299,7 @@ msgstr "" "modifiables" #: core/docs/drf/viewsets.py:111 -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" @@ -381,23 +376,23 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est" -" complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " +"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est " +"complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " "utilisé, une transaction est initiée." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "acheter une commande sans créer de compte" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finalise l'achat d'une commande pour un utilisateur non enregistré." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -405,11 +400,11 @@ msgstr "" "Ajoute un produit à une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -417,220 +412,241 @@ msgstr "" "Supprime un produit d'une commande en utilisant le `product_uuid` et les " "`attributs` fournis." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Liste de tous les attributs (vue simple)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Pour les utilisateurs non fonctionnaires, seules leurs propres listes de " "souhaits sont renvoyées." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Récupérer un seul attribut (vue détaillée)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Créer un attribut" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Ne fonctionne pas pour les utilisateurs non fonctionnaires." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Supprimer un attribut" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Réécrire un attribut existant en sauvegardant les éléments non modifiables" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" -" non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " +"non modifiables" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Ajouter un produit à la commande" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Ajoute un produit à une liste de souhaits en utilisant le `product_uuid` " "fourni" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Supprimer un produit de la liste de souhaits" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Supprime un produit d'une liste de souhaits en utilisant l'identifiant " "`product_uuid` fourni." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Ajouter plusieurs produits à la liste de souhaits" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Ajoute plusieurs produits à une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Supprimer un produit de la commande" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Supprime plusieurs produits d'une liste de souhaits en utilisant les " "`product_uuids` fournis" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Liste de tous les produits (vue simple)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "UUID (exact) du produit" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Nom du produit" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(liste) Noms de catégories, insensibles à la casse" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "UUID (exact) de la catégorie" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(liste) Noms d'étiquettes, insensibles à la casse" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Prix minimum de l'action" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Prix maximum de l'action" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exact) Uniquement les produits actifs" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Nom de marque" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantité minimale en stock" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exact) Numérique ou physique" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Récupérer un seul produit (vue détaillée)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID ou Slug du produit" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Créer un produit" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Réécrire un produit existant en préservant les champs non modifiables" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Mettre à jour certains champs d'un produit existant, en préservant les " "champs non modifiables" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Supprimer un produit" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Liste de toutes les adresses" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Récupérer une seule adresse" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Créer une nouvelle adresse" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Supprimer une adresse" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Mise à jour d'une adresse entière" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Mise à jour partielle d'une adresse" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Saisie automatique des adresses" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Aucun terme de recherche n'est fourni." @@ -664,7 +680,7 @@ msgid "add a product to the order" msgstr "Ajouter un produit à la commande" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "L'ordre {order_uuid} n'a pas été trouvé" @@ -681,70 +697,71 @@ msgstr "Supprimer tous les produits de la commande" msgid "buy an order" msgstr "Acheter une commande" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Veuillez fournir soit order_uuid, soit order_hr_id - les deux s'excluent " "mutuellement !" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" "Le mauvais type provient de la méthode order.buy() : {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Ajouter un produit à la commande" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Wishlist {wishlist_uuid} introuvable" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Supprimer un produit de la commande" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Acheter une commande" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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." -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Chaîne d'adresse originale fournie par l'utilisateur" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "La limite doit être comprise entre 1 et 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - fonctionne comme un charme" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Attributs" @@ -757,11 +774,11 @@ msgid "groups of attributes" msgstr "Groupes d'attributs" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Catégories" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Marques" @@ -769,7 +786,7 @@ msgstr "Marques" msgid "category image url" msgstr "Catégories" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Markup Percentage" @@ -781,102 +798,101 @@ msgstr "" "catégorie." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Vendeurs" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordonnée Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitude (coordonnée X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Comment" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valeur d'évaluation de 1 à 10 inclus, ou 0 si elle n'est pas définie." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Représente le retour d'information d'un utilisateur." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notifications" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "URL de téléchargement pour ce produit de la commande, le cas échéant" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Une liste des produits commandés dans cette commande" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Adresse de facturation" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -"Adresse d'expédition pour cette commande, laisser vide si elle est identique" -" à l'adresse de facturation ou si elle n'est pas applicable" +"Adresse d'expédition pour cette commande, laisser vide si elle est identique " +"à l'adresse de facturation ou si elle n'est pas applicable" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Prix total de la commande" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Quantité totale de produits dans la commande" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Tous les produits de la commande sont-ils numériques ?" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Commandes" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Image URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Images du produit" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Catégorie" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Retour d'information" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Marque" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Groupes d'attributs" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -884,31 +900,31 @@ msgstr "Groupes d'attributs" msgid "quantity" msgstr "Quantité" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Nombre de retours d'information" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produits" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Produits en vente" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promotions" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Vendeur" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -916,78 +932,78 @@ msgstr "Vendeur" msgid "product" msgstr "Produit" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Produits en liste de souhaits" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Liste de souhaits" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Nom du projet" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Courriel de l'entreprise" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Nom de l'entreprise" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Adresse de l'entreprise" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Numéro de téléphone de l'entreprise" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', parfois il doit être utilisé à la place de la valeur de " "l'utilisateur de l'hôte" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Utilisateur de l'hôte de messagerie" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Montant maximum du paiement" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Montant minimum pour le paiement" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configuration" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Code langue" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Nom de la langue" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Drapeau linguistique, s'il existe :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Obtenir la liste des langues prises en charge" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Résultats de la recherche de produits" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Résultats de la recherche de produits" @@ -1068,8 +1084,7 @@ msgstr "Attribut de cette valeur" msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Produit associé" @@ -1114,287 +1129,285 @@ msgstr "Ajouter une description détaillée pour cette catégorie" msgid "category description" msgstr "Description de la catégorie" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Nom de cette marque" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Nom de marque" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Télécharger un logo représentant cette marque" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Petite image de marque" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Télécharger un grand logo représentant cette marque" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Une grande image de marque" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Ajouter une description détaillée de la marque" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Description de la marque" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Catégories facultatives auxquelles cette marque est associée" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Catégories" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Catégorie à laquelle appartient ce produit" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Possibilité d'associer ce produit à une marque" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Étiquettes permettant de décrire ou de regrouper ce produit" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Étiquettes du produit" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indique si ce produit est livré numériquement" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Le produit est-il numérique ?" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Fournir un nom d'identification clair pour le produit" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Nom du produit" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Ajouter une description détaillée du produit" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Description du produit" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Numéro de pièce pour ce produit" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Numéro de pièce" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stocke les informations d'identification et les points d'extrémité " "nécessaires à la communication avec l'API du fournisseur." -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informations sur l'authentification" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" "Définir la majoration pour les produits récupérés auprès de ce fournisseur" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Pourcentage de marge du vendeur" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Nom de ce vendeur" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Nom du vendeur" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Commentaires des utilisateurs sur leur expérience du produit" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Commentaires" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Fait référence au produit spécifique d'une commande sur lequel porte le " "retour d'information." -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Produit de commande apparenté" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Note attribuée par l'utilisateur au produit" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Evaluation du produit" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Retour d'information" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "L'adresse de facturation utilisée pour cette commande" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Code promo optionnel appliqué à cette commande" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Code promo appliqué" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "L'adresse de livraison utilisée pour cette commande" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Adresse de livraison" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Statut actuel de la commande dans son cycle de vie" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Statut de la commande" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "Structure JSON des notifications à afficher aux utilisateurs ; dans " "l'interface d'administration, la vue en tableau est utilisée." -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "Représentation JSON des attributs de cette commande" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "L'utilisateur qui a passé la commande" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Utilisateur" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "L'heure à laquelle la commande a été finalisée." -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Temps d'achat" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Un identifiant lisible par l'homme pour la commande" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "ID lisible par l'homme" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Commande" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !" -#: core/models.py:543 +#: core/models.py:551 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." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Vous ne pouvez pas ajouter des produits inactifs à la commande" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "" "Vous ne pouvez pas ajouter plus de produits que ceux disponibles en stock" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} n'existe pas : {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Vous ne pouvez pas retirer des produits d'une commande qui n'est pas en " "cours." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} n'existe pas avec la requête <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Le code promotionnel n'existe pas" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" "Vous ne pouvez acheter que des produits physiques dont l'adresse de " "livraison est spécifiée !" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "L'adresse n'existe pas" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Vous ne pouvez pas acheter en ce moment, veuillez réessayer dans quelques " "minutes." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Valeur de force non valide" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Vous ne pouvez pas acheter une commande vide !" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Insuffisance de fonds pour compléter la commande" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1403,189 +1416,185 @@ msgstr "" "informations suivantes : nom du client, courriel du client, numéro de " "téléphone du client" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Méthode de paiement non valide" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "Le prix payé par le client pour ce produit au moment de l'achat" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Prix d'achat au moment de la commande" -#: core/models.py:779 +#: core/models.py:794 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é" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Commentaires internes" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Notifications aux utilisateurs" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "Représentation JSON des attributs de cet élément" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Attributs du produit ordonnés" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Référence à l'ordre parent qui contient ce produit" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Ordonnance parentale" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Le produit spécifique associé à cette ligne de commande" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Quantité de ce produit spécifique dans la commande" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Quantité de produits" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Statut actuel de ce produit dans la commande" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Statut de la ligne de produits" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Identifiant interne de l'étiquette du produit" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Nom du jour" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Nom convivial pour l'étiquette du produit" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Nom d'affichage de l'étiquette" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Étiquette du produit" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Fournir un texte alternatif pour l'image afin d'en faciliter l'accès" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Texte alt de l'image" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Télécharger le fichier image pour ce produit" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Image du produit" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Détermine l'ordre d'affichage des images" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Priorité à l'affichage" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Le produit que cette image représente" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Images du produit" -#: core/models.py:945 +#: core/models.py:960 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" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Identifiant du code promotionnel" -#: core/models.py:953 +#: core/models.py:968 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é" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Montant de l'escompte fixe" -#: core/models.py:960 +#: core/models.py:975 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é" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Pourcentage de réduction" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Date d'expiration du code promotionnel" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Heure de fin de validité" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Date à partir de laquelle ce code promotionnel est valable" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Heure de début de validité" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore" -" été utilisé." +"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore " +"été utilisé." -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Horodatage de l'utilisation" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Utilisateur assigné à ce code promo, le cas échéant" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Utilisateur assigné" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Code promo" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Codes promotionnels" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1593,186 +1602,186 @@ msgstr "" "Un seul type de remise doit être défini (montant ou pourcentage), mais pas " "les deux ni aucun des deux." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Le code promotionnel a déjà été utilisé" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Type de réduction non valide pour le code promo {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Pourcentage de réduction pour les produits sélectionnés" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Pourcentage de réduction" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Donnez un nom unique à cette promotion" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Nom de la promotion" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Promotion description" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Sélectionnez les produits inclus dans cette promotion" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Produits inclus" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promotion" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Le vendeur qui fournit ce stock de produits" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Vendeur associé" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Prix final pour le client après majoration" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Prix de vente" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Le produit associé à cette entrée de stock" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Le prix payé au vendeur pour ce produit" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Prix d'achat du vendeur" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Quantité disponible du produit en stock" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Quantité en stock" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU attribué par le fournisseur pour identifier le produit" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "UGS du vendeur" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Fichier numérique associé à ce stock, le cas échéant" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Fichier numérique" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Entrées de stock" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Produits que l'utilisateur a marqués comme souhaités" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Utilisateur qui possède cette liste de souhaits" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Propriétaire de la liste de souhaits" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Liste de souhaits" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Télécharger" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Téléchargements" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Vous ne pouvez pas télécharger un bien numérique pour une commande non " "terminée." -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Non résolu" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Rue" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "District" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Ville" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Région" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Code postal" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Pays" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Point de géolocalisation (longitude, latitude)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Réponse JSON complète du géocodeur pour cette adresse" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Réponse JSON stockée du service de géocodage" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adresse" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adresses" @@ -1841,8 +1850,8 @@ msgstr "Bonjour %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Merci pour votre commande #%(order.pk)s ! Nous avons le plaisir de vous " "informer que nous avons pris en compte votre commande. Vous trouverez ci-" @@ -1928,8 +1937,8 @@ msgstr "Clé" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Nous vous remercions pour votre commande ! Nous avons le plaisir de " "confirmer votre achat. Vous trouverez ci-dessous les détails de votre " @@ -1958,8 +1967,8 @@ msgstr "Les données et le délai d'attente sont tous deux nécessaires" #: core/utils/caching.py:43 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" -"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre" -" 0 et 216000 secondes." +"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre " +"0 et 216000 secondes." #: core/utils/db.py:7 #, python-brace-format @@ -1990,7 +1999,7 @@ msgstr "{config.PROJECT_NAME} | Commande livrée" msgid "you do not have permission to perform this action." msgstr "Vous n'êtes pas autorisé à effectuer cette action." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Le paramètre NOMINATIM_URL doit être configuré !" @@ -2013,7 +2022,10 @@ msgstr "Vous ne pouvez télécharger le bien numérique qu'une seule fois" msgid "favicon not found" msgstr "favicon introuvable" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erreur de géocodage : {e}" + +#~ msgid "translations" +#~ msgstr "Traductions" diff --git a/core/locale/hi_IN/LC_MESSAGES/django.po b/core/locale/hi_IN/LC_MESSAGES/django.po index 978503c3..5f0b5087 100644 --- a/core/locale/hi_IN/LC_MESSAGES/django.po +++ b/core/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,22 +50,22 @@ msgstr "" msgid "when the object was last modified" msgstr "" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "" @@ -78,19 +78,19 @@ msgstr "" msgid "image" msgstr "" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -98,35 +98,31 @@ msgstr "" msgid "price" msgstr "" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "" -#: core/admin.py:218 -msgid "translations" -msgstr "" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "" @@ -188,31 +184,31 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "" -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -357,100 +353,100 @@ msgid "" "transaction is initiated." msgstr "" -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -467,119 +463,127 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "" @@ -613,7 +617,7 @@ msgid "add a product to the order" msgstr "" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" @@ -630,66 +634,66 @@ msgstr "" msgid "buy an order" msgstr "" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "" @@ -702,11 +706,11 @@ msgid "groups of attributes" msgstr "" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "" @@ -714,7 +718,7 @@ msgstr "" msgid "category image url" msgstr "" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "" @@ -727,94 +731,94 @@ msgstr "" msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -822,31 +826,31 @@ msgstr "" msgid "quantity" msgstr "" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -854,76 +858,76 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "" @@ -1004,7 +1008,7 @@ msgstr "" msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:144 core/models.py:808 core/models.py:922 core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "" @@ -1048,635 +1052,635 @@ msgstr "" msgid "category description" msgstr "" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "" -#: core/models.py:415 +#: core/models.py:423 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:574 core/models.py:591 core/models.py:615 core/models.py:1163 -#: core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "" @@ -1880,7 +1884,7 @@ msgstr "" msgid "you do not have permission to perform this action." msgstr "" -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "" @@ -1901,7 +1905,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index 09b91d6431cee1bfaf4e2875002797bdea10b0d3..cf4bf66b87169b4d1a3c0a113f0194e273e53033 100644 GIT binary patch delta 7751 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 delta 7796 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 Tue@~B)ER_hYu{Y+YRLZqp7s}8 diff --git a/core/locale/it_IT/LC_MESSAGES/django.po b/core/locale/it_IT/LC_MESSAGES/django.po index fd9b3a13..fd4972cc 100644 --- a/core/locale/it_IT/LC_MESSAGES/django.po +++ b/core/locale/it_IT/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -34,11 +34,10 @@ msgstr "È attivo" #: core/abstract.py:20 msgid "" -"if set to false, this object can't be seen by users without needed " -"permission" +"if set to false, this object can't be seen by users without needed permission" msgstr "" -"Se impostato a false, questo oggetto non può essere visto dagli utenti senza" -" i necessari permessi." +"Se impostato a false, questo oggetto non può essere visto dagli utenti senza " +"i necessari permessi." #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -56,22 +55,22 @@ msgstr "Modificato" msgid "when the object was last modified" msgstr "Quando l'oggetto è stato modificato per l'ultima volta" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Attivare il %(verbose_name_plural)s selezionato" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Disattivare il %(verbose_name_plural)s selezionato" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Valore dell'attributo" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Valori degli attributi" @@ -84,19 +83,19 @@ msgstr "Nome" msgid "image" msgstr "Immagine" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Immagini" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stock" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Le scorte" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -104,35 +103,31 @@ msgstr "Le scorte" msgid "price" msgstr "Prezzo" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Valutazione" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Informazioni di base" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Date importanti" -#: core/admin.py:218 -msgid "translations" -msgstr "Traduzioni" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Ordina il prodotto" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Ordinare i prodotti" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "È Business" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Configurazione" @@ -194,34 +189,35 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Ottenere i parametri esponibili dell'applicazione" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Inviate un messaggio al team di assistenza" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Richiedere un URL CORSed. È consentito solo https." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Endpoint di ricerca globale per interrogare tutte le tabelle del progetto" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Acquistare un ordine come azienda" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -251,8 +247,7 @@ msgstr "" "Riscrivere un gruppo di attributi esistente salvando i non modificabili" #: core/docs/drf/viewsets.py:57 -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" @@ -307,8 +302,7 @@ msgstr "" "modificabili" #: core/docs/drf/viewsets.py:111 -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" @@ -337,8 +331,8 @@ msgstr "" #: core/docs/drf/viewsets.py:138 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" -" modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " +"modificabili" #: core/docs/drf/viewsets.py:145 msgid "list all orders (simple view)" @@ -374,8 +368,8 @@ msgstr "" #: core/docs/drf/viewsets.py:167 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" -" modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " +"modificabili" #: core/docs/drf/viewsets.py:171 msgid "purchase an order" @@ -388,22 +382,22 @@ msgid "" "transaction is initiated." msgstr "" "Finalizza l'acquisto dell'ordine. Se si utilizza `forza_bilancio`, " -"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza" -" `forza_pagamento`, viene avviata una transazione." +"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza " +"`forza_pagamento`, viene avviata una transazione." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "acquistare un ordine senza creare un account" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizza l'acquisto dell'ordine per un utente non registrato." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -411,11 +405,11 @@ msgstr "" "Aggiunge un prodotto a un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -423,221 +417,240 @@ msgstr "" "Rimuove un prodotto da un ordine utilizzando il `product_uuid` e gli " "`attributi` forniti." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Elenco di tutti gli attributi (vista semplice)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"Per gli utenti che non fanno parte del personale, vengono restituite solo le" -" loro liste dei desideri." +"Per gli utenti che non fanno parte del personale, vengono restituite solo le " +"loro liste dei desideri." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperare un singolo attributo (vista dettagliata)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Creare un attributo" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Non funziona per gli utenti che non fanno parte del personale." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Cancellare un attributo" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Riscrivere un attributo esistente salvando gli elementi non modificabili" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Riscrivere alcuni campi di un attributo esistente salvando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Aggiunge un prodotto a una lista dei desideri utilizzando il `product_uuid` " "fornito." -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Rimuovere un prodotto dalla lista dei desideri" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Rimuove un prodotto da una wishlist utilizzando il `product_uuid` fornito." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Aggiungere molti prodotti alla lista dei desideri" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Aggiunge molti prodotti a una lista dei desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Rimuove molti prodotti da una lista di desideri utilizzando i " "`product_uuids` forniti." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Elenco di tutti i prodotti (visualizzazione semplice)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(esatto) UUID del prodotto" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Nome del prodotto" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "" "(elenco) Nomi di categoria, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(esatto) UUID della categoria" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(elenco) Nomi di tag, senza distinzione tra maiuscole e minuscole" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Prezzo minimo delle azioni" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Prezzo massimo del titolo" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(esatto) Solo prodotti attivi" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Nome del marchio" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantità minima di scorte" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(esatto) Prodotto slug" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(esatto) Digitale e fisico" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Recuperare un singolo prodotto (vista dettagliata)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID o Slug del prodotto" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Creare un prodotto" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 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" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aggiornare alcuni campi di un prodotto esistente, preservando i campi non " "modificabili" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Eliminare un prodotto" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Elenco di tutti gli indirizzi" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Recuperare un singolo indirizzo" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Creare un nuovo indirizzo" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Cancellare un indirizzo" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Aggiornare un intero indirizzo" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Aggiornare parzialmente un indirizzo" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Inserimento automatico dell'indirizzo" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Non è stato fornito alcun termine di ricerca." @@ -671,7 +684,7 @@ msgid "add a product to the order" msgstr "Aggiungere un prodotto all'ordine" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Ordine {order_uuid} non trovato" @@ -688,69 +701,69 @@ msgstr "Rimuovere tutti i prodotti dall'ordine" msgid "buy an order" msgstr "Acquistare un ordine" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Si prega di fornire order_uuid o order_hr_id, che si escludono a vicenda!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 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}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Aggiungere un prodotto all'ordine" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista dei desideri {wishlist_uuid} non trovata" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Rimuovere un prodotto dall'ordine" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Acquistare un ordine" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Stringa di indirizzo originale fornita dall'utente" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Il limite deve essere compreso tra 1 e 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch: funziona a meraviglia" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Attributi" @@ -763,11 +776,11 @@ msgid "groups of attributes" msgstr "Gruppi di attributi" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categorie" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Marche" @@ -775,7 +788,7 @@ msgstr "Marche" msgid "category image url" msgstr "Categorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Percentuale di markup" @@ -787,53 +800,52 @@ msgstr "" "categoria." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Venditori" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordinata Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordinata X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Come" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valore di valutazione da 1 a 10, incluso, o 0 se non impostato." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Rappresenta il feedback di un utente." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notifiche" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "URL di download per il prodotto dell'ordine, se applicabile" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Un elenco di prodotti ordinati in questo ordine" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Indirizzo di fatturazione" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -841,47 +853,47 @@ msgstr "" "Indirizzo di spedizione per questo ordine, lasciare in bianco se è uguale " "all'indirizzo di fatturazione o se non è applicabile" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Prezzo totale dell'ordine" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Quantità totale di prodotti in ordine" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Tutti i prodotti sono presenti nell'ordine digitale" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Ordini" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "URL immagine" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Immagini del prodotto" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Feedback" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Marchio" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Gruppi di attributi" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -889,31 +901,31 @@ msgstr "Gruppi di attributi" msgid "quantity" msgstr "Quantità" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Numero di feedback" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Prodotti" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Codici promozionali" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Prodotti in vendita" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promozioni" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Venditore" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -921,77 +933,77 @@ msgstr "Venditore" msgid "product" msgstr "Prodotto" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Prodotti desiderati" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Liste dei desideri" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Nome del progetto" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Email aziendale" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Nome della società" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Indirizzo dell'azienda" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Numero di telefono dell'azienda" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', a volte deve essere usato al posto del valore dell'utente host" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Utente host dell'e-mail" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Importo massimo per il pagamento" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Importo minimo per il pagamento" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configurazione" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Codice lingua" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Nome della lingua" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Bandiera della lingua, se esiste :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Ottenere un elenco delle lingue supportate" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Risultati della ricerca dei prodotti" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Risultati della ricerca dei prodotti" @@ -1072,8 +1084,7 @@ msgstr "Attributo di questo valore" msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Prodotto associato" @@ -1118,281 +1129,280 @@ msgstr "Aggiungere una descrizione dettagliata per questa categoria" msgid "category description" msgstr "Descrizione della categoria" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Nome del marchio" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Nome del marchio" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Caricare un logo che rappresenti questo marchio" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Immagine piccola del marchio" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Caricare un grande logo che rappresenti questo marchio" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Grande immagine del marchio" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Aggiungere una descrizione dettagliata del marchio" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Descrizione del marchio" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Categorie opzionali a cui questo marchio è associato" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categorie" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Categoria a cui appartiene questo prodotto" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Associare facoltativamente questo prodotto a un marchio" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tag che aiutano a descrivere o raggruppare questo prodotto" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Tag del prodotto" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indica se il prodotto è consegnato in formato digitale" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Il prodotto è digitale" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Fornire un nome identificativo chiaro per il prodotto" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Nome del prodotto" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Aggiungere una descrizione dettagliata del prodotto" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Descrizione del prodotto" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Numero di parte per questo prodotto" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Numero di parte" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Memorizza le credenziali e gli endpoint necessari per la comunicazione API " "del fornitore." -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informazioni sull'autenticazione" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Definire il markup per i prodotti recuperati da questo fornitore" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Percentuale di ricarico del fornitore" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Nome del fornitore" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Nome del fornitore" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Commenti degli utenti sulla loro esperienza con il prodotto" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Commenti di feedback" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Riferisce il prodotto specifico in un ordine di cui si tratta il feedback." -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Prodotto correlato all'ordine" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Valutazione del prodotto assegnata dall'utente" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Valutazione del prodotto" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "L'indirizzo di fatturazione utilizzato per questo ordine" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Codice promozionale opzionale applicato a questo ordine" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Codice promozionale applicato" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "L'indirizzo di spedizione utilizzato per questo ordine" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Indirizzo di spedizione" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Stato attuale dell'ordine nel suo ciclo di vita" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Stato dell'ordine" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "Struttura JSON delle notifiche da mostrare agli utenti; nell'interfaccia " "utente dell'amministratore viene utilizzata la visualizzazione a tabella." -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "Rappresentazione JSON degli attributi dell'ordine per questo ordine" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "L'utente che ha effettuato l'ordine" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Utente" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Il timestamp del momento in cui l'ordine è stato finalizzato" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Acquista tempo" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Un identificatore leggibile dall'uomo per l'ordine" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "ID leggibile dall'uomo" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Ordine" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Un utente può avere un solo ordine pendente alla volta!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Non è possibile aggiungere prodotti a un ordine che non sia in sospeso." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Non è possibile aggiungere all'ordine prodotti inattivi" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} non esiste: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "Non è possibile rimuovere i prodotti da un ordine che non è in corso." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} non esiste con la query <{query}>." -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Il codice promozionale non esiste" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" "È possibile acquistare solo prodotti fisici con indirizzo di spedizione " "specificato!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "L'indirizzo non esiste" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "In questo momento non è possibile acquistare, riprovare tra qualche minuto." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Valore di forza non valido" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Non è possibile acquistare un ordine vuoto!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Fondi insufficienti per completare l'ordine" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1401,373 +1411,372 @@ msgstr "" "seguenti informazioni: nome del cliente, e-mail del cliente, numero di " "telefono del cliente" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Metodo di pagamento non valido" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "" "Il prezzo pagato dal cliente per questo prodotto al momento dell'acquisto." -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Prezzo di acquisto al momento dell'ordine" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Commenti interni per gli amministratori su questo prodotto ordinato" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Commenti interni" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Notifiche degli utenti" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "Rappresentazione JSON degli attributi di questo elemento" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Attributi del prodotto ordinati" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Riferimento all'ordine padre che contiene questo prodotto" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Ordine dei genitori" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Il prodotto specifico associato a questa riga d'ordine" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Quantità di questo prodotto specifico nell'ordine" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Quantità di prodotto" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Stato attuale di questo prodotto nell'ordine" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Stato della linea di prodotti" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Identificatore interno dell'etichetta del prodotto" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Nome del tag" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Nome intuitivo per l'etichetta del prodotto" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Nome del tag" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Etichetta del prodotto" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "" "Fornire un testo alternativo per l'immagine ai fini dell'accessibilità." -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Testo alt dell'immagine" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Caricare il file immagine per questo prodotto" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Immagine del prodotto" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Determina l'ordine di visualizzazione delle immagini" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Priorità del display" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Il prodotto che questa immagine rappresenta" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Immagini del prodotto" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Codice univoco utilizzato da un utente per riscattare uno sconto" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Identificatore del codice promozionale" -#: core/models.py:953 +#: core/models.py:968 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" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Importo fisso dello sconto" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Sconto percentuale applicato se l'importo fisso non viene utilizzato" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Sconto percentuale" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Data di scadenza del codice promozionale" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Tempo di validità finale" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Data a partire dalla quale il codice promozionale è valido" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Ora di inizio validità" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Timestamp in cui è stato utilizzato il codice promozionale, vuoto se non " "ancora utilizzato" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Timestamp d'uso" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Utente assegnato a questo codice promozionale, se applicabile" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Utente assegnato" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Codice promozionale" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Codici promozionali" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"È necessario definire un solo tipo di sconto (importo o percentuale), ma non" -" entrambi o nessuno." +"È necessario definire un solo tipo di sconto (importo o percentuale), ma non " +"entrambi o nessuno." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Il codice promozionale è già stato utilizzato" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo di sconto non valido per il codice promozionale {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Percentuale di sconto per i prodotti selezionati" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Percentuale di sconto" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Fornite un nome unico per questa promozione" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Nome della promozione" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Descrizione della promozione" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Selezionare i prodotti inclusi in questa promozione" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Prodotti inclusi" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promozione" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Il venditore che fornisce questo stock di prodotti" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Venditore associato" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Prezzo finale al cliente dopo i ricarichi" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Prezzo di vendita" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Il prodotto associato a questa voce di magazzino" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Il prezzo pagato al venditore per questo prodotto" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Prezzo di acquisto del fornitore" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Quantità disponibile del prodotto in magazzino" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Quantità in magazzino" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU assegnato dal fornitore per identificare il prodotto" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU del venditore" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "File digitale associato a questo stock, se applicabile" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "File digitale" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Voci di magazzino" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Prodotti che l'utente ha contrassegnato come desiderati" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Utente che possiede questa wishlist" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Proprietario della lista dei desideri" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Lista dei desideri" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Scaricare" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Scaricamento" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "Non è possibile scaricare un bene digitale per un ordine non finito." -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentario" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentari" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Non risolto" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Via" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Distretto" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Città" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Regione" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Codice postale" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Paese" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Punto di geolocalizzazione(Longitudine, Latitudine)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Risposta JSON completa di geocoder per questo indirizzo" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Risposta JSON memorizzata dal servizio di geocodifica" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Indirizzo" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Indirizzi" @@ -1836,8 +1845,8 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Grazie per il vostro ordine #%(order.pk)s! Siamo lieti di informarla che " "abbiamo preso in carico il suo ordine. Di seguito sono riportati i dettagli " @@ -1865,8 +1874,8 @@ msgid "" "if you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" -" %(config.EMAIL_HOST_USER)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " +"%(config.EMAIL_HOST_USER)s." #: core/templates/digital_order_created_email.html:130 #, python-format @@ -1908,8 +1917,8 @@ msgid "" "if you have any questions, feel free to contact our support at " "%(contact_email)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" -" %(contact_email)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " +"%(contact_email)s." #: core/templates/digital_order_delivered_email.html:162 #, python-format @@ -1923,8 +1932,8 @@ msgstr "Chiave" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Grazie per il vostro ordine! Siamo lieti di confermare il suo acquisto. Di " "seguito sono riportati i dettagli dell'ordine:" @@ -1983,7 +1992,7 @@ msgstr "{config.PROJECT_NAME} | Ordine consegnato" msgid "you do not have permission to perform this action." msgstr "Non si ha il permesso di eseguire questa azione." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Il parametro NOMINATIM_URL deve essere configurato!" @@ -1991,8 +2000,8 @@ msgstr "Il parametro NOMINATIM_URL deve essere configurato!" #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}" -" pixel" +"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height} " +"pixel" #: core/validators.py:22 msgid "invalid phone number format" @@ -2006,7 +2015,10 @@ msgstr "È possibile scaricare l'asset digitale una sola volta" msgid "favicon not found" msgstr "favicon non trovata" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Errore di geocodifica: {e}" + +#~ msgid "translations" +#~ msgstr "Traduzioni" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index 2411262d1f203cc301fca8cef3c1a1cb50909033..fc8d693e2705c8a839bec9d9687aefb7fcff6bd5 100644 GIT binary patch delta 7751 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -19,7 +19,8 @@ msgstr "ユニークID" #: core/abstract.py:12 msgid "unique id is used to surely identify any database object" -msgstr "ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" +msgstr "" +"ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" #: core/abstract.py:19 msgid "is active" @@ -27,9 +28,10 @@ msgstr "アクティブ" #: core/abstract.py:20 msgid "" -"if set to false, this object can't be seen by users without needed " -"permission" -msgstr "falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーには見えない。" +"if set to false, this object can't be seen by users without needed permission" +msgstr "" +"falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーに" +"は見えない。" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -47,22 +49,22 @@ msgstr "変形" msgid "when the object was last modified" msgstr "オブジェクトの最終編集日時" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "選択した %(verbose_name_plural)s をアクティブにする。" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "選択された %(verbose_name_plural)s を非アクティブにする。" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "属性値" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "属性値" @@ -75,19 +77,19 @@ msgstr "名称" msgid "image" msgstr "画像" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "画像" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "在庫" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "株式" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -95,35 +97,31 @@ msgstr "株式" msgid "price" msgstr "価格" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "製品評価" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "基本情報" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "重要な日程" -#: core/admin.py:218 -msgid "translations" -msgstr "翻訳" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "商品のご注文" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "商品のご注文" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "ビジネス" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "コンフィグ" @@ -185,37 +183,40 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" "許可されたデータをキャッシュから読み出すには、キーのみを適用する。\n" -"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用する。" +"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用" +"する。" -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "サポートされている言語のリストを取得する" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "アプリケーションの公開可能なパラメータを取得する" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "サポートチームにメッセージを送る" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "CORSされたURLを要求する。httpsのみ許可。" -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "プロジェクト全体のテーブルを検索するグローバル検索エンドポイント" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "ビジネスとして注文を購入する" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスとして注文を購入する。" +msgstr "" +"提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスと" +"して注文を購入する。" #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -238,9 +239,10 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" #: core/docs/drf/viewsets.py:57 -msgid "" -"rewrite some fields of an existing attribute group saving non-editables" -msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgid "rewrite some fields of an existing attribute group saving non-editables" +msgstr "" +"既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存す" +"る。" #: core/docs/drf/viewsets.py:64 msgid "list all attributes (simple view)" @@ -264,7 +266,8 @@ msgstr "既存の属性を書き換える。" #: core/docs/drf/viewsets.py:84 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "" +"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -287,9 +290,9 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" #: core/docs/drf/viewsets.py:111 -msgid "" -"rewrite some fields of an existing attribute value saving non-editables" -msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" +msgid "rewrite some fields of an existing attribute value saving non-editables" +msgstr "" +"既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" #: core/docs/drf/viewsets.py:118 msgid "list all categories (simple view)" @@ -357,236 +360,265 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " -"が使用された場合、トランザクションが開始されます。" +"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用し" +"て購入が完了します。 `force_payment` が使用された場合、トランザクションが開始" +"されます。" -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "アカウントを作成せずに注文を購入する" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "は、未登録ユーザーの注文購入を確定します。" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" +msgstr "" +"指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" +msgstr "" +"指定された `product_uuid` と `attributes` を使用して、注文から商品を削除す" +"る。" -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "すべての属性をリストアップ(シンプルな表示)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "スタッフ以外のユーザーには、自分のウィッシュリストのみが返されます。" -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "単一の属性を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "属性を作成する" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "スタッフ以外のユーザーには使えない。" -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "属性を削除する" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "既存の属性を書き換える。" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "" +"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "注文に商品を追加する" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "指定された `product_uuid` を使ってウィッシュリストに商品を追加する。" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "ウィッシュリストから商品を削除する" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" +msgstr "" +"指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "ウィッシュリストに多くの商品を追加する" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" +msgstr "" +"指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "注文から商品を削除する" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" +msgstr "" +"指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " +"`true`/`false` for booleans, integers, floats; otherwise treated as " +"string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," +"\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "1つまたは複数の属性名/値のペアでフィルタリングします。 \n" "- シンタックス**:attr_name=method-value[;attr2=method2-value2]...`。\n" -"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場合は文字列として扱う。 \n" -"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとしてつけると、生の値を URL-safe base64-encode することができる。 \n" +"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場" +"合は文字列として扱う。 \n" +"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとして" +"つけると、生の値を URL-safe base64-encode することができる。 \n" "例 \n" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" "b64-description=icontains-aGVhdC1jb2xk`。" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "全商品を一覧表示(シンプル表示)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(正確には)製品UUID" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(アイコン) 製品名" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(リスト)カテゴリー名、大文字と小文字は区別しない" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(正確には)カテゴリーUUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(リスト) タグ名、大文字と小文字は区別されない" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(最低株価" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(最大株価" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(正確には)アクティブ製品のみ" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(商品名" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(最低在庫量" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(正確には)製品スラッグ" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(正確には)デジタルとフィジカル" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for " +"descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" +"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスと" +"してつける。 \n" "**許可:** uuid, rating, name, slug, created, modified, price, random" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "単一の製品を取得する(詳細表示)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "製品UUIDまたはスラグ" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "製品を作る" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "編集不可能なフィールドを保持したまま、既存の製品を書き換える。" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" +msgstr "" +"編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新す" +"る。" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "製品を削除する" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "全住所のリスト" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "単一アドレスの取得" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "新しいアドレスを作成する" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "アドレスの削除" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "アドレス全体の更新" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "アドレスの一部更新" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "オートコンプリート住所入力" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "検索語はありません。" @@ -620,7 +652,7 @@ msgid "add a product to the order" msgstr "注文に商品を追加する" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "注文{order_uuid}が見つかりません" @@ -637,65 +669,67 @@ msgstr "注文からすべての商品を削除する" msgid "buy an order" msgstr "注文する" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "order_uuidまたはorder_hr_idを入力してください!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy()メソッドから間違った型が来た:{type(instance)!s}。" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "注文に商品を追加する" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "ウィッシュリスト{wishlist_uuid}が見つかりません。" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "注文から商品を削除する" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "注文する" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 msgid "" -"please send the attributes as the string formatted like " -"attr1=value1,attr2=value2" -msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" +"please send the attributes as the string formatted like attr1=value1," +"attr2=value2" +msgstr "" +"属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "ユーザーが提供したオリジナルのアドレス文字列" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} は存在しません:{uuid} は存在しません。" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "上限は1から10の間でなければならない" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 魅力のように動作" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "属性" @@ -708,11 +742,11 @@ msgid "groups of attributes" msgstr "属性のグループ" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "カテゴリー" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "ブランド" @@ -720,7 +754,7 @@ msgstr "ブランド" msgid "category image url" msgstr "カテゴリー" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "マークアップ率" @@ -730,98 +764,97 @@ msgid "which attributes and values can be used for filtering this category." msgstr "このカテゴリのフィルタリングに使用できる属性と値。" #: core/graphene/object_types.py:114 -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 "このカテゴリーの商品の最低価格と最高価格がある場合。" -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "ベンダー" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "緯度(Y座標)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "経度(X座標)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "どのように" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "1から10までの評価値(設定されていない場合は0)。" -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "ユーザーからのフィードバックを表す。" -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "お知らせ" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "該当する場合は、この注文商品のダウンロードURLを入力してください。" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "注文商品のリスト" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "請求先住所" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "請求先住所と同じ場合、または該当しない場合は空白にしてください。" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "この注文の合計金額" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "注文商品の総数量" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "ご注文の商品はすべてデジタルですか?" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "受注状況" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "画像URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "製品画像" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "カテゴリー" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "フィードバック" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "ブランド" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "属性グループ" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -829,31 +862,31 @@ msgstr "属性グループ" msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "フィードバック数" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "製品紹介" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "プロモコード" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "販売商品" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "プロモーション" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "ベンダー" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -861,76 +894,76 @@ msgstr "ベンダー" msgid "product" msgstr "製品" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "ウィッシュリスト掲載商品" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "ウィッシュリスト" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "プロジェクト名" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "会社Eメール" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "会社名" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "会社住所" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "会社電話番号" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "'email from' は、ホストユーザの値の代わりに使用されることがあります。" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "メールホストユーザー" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "支払限度額" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "最低支払額" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "構成" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "言語コード" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "言語名" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "言語フラグがある場合 :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "サポートされている言語のリストを取得する" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "製品検索結果" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "製品検索結果" @@ -1011,8 +1044,7 @@ msgstr "この値の属性" msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "関連製品" @@ -1056,636 +1088,640 @@ msgstr "このカテゴリの詳細説明を追加する" msgid "category description" msgstr "カテゴリー説明" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "ブランド名" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "ブランド名" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "このブランドを代表するロゴをアップロードする" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "小さなブランドイメージ" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "このブランドを象徴する大きなロゴをアップロードする" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "大きなブランドイメージ" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "ブランドの詳細な説明を加える" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "ブランド説明" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "このブランドが関連するオプション・カテゴリー" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "カテゴリー" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "この製品が属するカテゴリ" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "オプションでこの製品をブランドと関連付ける" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "この商品の説明やグループ分けに役立つタグ" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "商品タグ" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "この製品がデジタル配信されるかどうかを示す" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "製品はデジタルか" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "製品の明確な識別名を提供する" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "商品名" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "商品の詳細説明を追加する" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "商品説明" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "この製品の品番" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "品番" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "ベンダーのAPI通信に必要な認証情報とエンドポイントを保存する。" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "認証情報" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "このベンダーから取得した商品のマークアップを定義する。" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "ベンダーのマークアップ率" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "このベンダーの名前" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "ベンダー名" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "ユーザーから寄せられた製品使用体験に関するコメント" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "フィードバック・コメント" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "このフィードバックが対象としている注文の特定の製品を参照する。" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "関連注文商品" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "ユーザーによる製品の評価" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "製品評価" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "フィードバック" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "この注文に使用される請求先住所" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "この注文に適用されるプロモコード" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "プロモーションコード適用" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "この注文に使用された配送先住所" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "配送先住所" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "ライフサイクルにおける現在の注文状況" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "注文状況" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" -msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" +msgstr "" +"ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "この注文の注文属性のJSON表現" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "注文を行ったユーザー" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "ユーザー" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "注文が確定したタイムスタンプ" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "時間を買う" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "オーダーの人間が読み取り可能な識別子。" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "人間が読めるID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "オーダー" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "ユーザーは一度に1つの未決注文しか持つことができません!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "保留中の注文以外の注文に商品を追加することはできません。" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "アクティブでない商品を注文に追加することはできません。" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name}が存在しません:{product_uuid}が存在しません。" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "保留中の注文以外の注文から商品を削除することはできません。" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "クエリ<{query}>で{name}が存在しません。" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "プロモコードが存在しない" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "配送先住所が指定された現物商品のみ購入可能!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "アドレスが存在しない" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "現在ご購入いただけません。数分後にもう一度お試しください。" -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "無効なフォース値" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "空注文はできません!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "注文を完了するための資金不足" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" +msgstr "" +"ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お" +"客様のお名前、お客様のEメール、お客様の電話番号" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "無効な支払い方法" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "この商品の購入時に顧客が支払った価格" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "注文時の購入価格" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "この注文商品に関する管理者への内部コメント" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "社内コメント" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "ユーザー通知" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "このアイテムの属性のJSON表現" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "製品属性の順序" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "この商品を含む親注文への参照" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "親注文" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "この注文ラインに関連する特定の製品" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "注文に含まれる特定の商品の数量" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "製品数量" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "この商品の現在のご注文状況" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "製品ラインの状況" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "商品タグの内部タグ識別子" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "タグ名" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "商品タグのユーザーフレンドリーな名前" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "タグ表示名" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "商品タグ" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "アクセシビリティのために、画像に代替テキストを提供する。" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "画像のaltテキスト" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "この商品の画像ファイルをアップロードする" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "商品画像" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "画像の表示順を決める" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "表示優先度" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "この画像が表す製品" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "商品画像" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "ユーザーが割引を利用する際に使用する固有のコード" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "プロモコード識別子" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "パーセントを使用しない場合に適用される固定割引額" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "固定割引額" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "定額を使用しない場合に適用される割引率" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "割引率" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "プロモコードの有効期限が切れるタイムスタンプ" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "終了有効時間" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "このプロモコードが有効なタイムスタンプ" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "開始有効時間" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "プロモコードが使用されたタイムスタンプ、未使用の場合は空白" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "使用タイムスタンプ" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "該当する場合、このプロモコードに割り当てられたユーザー" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "担当ユーザー" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "プロモコード" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "プロモコード" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" +msgstr "" +"割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちら" +"も定義してはならない。" -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "プロモコードはすでに使用されています" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "プロモコード {self.uuid} の割引タイプが無効です。" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "選択した商品の割引率" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "割引率" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "このプロモーションのユニークな名前を入力してください。" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "プロモーション名" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "プロモーション内容" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "キャンペーン対象商品をお選びください。" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "含まれる製品" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "プロモーション" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "この製品の在庫を供給しているベンダー" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "関連ベンダー" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "マークアップ後の顧客への最終価格" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "販売価格" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "このストックエントリーに関連する製品" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "この製品に対してベンダーに支払われた価格" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "ベンダーの購入価格" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "在庫数" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "在庫数" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "製品を識別するためにベンダーが割り当てたSKU" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "ベンダーのSKU" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "この銘柄に関連するデジタルファイル(該当する場合" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "デジタルファイル" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "ストックエントリー" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "ユーザーが欲しいとマークした商品" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "このウィッシュリストを所有しているユーザー" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "ウィッシュリストのオーナー" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "ウィッシュリスト" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "ダウンロード" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "ダウンロード" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "未完成の注文のデジタル資産をダウンロードすることはできません。" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "ドキュメンタリー" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "ドキュメンタリー" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "未解決" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "ストリート" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "地区" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "都市" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "地域" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "郵便番号" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "国名" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "ジオロケーションポイント(経度、緯度)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "この住所に対するジオコーダーからの完全なJSON応答" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "ジオコーディング・サービスからの保存されたJSONレスポンス" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "住所" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "住所" @@ -1754,9 +1790,11 @@ msgstr "こんにちは、%(order.user.first_name)sです、" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" -msgstr "ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいたします。以下、ご注文の詳細です:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" +msgstr "" +"ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいた" +"します。以下、ご注文の詳細です:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1779,7 +1817,9 @@ msgstr "合計価格" msgid "" "if you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." -msgstr "ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わせください。" +msgstr "" +"ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わ" +"せください。" #: core/templates/digital_order_created_email.html:130 #, python-format @@ -1807,7 +1847,8 @@ msgstr "こんにちは、%(user_first_name)sです、" msgid "" "we have successfully processed your order №%(order_uuid)s! below are the " "details of your order:" -msgstr "ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" +msgstr "" +"ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" #: core/templates/digital_order_delivered_email.html:127 msgid "additional information" @@ -1818,7 +1859,9 @@ msgstr "追加情報" msgid "" "if you have any questions, feel free to contact our support at " "%(contact_email)s." -msgstr "ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせください。" +msgstr "" +"ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせくださ" +"い。" #: core/templates/digital_order_delivered_email.html:162 #, python-format @@ -1832,9 +1875,11 @@ msgstr "キー" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" -msgstr "ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の詳細です:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" +msgstr "" +"ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の" +"詳細です:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1889,7 +1934,7 @@ msgstr "{config.PROJECT_NAME}|プロジェクト名| 注文の配信" msgid "you do not have permission to perform this action." msgstr "この操作を行う権限がありません。" -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "NOMINATIM_URLパラメータを設定する必要があります!" @@ -1910,7 +1955,10 @@ msgstr "デジタルアセットのダウンロードは1回限りです。" msgid "favicon not found" msgstr "ファビコンが見つかりません" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "ジオコーディングエラー:{e}" + +#~ msgid "translations" +#~ msgstr "翻訳" diff --git a/core/locale/kk_KZ/LC_MESSAGES/django.po b/core/locale/kk_KZ/LC_MESSAGES/django.po index 978503c3..5f0b5087 100644 --- a/core/locale/kk_KZ/LC_MESSAGES/django.po +++ b/core/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -50,22 +50,22 @@ msgstr "" msgid "when the object was last modified" msgstr "" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "" @@ -78,19 +78,19 @@ msgstr "" msgid "image" msgstr "" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -98,35 +98,31 @@ msgstr "" msgid "price" msgstr "" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "" -#: core/admin.py:218 -msgid "translations" -msgstr "" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "" @@ -188,31 +184,31 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "" -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -357,100 +353,100 @@ msgid "" "transaction is initiated." msgstr "" -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "" -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "" -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" @@ -467,119 +463,127 @@ msgid "" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 msgid "" "Comma-separated list of fields to sort by. Prefix with `-` for " "descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "" @@ -613,7 +617,7 @@ msgid "add a product to the order" msgstr "" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "" @@ -630,66 +634,66 @@ msgstr "" msgid "buy an order" msgstr "" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 msgid "" "please send the attributes as the string formatted like attr1=value1," "attr2=value2" msgstr "" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "" @@ -702,11 +706,11 @@ msgid "groups of attributes" msgstr "" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "" @@ -714,7 +718,7 @@ msgstr "" msgid "category image url" msgstr "" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "" @@ -727,94 +731,94 @@ msgstr "" msgid "minimum and maximum prices for products in this category, if available." msgstr "" -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "" -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -822,31 +826,31 @@ msgstr "" msgid "quantity" msgstr "" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -854,76 +858,76 @@ msgstr "" msgid "product" msgstr "" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "" @@ -1004,7 +1008,7 @@ msgstr "" msgid "the specific product associated with this attribute's value" msgstr "" -#: core/models.py:144 core/models.py:808 core/models.py:922 core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "" @@ -1048,635 +1052,635 @@ msgstr "" msgid "category description" msgstr "" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "" -#: core/models.py:415 +#: core/models.py:423 msgid "references the specific product in an order that this feedback is about" msgstr "" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "" -#: core/models.py:574 core/models.py:591 core/models.py:615 core/models.py:1163 -#: core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "" @@ -1880,7 +1884,7 @@ msgstr "" msgid "you do not have permission to perform this action." msgstr "" -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "" @@ -1901,7 +1905,7 @@ msgstr "" msgid "favicon not found" msgstr "" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index cd25157ca8e5b83400306fbbb135f5db4830f8ef..27feb80cdd2fb67d0f7d331260d72d712b639249 100644 GIT binary patch delta 7751 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

eK>6d3^bbXuF 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\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,8 +27,7 @@ msgstr "Is actief" #: core/abstract.py:20 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" @@ -49,22 +48,22 @@ msgstr "Gewijzigd" msgid "when the object was last modified" msgstr "Wanneer het object voor het laatst bewerkt is" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activeer geselecteerde %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Deactiveer geselecteerde %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Attribuut Waarde" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Attribuutwaarden" @@ -77,19 +76,19 @@ msgstr "Naam" msgid "image" msgstr "Afbeelding" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Afbeeldingen" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Voorraad" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Aandelen" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -97,35 +96,31 @@ msgstr "Aandelen" msgid "price" msgstr "Prijs" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Productbeoordeling" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Basisinformatie" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Belangrijke data" -#: core/admin.py:218 -msgid "translations" -msgstr "Vertalingen" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Product bestellen" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Producten bestellen" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Is zakelijk" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Config" @@ -187,34 +182,35 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Verkrijg de blootstelbare parameters van de applicatie" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Stuur een bericht naar het ondersteuningsteam" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Vraag een CORSed URL op. Alleen https toegestaan." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Eindpunt voor globaal zoeken om in alle tabellen van het project te zoeken" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Een bestelling kopen als bedrijf" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -245,8 +241,7 @@ msgstr "" "opslaan" #: core/docs/drf/viewsets.py:57 -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" @@ -301,8 +296,7 @@ msgstr "" "attributen worden opgeslagen" #: core/docs/drf/viewsets.py:111 -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" @@ -340,8 +334,7 @@ msgstr "Alle categorieën weergeven (eenvoudige weergave)" #: core/docs/drf/viewsets.py:146 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." #: core/docs/drf/viewsets.py:150 msgid "retrieve a single order (detailed view)" @@ -383,21 +376,20 @@ msgstr "" "wordt de aankoop afgerond met het saldo van de gebruiker; als " "`force_payment` wordt gebruikt, wordt een transactie gestart." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "een bestelling kopen zonder een account aan te maken" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 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." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -405,11 +397,11 @@ msgstr "" "Voegt een product toe aan een bestelling met de opgegeven `product_uuid` en " "`attributen`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -417,221 +409,242 @@ msgstr "" "Verwijdert een product uit een bestelling met behulp van de opgegeven " "`product_uuid` en `attributen`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Alle attributen weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Voor niet-personeelsleden worden alleen hun eigen verlanglijstjes " "geretourneerd." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Een enkel kenmerk ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Een attribuut maken" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Werkt niet voor gebruikers die geen personeel zijn." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Een attribuut verwijderen" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Een bestaand attribuut herschrijven en niet-wijzigbare attributen opslaan" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Herschrijf sommige velden van een bestaand attribuut door niet-wijzigbare " "velden op te slaan" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Een product aan de bestelling toevoegen" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Voegt een product toe aan een verlanglijstje met behulp van de opgegeven " "`product_uuid`." -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Een product uit het verlanglijstje verwijderen" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Verwijdert een product van een verlanglijstje met behulp van de opgegeven " "`product_uuid`." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Veel producten toevoegen aan het verlanglijstje" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Voegt veel producten toe aan een verlanglijstje met behulp van de opgegeven " "`product_uuids`." -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Verwijdert een groot aantal producten uit een verlanglijstje met behulp van " "de opgegeven `product_uuids`." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`." -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Alle producten weergeven (eenvoudige weergave)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(exacte) UUID van product" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(pictogrammen) Productnaam" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(lijst) Categorienamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(exacte) UUID van categorie" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(lijst) Labelnamen, hoofdlettergevoelig" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Minimale aandelenprijs" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maximale aandelenprijs" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exact) Alleen actieve producten" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Merknaam" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimumvoorraad" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(exacte) productnaam" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exact) Digitaal vs. fysiek" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Een enkel product ophalen (gedetailleerde weergave)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "Product UUID of Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Een product maken" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Een bestaand product herschrijven met behoud van niet-wijzigbare velden" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Enkele velden van een bestaand product bijwerken, met behoud van niet-" "wijzigbare velden" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Een product verwijderen" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Vermeld alle adressen" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Een enkel adres ophalen" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Een nieuw adres maken" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Een adres verwijderen" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Een heel adres bijwerken" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Een adres gedeeltelijk bijwerken" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Automatische adresinvoer" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Geen zoekterm opgegeven." @@ -665,7 +678,7 @@ msgid "add a product to the order" msgstr "Een product aan de bestelling toevoegen" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Order {order_uuid} niet gevonden" @@ -682,66 +695,67 @@ msgstr "Alle producten uit de bestelling verwijderen" msgid "buy an order" msgstr "Een bestelling kopen" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Geef order_uuid of order_hr_id - wederzijds exclusief!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Verkeerd type kwam uit order.buy() methode: {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Een product aan de bestelling toevoegen" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Verlanglijst {wishlist_uuid} niet gevonden" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Een product uit de bestelling verwijderen" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Een bestelling kopen" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Originele adresstring geleverd door de gebruiker" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Limiet moet tussen 1 en 10 liggen" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - werkt als een charme" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Attributen" @@ -754,11 +768,11 @@ msgid "groups of attributes" msgstr "Groepen van kenmerken" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categorieën" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Merken" @@ -766,7 +780,7 @@ msgstr "Merken" msgid "category image url" msgstr "Categorieën" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Opwaarderingspercentage" @@ -778,54 +792,53 @@ msgstr "" "filteren." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Verkopers" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Breedtegraad (Y-coördinaat)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Lengtegraad (X-coördinaat)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Hoe" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Waarderingswaarde van 1 tot en met 10, of 0 indien niet ingesteld." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Vertegenwoordigt feedback van een gebruiker." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Meldingen" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Download url voor dit bestelproduct indien van toepassing" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Een lijst met bestelde producten in deze bestelling" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Factuuradres" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -833,47 +846,47 @@ msgstr "" "Verzendadres voor deze bestelling, leeg laten als dit hetzelfde is als het " "factuuradres of als dit niet van toepassing is" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Totale prijs van deze bestelling" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Totale hoeveelheid producten in bestelling" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Zijn alle producten in de bestelling digitaal" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Bestellingen" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Afbeelding URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Afbeeldingen van het product" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Reacties" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Merk" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Attribuutgroepen" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -881,31 +894,31 @@ msgstr "Attribuutgroepen" msgid "quantity" msgstr "Hoeveelheid" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Aantal terugkoppelingen" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Producten" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Producten te koop" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promoties" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Verkoper" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -913,78 +926,78 @@ msgstr "Verkoper" msgid "product" msgstr "Product" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Gewenste producten" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Verlanglijst" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Naam project" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Bedrijf E-mail" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Bedrijfsnaam" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Adres" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Telefoonnummer bedrijf" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "e-mail van', soms moet deze worden gebruikt in plaats van de " "hostgebruikerswaarde" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Gebruiker e-mail hosten" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Maximumbedrag voor betaling" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Minimumbedrag voor betaling" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configuratie" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Taalcode" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Naam van de taal" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Taalvlag, indien aanwezig :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Een lijst met ondersteunde talen opvragen" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Producten zoekresultaten" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Zoekresultaten" @@ -1065,8 +1078,7 @@ msgstr "Attribuut van deze waarde" msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Bijbehorend product" @@ -1110,283 +1122,282 @@ msgstr "Voeg een gedetailleerde beschrijving toe voor deze categorie" msgid "category description" msgstr "Categorie beschrijving" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Naam van dit merk" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Merknaam" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Upload een logo dat dit merk vertegenwoordigt" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Klein merkimago" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Upload een groot logo dat dit merk vertegenwoordigt" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Groot merkimago" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Een gedetailleerde beschrijving van het merk toevoegen" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Merknaam" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Optionele categorieën waarmee dit merk wordt geassocieerd" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categorieën" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Categorie waartoe dit product behoort" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Dit product optioneel koppelen aan een merk" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tags die dit product helpen beschrijven of groeperen" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Product tags" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Geeft aan of dit product digitaal wordt geleverd" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Is product digitaal" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Zorg voor een duidelijke identificerende naam voor het product" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Naam product" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Voeg een gedetailleerde beschrijving van het product toe" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Productbeschrijving" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Onderdeelnummer voor dit product" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Onderdeelnummer" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Slaat referenties en eindpunten op die vereist zijn voor API-communicatie " "van de verkoper" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Authenticatie-info" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definieer de opmaak voor producten die zijn opgehaald bij deze leverancier" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Verkoper winstpercentage" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Naam van deze verkoper" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Naam verkoper" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Opmerkingen van gebruikers over hun ervaring met het product" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Reacties" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Verwijst naar het specifieke product in een bestelling waar deze feedback " "over gaat" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Gerelateerd product bestellen" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Door de gebruiker toegekende waardering voor het product" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Productbeoordeling" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Het factuuradres dat voor deze bestelling is gebruikt" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Optionele promotiecode toegepast op deze bestelling" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Kortingscode toegepast" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Het verzendadres dat voor deze bestelling is gebruikt" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Verzendadres" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Huidige status van de order in zijn levenscyclus" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Bestelstatus" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "JSON-structuur van meldingen om weer te geven aan gebruikers, in admin UI " "wordt de tabelweergave gebruikt" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON-weergave van bestelattributen voor deze bestelling" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "De gebruiker die de bestelling heeft geplaatst" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Gebruiker" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "De tijdstempel waarop de bestelling is afgerond" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Tijd kopen" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Een menselijk leesbare identificatiecode voor de bestelling" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "menselijk leesbare ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Bestel" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Een gebruiker mag maar één lopende order tegelijk hebben!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "" "U kunt geen producten toevoegen aan een bestelling die niet in behandeling " "is." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} bestaat niet: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" -" is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " +"is." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} bestaat niet met query <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Promocode bestaat niet" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "Je kunt alleen fysieke producten kopen met opgegeven verzendadres!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Adres bestaat niet" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "U kunt op dit moment niet kopen. Probeer het over een paar minuten nog eens." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Ongeldige krachtwaarde" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Je kunt geen lege bestelling kopen!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Onvoldoende fondsen om de bestelling te voltooien" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1394,374 +1405,373 @@ msgstr "" "u niet kunt kopen zonder registratie, geef dan de volgende informatie: " "klantnaam, e-mail klant, telefoonnummer klant" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Ongeldige betaalmethode" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "De prijs die de klant bij aankoop voor dit product heeft betaald" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Aankoopprijs bij bestelling" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "Interne opmerkingen voor beheerders over dit bestelde product" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Interne opmerkingen" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Meldingen van gebruikers" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON weergave van de attributen van dit item" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Geordende producteigenschappen" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Verwijzing naar de bovenliggende bestelling die dit product bevat" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Ouderlijk bevel" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Het specifieke product dat bij deze bestelregel hoort" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Hoeveelheid van dit specifieke product in de bestelling" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Hoeveelheid product" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Huidige status van dit product in de bestelling" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Status productlijn" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Interne tagidentifier voor de producttag" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Tag naam" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Gebruiksvriendelijke naam voor de producttag" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Tag weergavenaam" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Productlabel" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Geef alternatieve tekst voor de afbeelding voor toegankelijkheid" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Alt-tekst afbeelding" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Upload het afbeeldingsbestand voor dit product" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Product afbeelding" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Bepaalt de volgorde waarin afbeeldingen worden weergegeven" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Prioriteit weergeven" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Het product dat deze afbeelding vertegenwoordigt" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Product afbeeldingen" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Unieke code die een gebruiker gebruikt om een korting te verzilveren" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Promo code identificatie" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "" "Vast kortingsbedrag dat wordt toegepast als percentage niet wordt gebruikt" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Vast kortingsbedrag" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Kortingspercentage dat wordt toegepast als het vaste bedrag niet wordt " "gebruikt" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Kortingspercentage" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Tijdstempel wanneer de promocode verloopt" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Geldigheidsduur einde" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Tijdstempel vanaf wanneer deze promocode geldig is" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Begin geldigheidsduur" -#: core/models.py:978 +#: core/models.py:993 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" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Gebruik tijdstempel" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Gebruiker toegewezen aan deze promocode indien van toepassing" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Toegewezen gebruiker" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Kortingscode" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Actiecodes" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," -" maar niet beide of geen van beide." +"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage), " +"maar niet beide of geen van beide." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Promocode is al gebruikt" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Ongeldig kortingstype voor promocode {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Kortingspercentage voor de geselecteerde producten" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Kortingspercentage" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Geef deze promotie een unieke naam" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Naam promotie" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Promotie beschrijving" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Selecteer welke producten onder deze promotie vallen" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Meegeleverde producten" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promotie" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "De verkoper die dit product levert" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Geassocieerde verkoper" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Eindprijs voor de klant na winstmarges" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Verkoopprijs" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Het product dat bij deze voorraadvermelding hoort" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "De prijs die voor dit product aan de verkoper is betaald" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Aankoopprijs verkoper" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Beschikbare hoeveelheid van het product in voorraad" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Hoeveelheid op voorraad" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Door de verkoper toegewezen SKU om het product te identificeren" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "Verkoper SKU" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Digitaal bestand gekoppeld aan deze voorraad indien van toepassing" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Digitaal bestand" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Voorraadboekingen" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Producten die de gebruiker als gewenst heeft gemarkeerd" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Gebruiker die eigenaar is van deze verlanglijst" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Eigenaar verlanglijstje" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Verlanglijst" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Downloaden" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Downloads" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "" "U kunt geen digitale activa downloaden voor een niet-afgeronde bestelling" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentaire" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentaires" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Onopgelost" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Straat" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "District" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Stad" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Regio" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Postcode" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Land" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocatie Punt (lengtegraad, breedtegraad)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Volledig JSON-antwoord van geocoder voor dit adres" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Opgeslagen JSON-antwoord van de geocoderingsservice" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adres" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adressen" @@ -1830,8 +1840,8 @@ msgstr "Hallo %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Hartelijk dank voor uw bestelling #%(order.pk)s! We zijn blij om u te " "informeren dat we uw bestelling in behandeling hebben genomen. Hieronder " @@ -1917,8 +1927,8 @@ msgstr "Sleutel" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Bedankt voor uw bestelling! We zijn blij om uw aankoop te bevestigen. " "Hieronder vindt u de gegevens van uw bestelling:" @@ -1945,8 +1955,7 @@ msgstr "Zowel gegevens als time-out zijn vereist" #: core/utils/caching.py:43 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" #: core/utils/db.py:7 #, python-brace-format @@ -1977,7 +1986,7 @@ msgstr "{config.PROJECT_NAME}. | Geleverd" msgid "you do not have permission to perform this action." msgstr "U hebt geen toestemming om deze actie uit te voeren." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "De parameter NOMINATIM_URL moet worden geconfigureerd!" @@ -2000,7 +2009,10 @@ msgstr "U kunt het digitale goed maar één keer downloaden" msgid "favicon not found" msgstr "favicon niet gevonden" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fout bij geocodering: {e}" + +#~ msgid "translations" +#~ msgstr "Vertalingen" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index 6e57355e0e856eaeae96b9a821fedba00f5e0f61..df72b5464dda2020b5a3e4c4b51bad7c6ed9eeff 100644 GIT binary patch delta 7751 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 u0f9QdEPGOaq(-MN0u_>BYVuRXJ|+5Z7E%?5n{ delta 7798 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 Ur$&|znKE=#S?P{r<>j^i55_MUz5oCK diff --git a/core/locale/pl_PL/LC_MESSAGES/django.po b/core/locale/pl_PL/LC_MESSAGES/django.po index 53ece807..0ccc8df6 100644 --- a/core/locale/pl_PL/LC_MESSAGES/django.po +++ b/core/locale/pl_PL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -29,8 +29,7 @@ msgstr "Jest aktywny" #: core/abstract.py:20 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ń." @@ -51,22 +50,22 @@ msgstr "Zmodyfikowany" msgid "when the object was last modified" msgstr "Kiedy obiekt był ostatnio edytowany" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Aktywuj wybrane %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezaktywacja wybranych %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Wartość atrybutu" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Wartości atrybutów" @@ -79,19 +78,19 @@ msgstr "Nazwa" msgid "image" msgstr "Obraz" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Obrazy" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stan magazynowy" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Akcje" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Akcje" msgid "price" msgstr "Cena" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Ocena" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Podstawowe informacje" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Ważne daty" -#: core/admin.py:218 -msgid "translations" -msgstr "Tłumaczenia" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Zamów produkt" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Zamawianie produktów" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Czy biznes" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Konfiguracja" @@ -189,33 +184,34 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Uzyskaj dostępne parametry aplikacji" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Wyślij wiadomość do zespołu wsparcia" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Żądanie adresu URL CORSed. Dozwolony jest tylko protokół https." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "Globalny punkt końcowy wyszukiwania do zapytań w tabelach projektu" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Zakup zamówienia jako firma" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -246,8 +242,7 @@ msgstr "" "nieedytowalnych" #: core/docs/drf/viewsets.py:57 -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" @@ -302,8 +297,7 @@ msgstr "" "nieedytowalnych" #: core/docs/drf/viewsets.py:111 -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" @@ -384,19 +378,19 @@ msgstr "" "finalizowany przy użyciu salda użytkownika; Jeśli użyto `force_payment`, " "transakcja jest inicjowana." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "zakup zamówienia bez tworzenia konta" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizuje zakup zamówienia dla niezarejestrowanego użytkownika." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -404,11 +398,11 @@ msgstr "" "Dodaje produkt do zamówienia przy użyciu podanych `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -416,216 +410,236 @@ msgstr "" "Usuwa produkt z zamówienia przy użyciu podanego `product_uuid` i " "`attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Lista wszystkich atrybutów (widok prosty)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "W przypadku użytkowników niebędących pracownikami zwracane są tylko ich " "własne listy życzeń." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Pobieranie pojedynczego atrybutu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Utwórz atrybut" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Nie działa dla użytkowników spoza personelu." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Usuwanie atrybutu" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "" "Przepisanie istniejącego atrybutu z zachowaniem atrybutów nieedytowalnych" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Przepisanie niektórych pól istniejącego atrybutu z zachowaniem atrybutów " "nieedytowalnych" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Dodawanie produktu do zamówienia" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "Dodaje produkt do listy życzeń używając podanego `product_uuid`" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Usunięcie produktu z listy życzeń" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Usuwa produkt z listy życzeń przy użyciu podanego identyfikatora " "`product_uuid`." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Dodaj wiele produktów do listy życzeń" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Dodaje wiele produktów do listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Usuwa wiele produktów z listy życzeń przy użyciu podanych `product_uuids`" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Lista wszystkich produktów (widok prosty)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(dokładny) UUID produktu" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(ikony) Nazwa produktu" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(lista) Nazwy kategorii, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(dokładny) UUID kategorii" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(lista) Nazwy tagów, wielkość liter nie ma znaczenia" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Minimalna cena akcji" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Maksymalna cena akcji" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(dokładnie) Tylko aktywne produkty" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Nazwa marki" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Minimalna ilość zapasów" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(dokładny) Ślimak produktu" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(dokładnie) Cyfrowe vs. fizyczne" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Pobieranie pojedynczego produktu (widok szczegółowy)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID produktu lub Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Tworzenie produktu" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Przepisz istniejący produkt, zachowując nieedytowalne pola" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Aktualizacja niektórych pól istniejącego produktu z zachowaniem pól " "nieedytowalnych" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Usuń produkt" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Lista wszystkich adresów" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Pobieranie pojedynczego adresu" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Utwórz nowy adres" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Usuwanie adresu" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Aktualizacja całego adresu" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Częściowa aktualizacja adresu" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Wprowadzanie adresu w trybie autouzupełniania" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nie podano wyszukiwanego hasła." @@ -659,7 +673,7 @@ msgid "add a product to the order" msgstr "Dodawanie produktu do zamówienia" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Nie znaleziono zamówienia {order_uuid}" @@ -676,67 +690,68 @@ msgstr "Usuń wszystkie produkty z zamówienia" msgid "buy an order" msgstr "Kup zamówienie" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Podaj albo order_uuid albo order_hr_id - wzajemnie się wykluczają!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Nieprawidłowy typ pochodzi z metody order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Dodawanie produktu do zamówienia" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista życzeń {wishlist_uuid} nie została znaleziona" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Usunięcie produktu z zamówienia" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Kup zamówienie" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Oryginalny ciąg adresu podany przez użytkownika" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Limit musi wynosić od 1 do 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - działa jak urok" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Atrybuty" @@ -749,11 +764,11 @@ msgid "groups of attributes" msgstr "Grupy atrybutów" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Kategorie" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Marki" @@ -761,7 +776,7 @@ msgstr "Marki" msgid "category image url" msgstr "Kategorie" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Procentowy narzut" @@ -772,53 +787,52 @@ msgstr "" "Które atrybuty i wartości mogą być używane do filtrowania tej kategorii." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Sprzedawcy" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Szerokość geograficzna (współrzędna Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Długość geograficzna (współrzędna X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Jak" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Wartość oceny od 1 do 10 włącznie lub 0, jeśli nie jest ustawiona." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Reprezentuje informacje zwrotne od użytkownika." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Powiadomienia" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Adres URL pobierania dla tego produktu zamówienia, jeśli dotyczy" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Lista zamówionych produktów w tym zamówieniu" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Adres rozliczeniowy" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -826,47 +840,47 @@ msgstr "" "Adres wysyłki dla tego zamówienia, pozostaw pusty, jeśli jest taki sam jak " "adres rozliczeniowy lub jeśli nie dotyczy" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Całkowita cena tego zamówienia" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Całkowita ilość produktów w zamówieniu" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Czy wszystkie produkty w zamówieniu są cyfrowe?" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Zamówienia" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "Adres URL obrazu" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Zdjęcia produktu" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Kategoria" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Informacje zwrotne" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Marka" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Grupy atrybutów" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -874,31 +888,31 @@ msgstr "Grupy atrybutów" msgid "quantity" msgstr "Ilość" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Liczba informacji zwrotnych" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produkty" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Promocodes" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Produkty w sprzedaży" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promocje" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Sprzedawca" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -906,76 +920,77 @@ msgstr "Sprzedawca" msgid "product" msgstr "Produkt" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Produkty z listy życzeń" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Listy życzeń" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Nazwa projektu" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Firmowy adres e-mail" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Nazwa firmy" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Adres firmy" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Numer telefonu firmy" -#: core/graphene/object_types.py:463 -msgid "email from, sometimes it must be used instead of host user value" -msgstr "\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" - #: core/graphene/object_types.py:464 +msgid "email from, sometimes it must be used instead of host user value" +msgstr "" +"\"email from\", czasami musi być użyty zamiast wartości użytkownika hosta" + +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Użytkownik hosta poczty e-mail" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Maksymalna kwota płatności" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Minimalna kwota płatności" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Konfiguracja" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Kod języka" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Nazwa języka" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Flaga języka, jeśli istnieje :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Pobierz listę obsługiwanych języków" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Wyniki wyszukiwania produktów" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Wyniki wyszukiwania produktów" @@ -1056,8 +1071,7 @@ msgstr "Atrybut tej wartości" msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Produkt powiązany" @@ -1101,283 +1115,281 @@ msgstr "Dodaj szczegółowy opis dla tej kategorii" msgid "category description" msgstr "Opis kategorii" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Nazwa tej marki" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Nazwa marki" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Prześlij logo reprezentujące tę markę" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Mały wizerunek marki" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Prześlij duże logo reprezentujące tę markę" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Duży wizerunek marki" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Dodaj szczegółowy opis marki" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Opis marki" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Opcjonalne kategorie, z którymi powiązana jest ta marka" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Kategorie" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Kategoria, do której należy ten produkt" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Opcjonalnie można powiązać ten produkt z marką" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tagi, które pomagają opisać lub pogrupować ten produkt" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Tagi produktu" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Wskazuje, czy produkt jest dostarczany cyfrowo." -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Czy produkt jest cyfrowy?" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Wyraźna nazwa identyfikująca produkt" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Nazwa produktu" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Dodaj szczegółowy opis produktu" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Opis produktu" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Numer części dla tego produktu" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Numer części" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Przechowuje dane uwierzytelniające i punkty końcowe wymagane do komunikacji " "API dostawcy." -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informacje o uwierzytelnianiu" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Definiowanie znaczników dla produktów pobranych od tego dostawcy" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Procentowa marża sprzedawcy" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Nazwa tego sprzedawcy" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Nazwa sprzedawcy" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Komentarze użytkowników na temat ich doświadczeń z produktem" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Komentarze zwrotne" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Odnosi się do konkretnego produktu w zamówieniu, którego dotyczy ta " "informacja zwrotna." -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Powiązany produkt zamówienia" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Ocena produktu przypisana przez użytkownika" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Ocena produktu" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Informacje zwrotne" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Adres rozliczeniowy użyty dla tego zamówienia" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Opcjonalny kod promocyjny zastosowany do tego zamówienia" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Zastosowany kod promocyjny" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Adres wysyłki użyty dla tego zamówienia" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Adres wysyłki" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Aktualny status zamówienia w jego cyklu życia" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Status zamówienia" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "Struktura JSON powiadomień do wyświetlenia użytkownikom, w interfejsie " "administratora używany jest widok tabeli" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "Reprezentacja JSON atrybutów zamówienia dla tego zamówienia" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "Użytkownik, który złożył zamówienie" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Użytkownik" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Znacznik czasu, kiedy zamówienie zostało sfinalizowane" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Kup czas" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Czytelny dla człowieka identyfikator zamówienia" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "Identyfikator czytelny dla człowieka" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Zamówienie" -#: core/models.py:519 +#: core/models.py:527 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!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "" "Nie można dodać produktów do zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Nie można dodać nieaktywnych produktów do zamówienia" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Nie można dodać więcej produktów niż jest dostępnych w magazynie" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nie istnieje: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nie można usunąć produktów z zamówienia, które nie jest zamówieniem " "oczekującym." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nie istnieje z zapytaniem <{query}>." -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Kod promocyjny nie istnieje" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "Możesz kupować tylko produkty fizyczne z podanym adresem wysyłki!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Adres nie istnieje" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "W tej chwili nie możesz dokonać zakupu, spróbuj ponownie za kilka minut." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Nieprawidłowa wartość siły" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Nie można kupić pustego zamówienia!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Niewystarczające środki do zrealizowania zamówienia" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1386,188 +1398,186 @@ msgstr "" "informacje: imię i nazwisko klienta, adres e-mail klienta, numer telefonu " "klienta." -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Nieprawidłowa metoda płatności" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "Cena zapłacona przez klienta za ten produkt w momencie zakupu." -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Cena zakupu w momencie zamówienia" -#: core/models.py:779 +#: core/models.py:794 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" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Uwagi wewnętrzne" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Powiadomienia użytkownika" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "Reprezentacja JSON atrybutów tego elementu" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Zamówione atrybuty produktu" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Odniesienie do zamówienia nadrzędnego zawierającego ten produkt" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Zamówienie nadrzędne" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Konkretny produkt powiązany z tą linią zamówienia" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Ilość tego konkretnego produktu w zamówieniu" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Ilość produktu" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Aktualny status tego produktu w zamówieniu" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Status linii produktów" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Wewnętrzny identyfikator tagu produktu" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Nazwa tagu" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Przyjazna dla użytkownika nazwa etykiety produktu" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Wyświetlana nazwa znacznika" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Etykieta produktu" -#: core/models.py:904 +#: core/models.py:919 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" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Tekst alternatywny obrazu" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Prześlij plik obrazu dla tego produktu" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Obraz produktu" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Określa kolejność wyświetlania obrazów" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Priorytet wyświetlania" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Produkt, który przedstawia ten obraz" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Zdjęcia produktów" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Unikalny kod używany przez użytkownika do realizacji rabatu." -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Identyfikator kodu promocyjnego" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Stała kwota rabatu stosowana, jeśli procent nie jest używany" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Stała kwota rabatu" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Rabat procentowy stosowany w przypadku niewykorzystania stałej kwoty" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Rabat procentowy" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Znacznik czasu wygaśnięcia kodu promocyjnego" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Końcowy czas ważności" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Znacznik czasu, od którego ten kod promocyjny jest ważny" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Czas rozpoczęcia ważności" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Znacznik czasu użycia kodu promocyjnego, pusty, jeśli nie został jeszcze " "użyty." -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Znacznik czasu użycia" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Użytkownik przypisany do tego kodu promocyjnego, jeśli dotyczy" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Przypisany użytkownik" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Kod promocyjny" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Kody promocyjne" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1575,184 +1585,184 @@ msgstr "" "Należy zdefiniować tylko jeden rodzaj rabatu (kwotowy lub procentowy), ale " "nie oba lub żaden z nich." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Kod promocyjny został już wykorzystany" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Nieprawidłowy typ rabatu dla kodu promocyjnego {self.uuid}." -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Rabat procentowy na wybrane produkty" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Procent rabatu" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Podaj unikalną nazwę tej promocji" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Nazwa promocji" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Opis promocji" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Wybierz produkty objęte promocją" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Dołączone produkty" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promocja" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Sprzedawca dostarczający ten produkt" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Powiązany sprzedawca" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Ostateczna cena dla klienta po uwzględnieniu marży" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Cena sprzedaży" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Produkt powiązany z tym wpisem magazynowym" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Cena zapłacona sprzedawcy za ten produkt" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Cena zakupu przez sprzedawcę" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Dostępna ilość produktu w magazynie" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Ilość w magazynie" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Jednostki SKU przypisane przez dostawcę w celu identyfikacji produktu" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU sprzedawcy" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Plik cyfrowy powiązany z tymi zapasami, jeśli dotyczy" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Plik cyfrowy" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Zapisy magazynowe" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Produkty, które użytkownik oznaczył jako poszukiwane" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Użytkownik posiadający tę listę życzeń" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Właściciel listy życzeń" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Lista życzeń" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Pobierz" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Pliki do pobrania" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "Nie można pobrać zasobu cyfrowego dla nieukończonego zamówienia." -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Film dokumentalny" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Filmy dokumentalne" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Nierozwiązany" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "ul." -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Okręg" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Miasto" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Region" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Kod pocztowy" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Kraj" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Geolocation Point(Longitude, Latitude)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Pełna odpowiedź JSON z geokodera dla tego adresu" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Przechowywana odpowiedź JSON z usługi geokodowania" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adres" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adresy" @@ -1821,8 +1831,8 @@ msgstr "Witam %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Dziękujemy za zamówienie #%(order.pk)s! Z przyjemnością informujemy, że " "przyjęliśmy Twoje zamówienie do realizacji. Poniżej znajdują się szczegóły " @@ -1880,8 +1890,8 @@ msgid "" "we have successfully processed your order №%(order_uuid)s! below are the " "details of your order:" msgstr "" -"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują" -" się szczegóły zamówienia:" +"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują " +"się szczegóły zamówienia:" #: core/templates/digital_order_delivered_email.html:127 msgid "additional information" @@ -1908,8 +1918,8 @@ msgstr "Klucz" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Dziękujemy za zamówienie! Z przyjemnością potwierdzamy zakup. Poniżej " "znajdują się szczegóły zamówienia:" @@ -1969,7 +1979,7 @@ msgstr "{config.PROJECT_NAME} | Zamówienie dostarczone" msgid "you do not have permission to perform this action." msgstr "Nie masz uprawnień do wykonania tej akcji." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Parametr NOMINATIM_URL musi być skonfigurowany!" @@ -1991,7 +2001,10 @@ msgstr "Zasób cyfrowy można pobrać tylko raz" msgid "favicon not found" msgstr "nie znaleziono favicon" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Błąd geokodowania: {e}" + +#~ msgid "translations" +#~ msgstr "Tłumaczenia" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 374dab644b9437a783680466148bccbb4e7cae99..5afa127e960039ed21c8dfea97e9c895508bf5ea 100644 GIT binary patch delta 7751 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 delta 7797 zcmXxp3w+OI|Htv~Z){_1v&~L+-q`Gv*^<+C55v&Va*9q{5yMoQ)m`D62#I80#|a^% zQd_uPItOrZ`alD@&9^WpX>YmUWdqeXU_6XU`A4W1&SMxlSDB8&F_bVKHJ}`9 zhb5?ijb*KStLpPbi%M{3pbJ9N0x{KrF6SqgDvJ`dyJ`BaDP#M^X zTFZT?34D&Bcm_4#Ur-$e=9xGg1Bg4KCYqf`{?$NFD%#>rs5PrXrL+dy;0)9N7TEhc zPz~?1@gdYwy@w%q29>#ssEz`eg_bxHlQ9olVtH5cubGUdLLLk(;(cEbi#gYTg_I*nSwUr-smj9S9BJgj3IgSy`fNs8-~P*6v8sJ-A~ zAKZw_%qi4Neny>d|7*+=U{gVC5k{*}RQ*d7OAGTw~ZgtJh4W;KTC z{I8=h6dQ3IUdD19+sh2-S=6p>!h!fIYKDP~PMa|dm8lq1Mmi(Oa(bZ#d>3kuthVliF0t|@lSX4p%GHpKx{s*j-7=maVgU!Vr`AJlFS>SO*GC8B219aTR7wIpMa zkEv6EV{r*8GiOnoGP$q0Kg6Y=O?Mxv1I1d)dQ`(3Q3Gm39lKXB9*>}AbQaZN%YNoN z(FQf(9;kMPBm2_16}1^xq1xGwT0(a(1vU5vYAH^kHp`#Zz!EdFP}HVL!(6-(`{N_1 z&H4_i!DK4cQ4VTieNpX|qB1lbHL=@~iMh_*_Qr##ku5`gNH&-UoEK3Izh>_rwf8?k zE!jC6Uql^0{{iMpnSg3jHeBXKzI}t|@HuXgqOI(2(!2Rfspslbz|L5cl zF*Ca#wU%p8OVWsH;5E#~6WA34uQm3>EaEAcfh#Z*_uKk!@XAEW%-@o-GV-qqmkKr1 zjLN{b*c)Sqn)*>l5}f(ShIihzao8~Pw_+^v>2Mlsd>mWq{o&@*o`}K3BTyNtL``V! zaPof>h2>O);04q!^<8InZzSr)I8@3ru?yxQ2gIqc^_#5EU=a09sCM>YJA4mY;g^_; z-(o$+xaE8vDLjixS;X~bM!iuF&cGae2Gj8)?2MOD8OmV&uEyI@YrP7!1p856#9~?up9mHBDTRxsI?9l#hJ%sY>WL-4VR-baVNIM^{A!XhRVRd zF$T}0_Ef-Vvlp&I4fK9wpsw>I1)}V~)=MhZJ;7{BAUBnSKILY!=4IG{csgpvOHlVWqn6-3bQ382O5p|{XZ;ql=GC{F zRL{pG?r*|qJYYS6n(@z=j8PTl`R*7+JOaybG7iMun24A0FeX%*&G>aC`TyRJirdVl zYCFMnl!Y-o*bnpYMq9rK3y7aWE!lDGj;-!6YuyL4iAzzLskQMlsMB-|HISAZIhi)m zH8=X%io2{!Py=`#wU&oa8F(MHxy~XR+qsCE>5xe#UWxI<=dD3ij`KKi25Ml<7=Wiy zd*z%;tIdZc0d<_Ruru~V&EPf+!l^dC7qv9AQJHA4_n${~w8!3m8#9Pc zqXyD;nrSBjHQ+=H(fKc+pcnfgBXUNfHploY4{!vn^{5Zi22=*Npa$?9YR0dkQhyxP z-dT*p-%(2!eW$6gVYa4S*AY#&~QpJO0~+-3e6Mqx4WEvWOo z4z*WyqGosqHNa0%$NWds5`^4s>a)?+1H}}y*+!sJeG_)Yi5QBjQO9f>YNlVJmf$zk zd*L-^>Ecim$--{f1C{z|*bD1WOWKH<*xnlQKa9d>R47F`wWfno)cL&?mFg9?{s~lv zJ5d988P(u1%)>9R2*ajxba6OpLYGmSwRN4zSTeRDuBapbQEj>BB{?`8lCP^tO^wQ0UY zW#$i5O3Usu4UNMv;@dC+r(+jffEr*ks>9P5iQnO1^t<2wCl~6Ek&ChNH4578Cs4=k z5)Qz$2TY2pFod`cHITWenb)IIy%lru3@*Wl8D_~gp^o1+)PUbd{SiBbYAg86t93(%Qmyc)X_PD0&pK<$a6s2Lr@c>K{C%n}bG&O+^lTGaEi zFkI({C}tnw0Y1hSu*w@&cIu+0(;^ssDb~6TB6+9 z=J}gZdtp3=(v~xWf>N{y)!{m9hfS!Iy^e|a6>4q$A2P=)7^8?wQ16YyURaHx_%v$3 z&8YScVJaR+wfj4|IzCBrOiD6Q8OX=pI1rWUhitqPuOc!ruH5-O%a13fDRjAFk2-VNn#^Jc3%nlt)eMR#VUnUdL|u4aQ*NBGX}a>`pui`{H8k zgYTktdAr5NA$Se(T-5U~;XwQuwU>H5X8!B>9#lIo8C~ZO3VN`3iFt4yjwXH`%P{tF z^Pg6C;4tES);3Gc{c#vT{Z>>*&toWli`jSybzIZyIceA%!>}3SbpGF>pcH?F+C1Oe z*v~U-AB0uZmtYIrj_R-p+hQ{+g9lN2=p5>}`7bl)KMGe94?(qa8oS`ISIuAmXCUVI*!HJ7=kBIAE<9}G`4OqpYjUqM!Xh#;0HEt zyT&}ix#f?fTif}S^z^5@24`2bFN6kFt3DSr+pk}ZMgK-;bNp_<$xgW#v9BN>f zQEQ&C)@;@;s3osjOa3b<+)YIxet>GA-8yr=i%@I%Fs9%N%)@4k$Fr!01J;`f#Nf5W zqj3ao#B%%%4d&11aO_O{IS#^B8_oYFEJt-b4}0Qn)F%1~ zGcaY7`2Y>ZSmLRu-9OLPzlh50hv>td`iGy_9GB;N);k-Q5wz7-&G&g7;yd`Zc-`W& z!{$-ho=ani#3t|V__Tz_DXG^IoU3N|o#ax^U+|jZBYe%?!T1xcALf1(*KTiHLhpoC zl=O?kN^E^4GXK2j`4Y2zi@e;#V&BtVbz+*Y-dmbj>f7agoS5W$()%rOqHn2JnbgJi zptm&X(QXgX#!b9>J=aRgzu^|s)Rlk7@b5F!&*fUprQaH_Jo#SVbKc?Pv`CM-C{yhO z+xv4oUrL&9iPtH`i`{1H^vIuFwOsmtk*@RJPl=9QNU4Q=;-DVk*NS+v=Sz+DE%0Jf zvm+N1S5U8$JclcjxX~M%n$&X#rL)xNHjKvXFRWvUZ<9Bw\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,8 +29,7 @@ msgstr "Está ativo" #: core/abstract.py:20 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" @@ -51,22 +50,22 @@ msgstr "Modificado" msgid "when the object was last modified" msgstr "Quando o objeto foi editado pela última vez" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Ativar %(verbose_name_plural)s selecionados" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Desativar %(verbose_name_plural)s selecionados" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Valor do atributo" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Valores de atributos" @@ -79,19 +78,19 @@ msgstr "Nome" msgid "image" msgstr "Imagem" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Imagens" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Estoque" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Ações" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Ações" msgid "price" msgstr "Preço" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Avaliação do produto" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Informações básicas" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Datas importantes" -#: core/admin.py:218 -msgid "translations" -msgstr "Traduções" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Pedido de produto" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Solicitar produtos" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "É um negócio" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Configuração" @@ -189,34 +184,35 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Obter uma lista de idiomas suportados" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Obter os parâmetros expostos do aplicativo" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Envie uma mensagem para a equipe de suporte" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Solicite um URL com CORS. Somente https é permitido." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Ponto de extremidade de pesquisa global para consultar as tabelas do projeto" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Comprar um pedido como uma empresa" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -245,8 +241,7 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescrever um grupo de atributos existente salvando os não editáveis" #: core/docs/drf/viewsets.py:57 -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" @@ -297,8 +292,7 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescreva um valor de atributo existente salvando os não editáveis" #: core/docs/drf/viewsets.py:111 -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" @@ -376,19 +370,19 @@ msgstr "" "concluída usando o saldo do usuário; se `force_payment` for usado, uma " "transação será iniciada." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "comprar um pedido sem criar uma conta" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finaliza a compra do pedido para um usuário não registrado." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -396,11 +390,11 @@ msgstr "" "Adiciona um produto a um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -408,217 +402,238 @@ msgstr "" "Remove um produto de um pedido usando o `product_uuid` e os `attributes` " "fornecidos." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Listar todos os atributos (visualização simples)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Para usuários que não pertencem à equipe, apenas suas próprias listas de " "desejos são retornadas." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperar um único atributo (visualização detalhada)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Criar um atributo" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Não funciona para usuários que não são da equipe." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Excluir um atributo" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Reescreva um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Reescreva alguns campos de um atributo existente salvando os não editáveis" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Adicionar um produto ao pedido" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Adiciona um produto a uma lista de desejos usando o `product_uuid` fornecido" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Remover um produto da lista de desejos" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Remove um produto de uma lista de desejos usando o `product_uuid` fornecido" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Adicionar muitos produtos à lista de desejos" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Adiciona vários produtos a uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Remover um produto do pedido" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Remove vários produtos de uma lista de desejos usando os `product_uuids` " "fornecidos" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Listar todos os produtos (visualização simples)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "UUID (exato) do produto" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Nome do produto" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "" "(lista) Nomes de categorias, sem distinção entre maiúsculas e minúsculas" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(exato) UUID da categoria" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(lista) Nomes de tags, sem distinção entre maiúsculas e minúsculas" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Preço mínimo das ações" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Preço máximo da ação" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exato) Somente produtos ativos" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Nome da marca" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Quantidade mínima em estoque" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(exato) Slug do produto" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exato) Digital vs. físico" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Recuperar um único produto (visualização detalhada)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID ou Slug do produto" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Criar um produto" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Reescrever um produto existente, preservando os campos não editáveis" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Atualizar alguns campos de um produto existente, preservando os campos não " "editáveis" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Excluir um produto" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Listar todos os endereços" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Recuperar um único endereço" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Criar um novo endereço" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Excluir um endereço" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Atualizar um endereço inteiro" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Atualizar parcialmente um endereço" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Entrada de endereço com preenchimento automático" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nenhum termo de pesquisa foi fornecido." @@ -652,7 +667,7 @@ msgid "add a product to the order" msgstr "Adicionar um produto ao pedido" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Pedido {order_uuid} não encontrado" @@ -669,66 +684,67 @@ msgstr "Remover todos os produtos do pedido" msgid "buy an order" msgstr "Comprar um pedido" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "Forneça order_uuid ou order_hr_id - mutuamente exclusivos!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "O tipo errado veio do método order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Adicionar um produto ao pedido" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista de desejos {wishlist_uuid} não encontrada" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Remover um produto do pedido" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Comprar um pedido" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Cadeia de endereços original fornecida pelo usuário" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "O limite deve estar entre 1 e 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funciona muito bem" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Atributos" @@ -741,11 +757,11 @@ msgid "groups of attributes" msgstr "Grupos de atributos" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categorias" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Marcas" @@ -753,7 +769,7 @@ msgstr "Marcas" msgid "category image url" msgstr "Categorias" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Porcentagem de marcação" @@ -764,53 +780,52 @@ msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." #: core/graphene/object_types.py:114 -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." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Vendors" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitude (coordenada Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitude (coordenada X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Como fazer" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Valor de classificação de 1 a 10, inclusive, ou 0 se não estiver definido." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Representa o feedback de um usuário." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notificações" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "URL de download para este produto do pedido, se aplicável" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Uma lista dos produtos solicitados nesse pedido" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Endereço de cobrança" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -818,47 +833,47 @@ msgstr "" "Endereço de entrega para este pedido, deixe em branco se for o mesmo que o " "endereço de cobrança ou se não for aplicável" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Preço total deste pedido" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Quantidade total de produtos no pedido" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Todos os produtos estão no pedido digital?" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Pedidos" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "URL da imagem" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Imagens do produto" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Categoria" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Feedbacks" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Brand" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Grupos de atributos" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -866,31 +881,31 @@ msgstr "Grupos de atributos" msgid "quantity" msgstr "Quantidade" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Número de feedbacks" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produtos" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Códigos promocionais" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Produtos à venda" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promoções" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Vendor" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -898,77 +913,77 @@ msgstr "Vendor" msgid "product" msgstr "Produto" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Produtos da lista de desejos" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Listas de desejos" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Nome do projeto" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "E-mail da empresa" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Nome da empresa" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Endereço da empresa" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Número de telefone da empresa" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', às vezes ele deve ser usado em vez do valor do usuário do host" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Usuário do host de e-mail" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Valor máximo para pagamento" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Valor mínimo para pagamento" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configuração" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Código do idioma" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Nome do idioma" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Sinalizador de idioma, se houver :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Obter uma lista de idiomas suportados" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Resultados da pesquisa de produtos" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Resultados da pesquisa de produtos" @@ -1049,8 +1064,7 @@ msgstr "Atributo desse valor" msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Produto associado" @@ -1094,282 +1108,280 @@ msgstr "Adicione uma descrição detalhada para essa categoria" msgid "category description" msgstr "Descrição da categoria" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Nome da marca" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Nome da marca" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Faça upload de um logotipo que represente essa marca" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Imagem pequena da marca" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Faça upload de um logotipo grande que represente essa marca" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Imagem de marca grande" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Adicione uma descrição detalhada da marca" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Descrição da marca" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Categorias opcionais às quais essa marca está associada" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categorias" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Categoria à qual este produto pertence" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Opcionalmente, associe esse produto a uma marca" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Tags que ajudam a descrever ou agrupar este produto" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Etiquetas do produto" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indica se esse produto é entregue digitalmente" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "O produto é digital" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Fornecer um nome de identificação claro para o produto" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Nome do produto" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Adicione uma descrição detalhada do produto" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Descrição do produto" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Número de peça para este produto" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Número da peça" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Armazena as credenciais e os pontos de extremidade necessários para a " "comunicação da API do fornecedor" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informações de autenticação" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Definir a marcação para produtos recuperados desse fornecedor" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Porcentagem da margem de lucro do fornecedor" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Nome do fornecedor" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Nome do fornecedor" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "" "Comentários fornecidos pelo usuário sobre sua experiência com o produto" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Comentários de feedback" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" -"Faz referência ao produto específico em um pedido sobre o qual se trata esse" -" feedback" +"Faz referência ao produto específico em um pedido sobre o qual se trata esse " +"feedback" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Produto de pedido relacionado" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Classificação atribuída pelo usuário ao produto" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Avaliação do produto" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "O endereço de cobrança usado para esse pedido" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Código promocional opcional aplicado a este pedido" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Código promocional aplicado" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "O endereço de entrega usado para esse pedido" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Endereço de entrega" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Status atual do pedido em seu ciclo de vida" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Status do pedido" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "Estrutura JSON de notificações a serem exibidas aos usuários; na interface " "do usuário do administrador, é usada a visualização de tabela" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "Representação JSON dos atributos do pedido para esse pedido" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "O usuário que fez o pedido" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Usuário" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "O registro de data e hora em que o pedido foi finalizado" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Tempo de compra" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Um identificador legível por humanos para o pedido" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "ID legível por humanos" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Pedido" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Um usuário deve ter apenas uma ordem pendente por vez!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "Não é possível adicionar produtos a um pedido que não esteja pendente" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Não é possível adicionar produtos inativos ao pedido" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "" "Não é possível adicionar mais produtos do que os disponíveis em estoque" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} não existe: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "Não é possível remover produtos de um pedido que não esteja pendente" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} não existe com a consulta <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "O código promocional não existe" -#: core/models.py:633 +#: core/models.py:643 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!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "O endereço não existe" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Não é possível comprar neste momento, tente novamente em alguns minutos." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Valor de força inválido" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Você não pode comprar um pedido vazio!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Fundos insuficientes para concluir o pedido" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1377,375 +1389,374 @@ msgstr "" "Não é possível comprar sem registro, forneça as seguintes informações: nome " "do cliente, e-mail do cliente, número de telefone do cliente" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Método de pagamento inválido" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "O preço pago pelo cliente por esse produto no momento da compra" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Preço de compra no momento do pedido" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "" "Comentários internos para administradores sobre este produto encomendado" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Comentários internos" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Notificações do usuário" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "Representação JSON dos atributos desse item" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Atributos ordenados do produto" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Referência ao pedido pai que contém esse produto" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Ordem dos pais" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "O produto específico associado a essa linha de pedido" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Quantidade desse produto específico no pedido" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Quantidade do produto" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Status atual desse produto no pedido" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Status da linha de produtos" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Identificador de tag interno para a tag do produto" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Nome da etiqueta" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Nome de fácil utilização para a etiqueta do produto" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Nome de exibição da tag" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Etiqueta do produto" -#: core/models.py:904 +#: core/models.py:919 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" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Texto alternativo da imagem" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Faça o upload do arquivo de imagem para este produto" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Imagem do produto" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Determina a ordem em que as imagens são exibidas" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Prioridade de exibição" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "O produto que esta imagem representa" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Imagens do produto" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Código exclusivo usado por um usuário para resgatar um desconto" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Identificador de código promocional" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Valor de desconto fixo aplicado se a porcentagem não for usada" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Valor do desconto fixo" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Desconto percentual aplicado se o valor fixo não for usado" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Desconto percentual" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Registro de data e hora em que o código promocional expira" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Tempo de validade final" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "" "Registro de data e hora a partir do qual esse código promocional é válido" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Hora de início da validade" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Registro de data e hora em que o código promocional foi usado, em branco se " "ainda não tiver sido usado" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Registro de data e hora de uso" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Usuário atribuído a esse código promocional, se aplicável" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Usuário atribuído" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Código promocional" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Códigos promocionais" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" -" ambos ou nenhum." +"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não " +"ambos ou nenhum." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "O código promocional já foi usado" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tipo de desconto inválido para o código promocional {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Desconto percentual para os produtos selecionados" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Porcentagem de desconto" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Forneça um nome exclusivo para essa promoção" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Nome da promoção" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Descrição da promoção" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Selecione quais produtos estão incluídos nessa promoção" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Produtos incluídos" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promoção" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "O fornecedor que fornece esse estoque de produtos" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Fornecedor associado" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Preço final para o cliente após as marcações" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Preço de venda" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "O produto associado a essa entrada em estoque" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "O preço pago ao fornecedor por esse produto" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Preço de compra do fornecedor" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Quantidade disponível do produto em estoque" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Quantidade em estoque" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuído pelo fornecedor para identificar o produto" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU do fornecedor" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Arquivo digital associado a esse estoque, se aplicável" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Arquivo digital" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Entradas de estoque" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Produtos que o usuário marcou como desejados" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Usuário que possui esta lista de desejos" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Proprietário da lista de desejos" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Lista de desejos" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Baixar" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Downloads" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "" "Não é possível fazer download de um ativo digital para um pedido não " "concluído" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentário" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentários" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Não resolvido" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Rua" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Distrito" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Cidade" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Região" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Código postal" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "País" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Ponto de geolocalização (Longitude, Latitude)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Resposta JSON completa do geocodificador para este endereço" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Resposta JSON armazenada do serviço de geocodificação" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Endereço" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Endereços" @@ -1814,8 +1825,8 @@ msgstr "Olá %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Obrigado por seu pedido #%(order.pk)s! Temos o prazer de informá-lo de que " "seu pedido foi colocado em prática. Abaixo estão os detalhes de seu pedido:" @@ -1900,8 +1911,8 @@ msgstr "Chave" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Obrigado por seu pedido! Temos o prazer de confirmar sua compra. Abaixo " "estão os detalhes de seu pedido:" @@ -1959,7 +1970,7 @@ msgstr "{config.PROJECT_NAME} | Order Delivered" msgid "you do not have permission to perform this action." msgstr "Você não tem permissão para executar essa ação." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "O parâmetro NOMINATIM_URL deve ser configurado!" @@ -1981,7 +1992,10 @@ msgstr "Você só pode fazer o download do ativo digital uma vez" msgid "favicon not found" msgstr "favicon não encontrado" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erro de geocodificação: {e}" + +#~ msgid "translations" +#~ msgstr "Traduções" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index 5b8ce07c40eb47359fc32611415a267342d1b395..226d51333591bf72c709dccf70bb00ea380c1bce 100644 GIT binary patch delta 7751 zcmXxp33wO98OQPYLx6B3vx?{+RLqbf3?>v%531@4UOgr|&kl zsA+8BeHIb4(eOJGFeV-^gcwuW!k9f>)N9PubYr6MTh#eBU9IWZiFlxMJnEL27>6q{ z7V9t)k79Q`jj8w@a-C=5x*4;9j$BN^U*SO(a2Yj0ZH6&1cn~$x7b6OX|JoaL-SP4Fse0mm^Ke~)eO8y8>0 zw!|G6eKba6F;2(9xD%Cu%NT(-@M#RsHl{1{n`ddX!UiP!<_Id~@1t(`6vOcxMy0qXn= z)WjQ58Q6i^%RQ(E_#Jk{v#14ML`~T2;ugJ(X-(V-L$FIP@~;6h=;(kWQF}HK^`z6V zJyxI=FyEcujv9E6i{C_T)jJr9XHl8EfSRZowZ*L{jATs4ARO46{Od`E(xH`)My39K z)Qyj$7FLOxU>)iScDVDep$0mF8s|8M<9n#<&tVvTgG%`g)Y}n3dSy?Kh9(}0TJd<) zKr>Ji&q3~is8j3hpVT7dVNYy2Cv zkcd3HkW|zb?|i>M4}Tyq{fA4XUc^a45cxdctN@CIYNdnF>Z_Di%qS$wV!< z3{@k~xby2#3*L^Nit0R#9Bfl$_p$(^iSNQLI1O*ZMW~72Lhb4M&NHYd{v64!`3GiW z#sEG_I00K?6>352P_=P*0QuJh@41dIFp>BwYQT=n+8tA!BT%V-%((#*h!0^BevHZZ zFI0-7ifu+ZV`t)?&S5x=cv`V%i(xk%DvAbFs*j-tXhdb=1Jr{4f~xlaU@V5-Zl9z( zsy`pKCBu=As42mT=%F&xgeuCgf%beqkA{kF25N%YsJ*O2rKlRUpjy;xw-4j-80v|d zP!s+O^_}=0wcs9i*l~)Hx-@sAig6WcoGqv=^mfzGfQL|9aRyZ^e|I*cp6q|9qKO=2 z_x3IvOuPV9tjAFUhS8~s;!zLQ8#P`5YMf%!gN;QV%rjHniAPZ@TZa0OthX1KZK#3w zyYp|k^QTZ-cHYGoP_N%L%)*c%cD%l*57%i;w;68xvoVgi1hs&N(Hl!+B@MD> z&LjUb$s_EOJ&fARD%6(Lq6XNHN^v9h#%5>6UG@nlV|V&jUu>n0ZKno3~vY7;XPn3`ag0X0?ldg+aRiZu@Bu#Sr2_ zs0@{&9_aDA$^X4HmeUc6U!bb=TWp1`O6-m8Q7MnZ985-D2vg$vedlIuM}Hk^oIMzZ z?_e-~h}rlDtj1ukluD#ggGyP;G4_eFP#0EUPuz^%@O|uoS5O&>VgK@QENZV;VJ6n2 zzKl(%ahp+p6Ow*n#~X*~#9k$hA{x6;PkaH}<7L!de}`!pHqH*1hswYhY>SnsEnI_o z@{<^gAE0XK5~>Dr$J+(ohg#rLPopCpXHk205%uJkF#=;J*bh?{YQ@7)nW#WM z^TtOl{3Fx?&Y`yIOVmOxqaLW`J@#$sh`O#T=IH(JMWYQJWjGbf@fJLVDR>RVHxDz;4QgR}5ftVIp<2`Z&Q_u0M9!Op}JFbW?-onM8jkp@h_CiLzJP#iRLL&+4o z=QA;$csZ(n8+O6BFbSJbPktSfF}}+apcb&n#UG=#Qm5VgSdsJCV}M&nV`+wvg>;{{aezrhp? zn`z&wKG=!4%*EalG*m>}F&95TO%zmN7ZQtoiIY)JFbOqb8EV3Ls0Ub$y6;77jeAko z9Y8Ih(Z%1O9yDmy%?x-ZiiQSA!YsT6^#qgb1?BhQyHE>y8ZmWHZ&8fN1r)E>Wwx8UcfjD$W)U0@6j$1+rkccUgg z;ru;nVP9i1wwzoGYg?i!^kJ$;Mu^n+XDpQ3n z9*jeX?{@tgQD4qF?0{dPw)meo0h8vs_kZ48`@wk*Z{@^Z)WR;HGVwKPfkBVk1%#jm zOh*ma8#VEL_#51gy8h88>}$CIwU7;{)HmTI{QL>>{~(QiPuefmR#eLWh&{0VJp19v zL%y=+L5#)|7>4IC5-(v_{4XY9+I;%}gD{481pXAKVLAR9r(hp%fvwJJ)WDl@Jnl!O zHux!fz7uLo;+;KF3oXJtoQa`Wi(1e=9Era`eTu`LwtrhjVH|N4>bv6Yq|u$m2^@-- zPeqj=$=Mi$TTu(!ft~TF^DN#+d=>Sn9lhAr#674?PQ@_2 z|8r<4C6%bXddbBHP_N@@)K>g}oiKQb-P;7bl{g(I;$+OngIIuHqwY_uv=f)2?w^FJ zo!NNv{a;KYf{u0W#5PpQ8c=(59$RBGDkC>g3(nym396alsOm1mSlo%4=s4<0&tMvU zi7L`I%j{NVqo<mWk%P|vAqRwB% z3QTy$*1&4i`FBtgeT`b^HB|8iueJ*;^k@vDV-%`*HlnJw5rZ+K$`)lGOd%fOtibNX zYh8TEdCvJC%;bFh8vCgohNZ+?@qYXkGtet})_(J!!X!HCou^&@6)d7Zb*=rU)f80K z*Em1IKE!R;*>Q?+6!D`t7?0zf*z!5MWh0%-k?TBjoQ5v!u-+C~DUKz61C@!^)%FP< zbRI*U@8sJIm7}(54o2c@s3(8h#g~yc(cHi=T)e^l%V<3Y>HR-ILnn@48$5-*@gtm! zK^tv#mti>ZL#RDnfIV<2>btQAL-Ch*8=k>!81cL@PvJq-ccIq{_K#IL_F;ZgPa_-u zjGDOPCVSyP%qL#p;(e$I|AIX+>_z(|15o#sp|+wL3-KhXMsDCl?6%pyu8Xlf@e1^k zX;jlt${H{ZKf^)zZ&XH#YU}`mu^sWtsA7B-$73U^CQ@Ir3z>-hh^tT!@E%6v52*Vi zx7h#4P258M6X}>jhb~-%S$F{TM1MjRQ^d=5A!VqoDo4E?3$QCzVkExe;$trU0+osH zP+OL>)&AY@i$%m6^v6T5!H0B|;`bPiqiXHjFa`67J=ESFK%M^u7UNkg!>Br&u_ti^ z@ln)Pw4wlVun>n}IjY#}kvca2REJW(V!Qo&y&si{8<>lEJL~}Es6F3=s)3WJy}g17 z7`@YulZV=xDX6Vnf&pysPjo2=?DnsB>E7<=>bUvyGvhl4cKSo&v%;6t*@@#$PDJ7B z{*w5#gmttu%^+N6?=hcY1V_DpB0e(krhhj6eA{K5kLEb!A4%w+@B%IUy5Lk)>VN$0 z_rnvj0#*Ki#Nxm%e_>);V7*_LI4p3$zm%91*y^`UdMNOmKPM?Cu)?oPs>)x&8257X z7>?&@U&o*SI2cagc$NO89Gf`w+w4zGo)>t{Z%R&!s-{o1r(cLWU+IUZqy^Uc`6+(f zE3QxH|Hm%k(YU!>xsZ00;6YucDQ)2=v{fyMCs5Qi8^rv$y<;Wo3 z=g&w@>iY(*OZ4cskYg3GelsxBwLN^6<3)~Kj&Yn{?Vm`^3g1Zd?+ds~ln|APC3}B605 zTf*9`bNIdDbDUWGXRzaxw{n~#F{NpYLL!FPb_QY`Fa_c12Ee~NdZonwqhaK@f zOv4sTM*priu5+Dq3Jp}0U=n_e2N}Rms1Ej~(naT5{FA5w?M63|!fO=Biqm2*Xq)3WJ&40msT_zp{~&h2ou~}F zgj&lZs0nm;9@N0xE98F{m}0f=X#Ew!?X-0W7oU z51<-8V&ivEOLYp{<5#H6T|spez$~=H5txX%*apkHlYh-*Bo!L@ov75$MBTUuHL!YA z2U}1xc*&lB71huQR68GFD4s!Ge;z~df2fqVC#`xqlC8xq1$8_U!*CL+p$AbNFGTi@ zvl`iN&a0?3|JugaQP*eWv5~O{7T`40Kz5-9aLC5*Vn^anPy=zlwS~Z*W+2HJ#)%%N zB`8IudN|UTGYU1ZRhW;Bs0L4=I{G_m39q6ucpbHbH*v8Z+bGoeLL@1!Q$j%<%|`77 z7yIFMRA$bhX7X>;^X+$wS%NH7eIBa8QX3CLwO5VlI2C(g1Mb2m)b+JgM(Fu}hysIj z)}nUt+o)7FVG;TfFjA*KcEeeynLL3S&{5=4=PQiFIP$Ly=3_Vx!bBX4+Jy5_d**Qr z)${)(g`v0?N8xoW$ErdzpyyD#dLQ13ucKxd!05CYLs6NELS>{Ik}RhXHQ;+td*pF@ zej94Q2hi1~x=0}hBa6*i4#ZBxqcH|+@i({{)$#kNH9c!Rhnn$sNOql8eRv&X0kXZE z$=Dh|q^+O8vvuoft>_HYVWTF%jGJH7QO- zWh4VTW3jao2NKuzb z^PXsj8gOq^JHwHE>5M~d#*L_U_Mn!~eT9M=d>geC=TMvF7i&O?nOO(arb)qU9E}5T zIcl?hfNC(2N_CWlnpl5SdjnA!8jhOScw}O(bFV$I05!4()Qe=Bxxm?vYWNL%{(XD? z6V#GjwDA?x<}`r}8a zP4g+L;f{mMt}R2IZ$J%j6RM+qn2e{bS1^@0a!D3CqpBJz)u zJH*UvE@~||p_XJXs)08!6PvL+2K>%gfEmQoFb&sZIv%z4=kdlw%FMTkc_a2{siv)C2SVmG{w%1|2X*AvI1)_Nmq367%Pj2BSt z28=M@gd9|R6R``r^%ROJ96~?5g6;4p)LQ#j@XTW(-h=~C4VR-baW}TbEvTj3jmp56 z7=@Qmd&+;L*$cO!209lRsOxN{pqZV-4tN>0cC9K+1_CgQI3M+b8iX481k`=Yk=MSn z7d3(JPy@J%S~BMjGmrq(#1b(AvoJ`{|8FU1CPOg*>#znFzDCe#w0L2cTwQD&2lK<%A+%+mA!5d}Ratwx)*%tGzv8hiw|pq3zo zovIrLVh>z_x8Q52HNApb`=qgE&C9Se@qMTnuR)#Pg<67B=*CgFM&S-0&-$I_h8g3` z+AqUc&TmIGbPQwg6HL&3sF`=FHt&l9RC}Ya2p_;=d3T*R5Y*6c@I-%j}653?)uMf6PaoETq4nM7FSSXi`hM05^rL@gDuwoV4{BGtn2iTfYkUrG#-C9c$-IZbVow~5b*L1- zgX*Bg`ft?00`D~wN<=L|e^mW=bX9nWf@bESI%vc^+<_hNEcU{$Q8P}cH67+*5b+RH zrYdY)gQdjNZT)`KoAW5%gso?pB@UTI{wt{{rb07qK)rDG;4SzbYGA(m%=tjn0FzKN z&OkNTAGK$Op*o(6P53(M`c<>dW4RtRkbS5nyf&NskD~B16%(-Xe)GmUf=c<1*bTeQ zF)yBS97DViHGmcj!K>I2{U0!|*3Otf+z&N@YK+9mI0;?63;&_QI10lbG`sUfRKtgG zBz}NOZR%WezB_733ao=s1FgcIxD2(IUPBG23Cr+rs8@0JL+0Bu6{CsWXDH~!@+PKX z3*L(U^UT@~MKySbbuvZ}-;eqjt;AgX5F5~`GpSvN`GlKLOLQ7}s2M&X;Nj+(Ip zevc{WEHaz43%Ys?hEUJ|ZbPMT9QMcAsE!WdFg%ad*lV%L#70!AccR)kh8o~;R69+m zP532hfY(q13tnOd)^!Q_*M&v4q8v5zNvKTBLEX3l^)=jv>TtL9E$mJFIqLeTrRM%j zOe8KwWne6(VJ*gCqpd%@l>F=C^F9?C$XN`*I{Abt}16P=VhM_ibs!Ks5tiXXd6?Nl&)UG{`fq3hqW>XHwB;v`| z<(NkNoQ?lty=skIX$DY$m0ULg%kc=_iEjH<<}aT!Fpr82n1Cm(7j1pJ)#e4#7mGMQ z54GzLTff5|#9h~zcB*hF@hTjE%{T}XA2Ulf#ppWQDd@sx)P?D5%_f_Pw-bMe%0x=N znZZKqUs30~dnQARQA@QNJL0>TfuGtqpn=ymaSVpwW=z)e{{n?JRGhXa&R_uX*VrAu z!_kb^QudoN;d{1UZCVj9g0ss#OrH>2B* z!VU_F_#!H0r%*HdFGi!^CjP4hCZIAi9;$w(Y(f+M$(|4|gGsVK%*F&%%va!lT8*7`n7AYOt!@hQ|AH)AM%gMIO5tj6MP zCS#j%2=N!FCCOqV$AMvSQ8^cPDXQ^Mr@i>Qmo4oSGIlkw;6NxDi9(CG+`UTtb zk9fYM6yF*zHOY(KZR>RY7misR`d_3^dZ&{jqgPOBZLc`4OZWv6@A7=fk-lYKbaH0I zD&lJDyKp?hkxsnVt4dBNI6&zFHTuo;rIr2CvIRB`(FF7-GJ<+ef z`zh@7E+r=fFQj$^(dQg{yy%o7-ygk-luTcPw=g9$dY!$el(T0!rf|GK-FEMIN?!C6 zl=Ku%=cwg~bg4|*!ZkCfJIS$`@\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,11 +29,10 @@ msgstr "Este activ" #: core/abstract.py:20 msgid "" -"if set to false, this object can't be seen by users without needed " -"permission" +"if set to false, this object can't be seen by users without needed permission" msgstr "" -"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără" -" permisiunea necesară" +"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără " +"permisiunea necesară" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -51,22 +50,22 @@ msgstr "Modificat" msgid "when the object was last modified" msgstr "Când a fost editat obiectul ultima dată" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Activați %(verbose_name_plural)s selectate" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Dezactivați %(verbose_name_plural)s selectate" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Atribut Valoare" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Valori ale atributului" @@ -79,19 +78,19 @@ msgstr "Nume și prenume" msgid "image" msgstr "Imagine" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Imagini" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Stoc" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Stocuri" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Stocuri" msgid "price" msgstr "Preț" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Evaluarea produsului" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Informații de bază" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Date importante" -#: core/admin.py:218 -msgid "translations" -msgstr "Traduceri" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Comanda Produs" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Comandați produse" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Este o afacere" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Configurare" @@ -189,41 +184,42 @@ 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." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Obțineți parametrii expunibili ai aplicației" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Trimiteți un mesaj echipei de asistență" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Solicitați un URL CORSed. Numai https este permis." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" -"Punct final de căutare globală pentru a efectua interogări în toate tabelele" -" proiectului" +"Punct final de căutare globală pentru a efectua interogări în toate tabelele " +"proiectului" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Achiziționați o comandă ca întreprindere" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid`" -" și `attributes` furnizate." +"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid` " +"și `attributes` furnizate." #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -244,12 +240,10 @@ msgstr "Ștergerea unui grup de atribute" #: core/docs/drf/viewsets.py:53 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" #: core/docs/drf/viewsets.py:57 -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" @@ -302,8 +296,7 @@ msgstr "" "Rescrierea unei valori de atribut existente care salvează non-editabile" #: core/docs/drf/viewsets.py:111 -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" @@ -384,19 +377,19 @@ msgstr "" "achiziția este finalizată utilizând soldul utilizatorului; Dacă se " "utilizează `force_payment`, este inițiată o tranzacție." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "achiziționarea unei comenzi fără crearea unui cont" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "finalizează achiziția comenzii pentru un utilizator neînregistrat." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -404,11 +397,11 @@ msgstr "" "Adaugă un produs la o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -416,218 +409,239 @@ msgstr "" "Elimină un produs dintr-o comandă folosind `product_uuid` și `attributes` " "furnizate." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Lista tuturor atributelor (vizualizare simplă)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Pentru utilizatorii care nu fac parte din personal, sunt returnate doar " "propriile liste de dorințe." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Recuperarea unui singur atribut (vedere detaliată)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Crearea unui atribut" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Nu funcționează pentru utilizatorii care nu fac parte din personal." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Ștergerea unui atribut" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Rescrierea unui atribut existent cu salvarea elementelor needitabile" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Rescrieți unele câmpuri ale unui atribut existent salvând elementele " "needitabile" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Adăugați un produs la comandă" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Adaugă un produs la o listă de dorințe folosind `product_uuid` furnizat" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Eliminați un produs din lista de dorințe" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Înlătură un produs dintr-o listă de dorințe folosind `product_uuid` furnizat" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Adăugați mai multe produse la lista de dorințe" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Adaugă mai multe produse la o listă de dorințe folosind `product_uuids` " "furnizat" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Eliminați un produs din comandă" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Îndepărtează mai multe produse dintr-o listă de dorințe folosind " "`product_uuids` furnizat" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`" -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Listează toate produsele (vizualizare simplă)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(exact) UUID al produsului" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(icontains) Denumirea produsului" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(listă) Numele categoriilor, fără deosebire de majuscule" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(exact) UUID al categoriei" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(listă) Nume de etichete, fără diferențiere de majuscule" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Prețul minim al acțiunilor" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Prețul maxim al acțiunilor" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(exact) Numai produse active" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Denumire comercială" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Cantitatea minimă de stoc" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(exact) Limbajul produsului" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(exact) Digital vs. fizic" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Recuperarea unui singur produs (vedere detaliată)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID sau Slug al produsului" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Creați un produs" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" "Rescrierea unui produs existent, păstrând câmpurile care nu pot fi editate" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Actualizarea unor câmpuri ale unui produs existent, păstrând câmpurile " "needitabile" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Ștergeți un produs" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Enumerați toate adresele" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Recuperarea unei singure adrese" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Creați o adresă nouă" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Ștergeți o adresă" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Actualizarea unei adrese întregi" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Actualizarea parțială a unei adrese" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Autocompletare adresă de intrare" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Nu a fost furnizat niciun termen de căutare." @@ -661,7 +675,7 @@ msgid "add a product to the order" msgstr "Adăugați un produs la comandă" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Comanda {order_uuid} nu a fost găsită" @@ -678,68 +692,69 @@ msgstr "Eliminați toate produsele din comandă" msgid "buy an order" msgstr "Cumpărați o comandă" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Vă rugăm să furnizați fie order_uuid sau order_hr_id - se exclud reciproc!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Metoda order.buy() a generat un tip greșit: {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Adăugați un produs la comandă" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Lista dorințelor {wishlist_uuid} nu a fost găsită" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Eliminați un produs din comandă" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Cumpărați o comandă" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Șirul de adrese original furnizat de utilizator" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Limita trebuie să fie între 1 și 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - funcționează ca un farmec" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Atribute" @@ -752,11 +767,11 @@ msgid "groups of attributes" msgstr "Grupuri de atribute" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Categorii" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Mărci" @@ -764,7 +779,7 @@ msgstr "Mărci" msgid "category image url" msgstr "Categorii" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Procentul de majorare" @@ -776,54 +791,53 @@ msgstr "" "categorii." #: core/graphene/object_types.py:114 -msgid "" -"minimum and maximum prices for products in this category, if available." +msgid "minimum and maximum prices for products in this category, if available." msgstr "" -"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt" -" disponibile." +"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt " +"disponibile." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Furnizori" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Latitudine (coordonata Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Longitudine (coordonata X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Cum să" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "Valoare nominală de la 1 la 10, inclusiv, sau 0 dacă nu este setată." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Reprezintă feedback de la un utilizator." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Notificări" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "URL de descărcare pentru acest produs de comandă, dacă este cazul" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "O listă a produselor comandate în această comandă" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Adresa de facturare" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -831,47 +845,47 @@ msgstr "" "Adresa de expediere pentru această comandă, lăsați în alb dacă este aceeași " "cu adresa de facturare sau dacă nu se aplică" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Prețul total al acestei comenzi" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Cantitatea totală de produse din comandă" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Sunt toate produsele din comanda digitală" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Ordine" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "URL imagine" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Imagini ale produsului" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Categorie" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Feedback-uri" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Marca" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Grupuri de atribute" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -879,31 +893,31 @@ msgstr "Grupuri de atribute" msgid "quantity" msgstr "Cantitate" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Numărul de reacții" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Produse" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Coduri promoționale" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Produse scoase la vânzare" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Promoții" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Furnizor" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -911,78 +925,78 @@ msgstr "Furnizor" msgid "product" msgstr "Produs" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Produse dorite" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Liste de dorințe" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Numele proiectului" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Email companie" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Numele companiei" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Adresa companiei" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Numărul de telefon al companiei" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "\"e-mail de la\", uneori trebuie să fie utilizat în locul valorii " "utilizatorului gazdă" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Utilizator gazdă e-mail" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Suma maximă pentru plată" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Suma minimă pentru plată" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Configurație" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Codul limbii" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Numele limbii" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Indicatorul de limbă, dacă există :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Obțineți o listă a limbilor acceptate" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Rezultate căutare produse" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Rezultate căutare produse" @@ -1063,8 +1077,7 @@ msgstr "Atributul acestei valori" msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Produs asociat" @@ -1082,8 +1095,7 @@ msgstr "Categorie imagine" #: core/models.py:174 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" #: core/models.py:183 msgid "parent of this category to form a hierarchical structure" @@ -1109,284 +1121,283 @@ msgstr "Adăugați o descriere detaliată pentru această categorie" msgid "category description" msgstr "Descriere categorie" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Denumirea acestui brand" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Nume de marcă" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Încărcați un logo care reprezintă acest brand" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Brand imagine mică" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Încărcați un logo mare care reprezintă acest brand" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Imagine de marcă mare" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Adăugați o descriere detaliată a mărcii" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Descrierea mărcii" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Categorii opționale cu care acest brand este asociat" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Categorii" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Categoria din care face parte acest produs" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "Opțional, asociați acest produs cu un brand" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Etichete care ajută la descrierea sau gruparea acestui produs" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Etichete de produs" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Indică dacă acest produs este livrat digital" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Produsul este digital" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Furnizați o denumire clară de identificare a produsului" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Denumirea produsului" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Adăugați o descriere detaliată a produsului" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Descrierea produsului" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Numărul piesei pentru acest produs" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Numărul piesei" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" "Stochează acreditările și punctele finale necesare pentru comunicarea API a " "furnizorului" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Informații privind autentificarea" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "" "Definirea marjei de profit pentru produsele preluate de la acest furnizor" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Procentul de majorare al furnizorului" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Numele acestui vânzător" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Numele furnizorului" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "" "Comentarii furnizate de utilizatori cu privire la experiența lor cu produsul" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Comentarii de feedback" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" -"Face referire la produsul specific dintr-o comandă despre care este vorba în" -" acest feedback" +"Face referire la produsul specific dintr-o comandă despre care este vorba în " +"acest feedback" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Produs aferent comenzii" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Rating atribuit de utilizator pentru produs" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Evaluarea produsului" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Feedback" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Adresa de facturare utilizată pentru această comandă" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Cod promoțional opțional aplicat la această comandă" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Cod promoțional aplicat" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Adresa de expediere utilizată pentru această comandă" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Adresa de expediere" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Stadiul actual al comenzii în ciclul său de viață" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Stadiul comenzii" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" "Structura JSON a notificărilor care urmează să fie afișate utilizatorilor, " "în interfața de administrare este utilizată vizualizarea tabelară" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "Reprezentarea JSON a atributelor comenzii pentru această comandă" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "Utilizatorul care a plasat comanda" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Utilizator" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Momentul în care comanda a fost finalizată" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Cumpărați timp" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Un identificator ușor de citit pentru comandă" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "ID lizibil de către om" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Comandă" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "" "Un utilizator trebuie să aibă un singur ordin în așteptare la un moment dat!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "Nu puteți adăuga produse la o comandă care nu este în așteptare" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Nu puteți adăuga produse inactive la comandă" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Nu puteți adăuga mai multe produse decât cele disponibile în stoc" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nu există: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" "Nu puteți elimina produse dintr-o comandă care nu este o comandă în curs" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} nu există cu interogarea <{query}>" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Codul promoțional nu există" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" "Puteți cumpăra numai produse fizice cu adresa de expediere specificată!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Adresa nu există" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "Nu puteți achiziționa în acest moment, vă rugăm să încercați din nou în " "câteva minute." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Valoare forță invalidă" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Nu puteți achiziționa o comandă goală!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Insuficiența fondurilor pentru finalizarea comenzii" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1394,186 +1405,186 @@ msgstr "" "nu puteți cumpăra fără înregistrare, vă rugăm să furnizați următoarele " "informații: nume client, e-mail client, număr de telefon client" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Metodă de plată invalidă" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "Prețul plătit de client pentru acest produs la momentul achiziției" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Prețul de achiziție la momentul comenzii" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "" "Comentarii interne pentru administratori cu privire la acest produs comandat" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Observații interne" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Notificări pentru utilizatori" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "Reprezentarea JSON a atributelor acestui element" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Atribute de produs ordonate" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Trimitere la comanda mamă care conține acest produs" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Ordinul părinților" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Produsul specific asociat cu această linie de comandă" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Cantitatea acestui produs specific din comandă" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Cantitatea produsului" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Starea actuală a acestui produs în comandă" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Starea liniei de produse" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Identificator intern de etichetă pentru eticheta produsului" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Nume etichetă" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Nume ușor de utilizat pentru eticheta produsului" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Nume afișare etichetă" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Etichetă produs" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "Furnizați text alternativ pentru imagine pentru accesibilitate" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Textul alt al imaginii" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Încărcați fișierul de imagine pentru acest produs" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Imaginea produsului" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Determină ordinea în care sunt afișate imaginile" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Prioritatea afișării" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Produsul pe care îl reprezintă această imagine" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Imagini ale produsului" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Cod unic utilizat de un utilizator pentru a răscumpăra o reducere" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Cod promoțional de identificare" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Valoarea fixă a reducerii aplicate dacă procentul nu este utilizat" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Valoarea fixă a reducerii" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "Procentul de reducere aplicat dacă suma fixă nu este utilizată" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Reducere procentuală" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Data la care expiră codul promoțional" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Timpul final de valabilitate" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Timestamp de la care acest cod promoțional este valabil" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Ora de începere a valabilității" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Momentul în care codul promoțional a fost utilizat, gol dacă nu a fost " "utilizat încă" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Timestamp de utilizare" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Utilizatorul atribuit acestui cod promoțional, dacă este cazul" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Utilizator atribuit" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Cod promoțional" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Coduri promoționale" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." @@ -1581,184 +1592,184 @@ msgstr "" "Trebuie definit un singur tip de reducere (sumă sau procent), dar nu ambele " "sau niciuna." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Codul promoțional a fost deja utilizat" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Tip de reducere invalid pentru codul promoțional {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Procentul de reducere pentru produsele selectate" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Procent de reducere" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Furnizați un nume unic pentru această promoție" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Numele promoției" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Descrierea promoției" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Selectați ce produse sunt incluse în această promoție" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Produse incluse" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Promovare" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Furnizorul care furnizează acest stoc de produse" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Furnizor asociat" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Prețul final pentru client după majorări" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Prețul de vânzare" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Produsul asociat cu această intrare în stoc" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Prețul plătit vânzătorului pentru acest produs" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Prețul de achiziție al furnizorului" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Cantitatea disponibilă a produsului în stoc" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Cantitate în stoc" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "SKU atribuit de furnizor pentru identificarea produsului" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU al furnizorului" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Fișier digital asociat cu acest stoc, dacă este cazul" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Fișier digital" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Intrări pe stoc" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Produse pe care utilizatorul le-a marcat ca fiind dorite" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Utilizatorul care deține această listă de dorințe" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Proprietarul listei de dorințe" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Lista dorințelor" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Descărcare" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Descărcări" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "Nu puteți descărca un bun digital pentru o comandă nefinalizată" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Documentar" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Documentare" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Nerezolvat" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Strada" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Districtul" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Oraș" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Regiunea" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Cod poștal" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Țara" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Punct de geolocație (longitudine, latitudine)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Răspuns JSON complet de la geocoder pentru această adresă" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Răspuns JSON stocat de la serviciul de geocodare" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Adresă" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Adrese" @@ -1827,8 +1838,8 @@ msgstr "Bună ziua %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" "Vă mulțumim pentru comanda dvs. #%(order.pk)s! Suntem încântați să vă " "informăm că am preluat comanda dvs. în lucru. Mai jos sunt detaliile " @@ -1914,11 +1925,11 @@ msgstr "Cheie" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" -"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția." -" Mai jos sunt detaliile comenzii dvs:" +"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția. " +"Mai jos sunt detaliile comenzii dvs:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1973,7 +1984,7 @@ msgstr "{config.PROJECT_NAME} | Comanda livrată" msgid "you do not have permission to perform this action." msgstr "Nu aveți permisiunea de a efectua această acțiune." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Parametrul NOMINATIM_URL trebuie să fie configurat!" @@ -1996,7 +2007,10 @@ msgstr "Puteți descărca activul digital o singură dată" msgid "favicon not found" msgstr "favicon nu a fost găsit" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Eroare de geocodare: {e}" + +#~ msgid "translations" +#~ msgstr "Traduceri" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index e796008bf30f6d8e4302298746087d5c2dcb5329..20b5c4f36283152bd1b4ad0f65d0b366365b06e3 100644 GIT binary patch delta 7759 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 delta 7813 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 iiwmj`S65V@tUh#cxv4IxuB`sEllM~M!B(fL0{\n" "Language-Team: BRITISH ENGLISH \n" @@ -29,8 +29,7 @@ msgstr "Активен" #: core/abstract.py:20 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, этот объект не может быть виден " "пользователям без необходимого разрешения" @@ -51,22 +50,22 @@ msgstr "Модифицированный" msgid "when the object was last modified" msgstr "Когда объект был отредактирован в последний раз" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "Активировать выбранные %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "Деактивировать выбранные %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "Значение атрибута" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "Значения атрибутов" @@ -79,19 +78,19 @@ msgstr "Имя" msgid "image" msgstr "Изображение" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "Изображения" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "Наличие" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "Наличия" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -99,35 +98,31 @@ msgstr "Наличия" msgid "price" msgstr "Цена" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "Рейтинг продукции" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "Основная информация" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "Важные даты" -#: core/admin.py:218 -msgid "translations" -msgstr "Переводы" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "Заказать товар" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "Заказать товары" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Бизнес" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "Конфигурация" @@ -191,32 +186,32 @@ msgstr "" "Применяйте только ключ для чтения разрешенных данных из кэша.\n" "Применяйте ключ, данные и таймаут с аутентификацией для записи данных в кэш." -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "Получите список поддерживаемых языков" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "Получите параметры приложения, которые можно использовать" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "Отправьте сообщение в службу поддержки" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "Запросите URL-адрес с поддержкой CORS. Допускается только https." -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" "Ручка глобального поиска для запросов по всем открытым таблицам проекта" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "Приобрести заказ в качестве предприятия" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." @@ -247,8 +242,7 @@ msgstr "" "элементов" #: core/docs/drf/viewsets.py:57 -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 "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" @@ -302,8 +296,7 @@ msgstr "" "значений" #: core/docs/drf/viewsets.py:111 -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 "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" @@ -386,19 +379,19 @@ msgstr "" "завершается с использованием баланса пользователя; если используется " "`force_payment`, инициируется транзакция." -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "приобретение заказа без создания учетной записи" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "завершает покупку заказа для незарегистрированного пользователя." -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." @@ -406,11 +399,11 @@ msgstr "" "Добавляет товар в заказ, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." @@ -418,217 +411,239 @@ msgstr "" "Удаляет товар из заказа, используя предоставленные `product_uuid` и " "`attributes`." -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "Список всех атрибутов (простой вид)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" "Для пользователей, не являющихся сотрудниками, возвращаются только их " "собственные списки желаний." -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "Получение одного атрибута (подробный просмотр)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "Создайте атрибут" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "Не работает для нештатных пользователей." -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "Удалить атрибут" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "Переписать существующий атрибут, сохранив нередактируемый" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" "Переписывание некоторых полей существующего атрибута с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "Добавить товар в заказ" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "" "Добавляет товар в список желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "Удалить продукт из списка желаний" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "" "Удаляет продукт из списка желаний, используя предоставленный `product_uuid`." -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "Добавьте много товаров в список желаний" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "" "Добавляет множество товаров в список желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "Удалить продукт из заказа" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "" "Удаляет множество товаров из списка желаний, используя предоставленные " "`product_uuids`." -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 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`." -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "Список всех продуктов (простой вид)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(точный) UUID продукта" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(иконки) Название продукта" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(список) Названия категорий, без учета регистра" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(точный) UUID категории" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(список) Имена тегов, нечувствительные к регистру" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) Минимальная цена акции" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) Максимальная цена акции" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(точно) Только активные продукты" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) Торговое название" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) Минимальное количество на складе" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(точный) Артикул" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(точно) Цифровые и физические" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "Получение одного продукта (подробный просмотр)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "UUID или Slug продукта" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "Создать продукт" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "Переписать существующий продукт, сохранив нередактируемые поля" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "" "Обновление некоторых полей существующего продукта с сохранением " "нередактируемых полей" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "Удалить продукт" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "Перечислите все адреса" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "Получение одного адреса" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "Создайте новый адрес" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "Удалить адрес" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "Обновление всего адреса" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "Частичное обновление адреса" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "Автозаполнение ввода адреса" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "Поисковый запрос не предоставлен." @@ -662,7 +677,7 @@ msgid "add a product to the order" msgstr "Добавить товар в заказ" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "Заказ {order_uuid} не найден" @@ -679,69 +694,70 @@ msgstr "Удалить все товары из заказа" msgid "buy an order" msgstr "Купить заказ" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "" "Пожалуйста, укажите либо order_uuid, либо order_hr_id - взаимоисключающие " "варианты!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "Неправильный тип получен из метода order.buy(): {type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "Добавить товар в заказ" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "Список желаний {wishlist_uuid} не найден" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "Удалить продукт из заказа" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "Купить заказ" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "Оригинальная строка адреса, предоставленная пользователем" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "Предел должен быть от 1 до 10" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - работает как шарм" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "Атрибуты" @@ -754,11 +770,11 @@ msgid "groups of attributes" msgstr "Группы атрибутов" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "Категории" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "Бренды" @@ -766,7 +782,7 @@ msgstr "Бренды" msgid "category image url" msgstr "Категории" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "Процент наценки" @@ -777,55 +793,54 @@ msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." #: core/graphene/object_types.py:114 -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 "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "Поставщики" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "Широта (координата Y)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "Долгота (координата X)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "Как" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "" "Значение рейтинга от 1 до 10, включительно, или 0, если он не установлен." -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "Представляет собой отзыв пользователя." -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "Уведомления" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "Если применимо, загрузите url для этого продукта заказа" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "Список товаров, заказанных в этом заказе" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "Адрес для выставления счетов" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" @@ -833,47 +848,47 @@ msgstr "" "Адрес доставки для данного заказа, оставьте пустым, если он совпадает с " "адресом выставления счета или не применяется" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "Общая стоимость этого заказа" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "Общее количество продуктов в заказе" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "Все ли товары в заказе представлены в цифровом виде" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "Заказы" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "URL-адрес изображения" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "Изображения продукта" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "Категория" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "Отзывы" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "Бренд" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "Группы атрибутов" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -881,31 +896,31 @@ msgstr "Группы атрибутов" msgid "quantity" msgstr "Количество" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "Количество отзывов" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "Продукция" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "Промокоды" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "Продукты в продаже" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "Акции" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "Поставщик" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -913,78 +928,78 @@ msgstr "Поставщик" msgid "product" msgstr "Продукт" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "Продукты из списка желаний" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "Списки желаний" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "Название проекта" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "Электронная почта компании" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "Название компании" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "Адрес компании" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "Номер телефона компании" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" "'email from', иногда его нужно использовать вместо значения пользователя " "хоста." -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "Пользователь узла электронной почты" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "Максимальная сумма для оплаты" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "Минимальная сумма для оплаты" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "Конфигурация" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "Код языка" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "Название языка" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "Языковой флаг, если он существует :)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "Получите список поддерживаемых языков" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "Результаты поиска товаров" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "Результаты поиска товаров" @@ -1065,8 +1080,7 @@ msgstr "Атрибут этого значения" msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "Сопутствующий товар" @@ -1110,280 +1124,278 @@ msgstr "Добавьте подробное описание для этой к msgid "category description" msgstr "Описание категории" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "Название этой марки" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "Название бренда" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "Загрузите логотип, представляющий этот бренд" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "Маленький образ бренда" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "Загрузите большой логотип, представляющий этот бренд" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "Большой имидж бренда" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "Добавьте подробное описание бренда" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "Описание бренда" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "Дополнительные категории, с которыми ассоциируется этот бренд" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "Категории" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "Категория, к которой относится этот продукт" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "По желанию ассоциируйте этот продукт с брендом" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "Теги, которые помогают описать или сгруппировать этот продукт" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "Теги товара" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "Указывает, поставляется ли этот продукт в цифровом виде" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "Является ли продукт цифровым" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "Обеспечьте четкое идентификационное название продукта" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "Название продукта" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "Добавьте подробное описание продукта" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "Описание товара" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "Парт. номер для данного товара" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "Парт. номер" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" -" поставщика." +"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API " +"поставщика." -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "Информация об аутентификации" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "Определите наценку для товаров, полученных от этого продавца" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "Процент наценки поставщика" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "Имя этого продавца" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "Название поставщика" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "Комментарии пользователей об их опыте использования продукта" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "Комментарии к отзывам" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "Сопутствующий товар для заказа" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "Присвоенный пользователем рейтинг продукта" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "Рейтинг продукции" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "Обратная связь" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "Адрес для выставления счетов, используемый для данного заказа" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "Дополнительный промокод, применяемый к этому заказу" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "Примененный промокод" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "Адрес доставки, используемый для данного заказа" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "Адрес доставки" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "Текущий статус заказа в его жизненном цикле" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "Статус заказа" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" -"JSON-структура уведомлений для отображения пользователям, в административном" -" интерфейсе используется табличный вид" +"JSON-структура уведомлений для отображения пользователям, в административном " +"интерфейсе используется табличный вид" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "JSON-представление атрибутов заказа для этого заказа" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "Пользователь, разместивший заказ" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "Пользователь" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "Временная метка, когда заказ был завершен" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "Время покупки" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "Человекочитаемый идентификатор для заказа" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "человекочитаемый идентификатор" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "Заказать" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "Пользователь может одновременно иметь только один отложенный ордер!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "Вы не можете добавить товары в заказ, который не является отложенным." -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "Вы не можете добавить неактивные товары в заказ" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} не существует: {product_uuid}" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" -msgstr "" -"Вы не можете удалить товары из заказа, который не является отложенным." +msgstr "Вы не можете удалить товары из заказа, который не является отложенным." -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "{name} не существует в запросе <{query}>." -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "Промокод не существует" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "" "Вы можете купить физические товары только с указанным адресом доставки!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "Адрес не существует" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "" "В данный момент вы не можете совершить покупку, пожалуйста, повторите " "попытку через несколько минут." -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "Недопустимое значение силы" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "Вы не можете приобрести пустой заказ!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "Недостаточно средств для выполнения заказа" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" @@ -1391,374 +1403,373 @@ msgstr "" "Вы не можете купить без регистрации, пожалуйста, предоставьте следующую " "информацию: имя клиента, электронная почта клиента, номер телефона клиента" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "Неверный метод оплаты" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "Цена, уплаченная клиентом за данный продукт на момент покупки" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "Покупная цена на момент заказа" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" -msgstr "" -"Внутренние комментарии для администраторов об этом заказанном продукте" +msgstr "Внутренние комментарии для администраторов об этом заказанном продукте" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "Внутренние комментарии" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "Уведомления пользователей" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "JSON-представление атрибутов этого элемента" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "Атрибуты заказанного продукта" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "Ссылка на родительский заказ, содержащий данный продукт" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "Родительский приказ" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "Конкретный продукт, связанный с этой линией заказа" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "Количество данного товара в заказе" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "Количество продукта" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "Текущий статус этого продукта в заказе" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "Состояние продуктовой линейки" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "Внутренний идентификатор тега для тега продукта" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "Название тега" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "Удобное название для метки продукта" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "Отображаемое имя тега" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "Метка продукта" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "" "Предоставьте альтернативный текст для изображения, чтобы обеспечить " "доступность" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "Альтовый текст изображения" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "Загрузите файл изображения для этого продукта" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "Изображение продукта" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "Определяет порядок отображения изображений" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "Приоритет отображения" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "Продукт, который представлен на этом изображении" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "Изображения продуктов" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "Уникальный код, используемый пользователем для получения скидки" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "Идентификатор промо-кода" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "Фиксированная сумма скидки, применяемая, если процент не используется" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "Фиксированная сумма скидки" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "" "Процентная скидка, применяемая, если фиксированная сумма не используется" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "Процентная скидка" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "Временная метка, когда истекает срок действия промокода" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "Время окончания срока действия" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "Время, с которого действует этот промокод" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "Время начала действия" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" "Временная метка, когда был использован промокод, пустая, если он еще не " "использовался" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "Временная метка использования" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "Пользователь, назначенный на этот промокод, если применимо" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "Назначенный пользователь" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "Промокод" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "Промокоды" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Следует определить только один тип скидки (сумма или процент), но не оба или" -" ни один из них." +"Следует определить только один тип скидки (сумма или процент), но не оба или " +"ни один из них." -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "Промокоды" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "Неверный тип скидки для промокода {self.uuid}" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "Процентная скидка на выбранные продукты" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "Процент скидки" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "Укажите уникальное имя для этой акции" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "Название акции" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "Описание акции" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "Выберите, какие продукты участвуют в этой акции" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "Включенные продукты" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "Продвижение" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "Поставщик, поставляющий данный товар на склад" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "Ассоциированный поставщик" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "Окончательная цена для покупателя после наценок" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "Цена продажи" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "Продукт, связанный с этой складской записью" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "Цена, уплаченная продавцу за этот продукт" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "Цена покупки у поставщика" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "Доступное количество продукта на складе" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "Количество на складе" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "Присвоенный поставщиком SKU для идентификации продукта" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "SKU поставщика" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "Цифровой файл, связанный с этой акцией, если применимо" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "Цифровой файл" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "Проводки по запасам" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "Продукты, которые пользователь отметил как желаемые" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "Пользователь, владеющий этим списком желаний" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "Владелец вишлиста" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "Список желаний" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "Скачать" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "Скачать" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "Вы не можете загрузить цифровой актив для незавершенного заказа" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "Документальный фильм" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "Документальные фильмы" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "Неразрешенные" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "Улица" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "Округ" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "Город" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "Регион" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "Почтовый индекс" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "Страна" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "Геолокационная точка(долгота, широта)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "Полный JSON-ответ от геокодера для этого адреса" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "Сохраненный JSON-ответ от сервиса геокодирования" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "Адрес" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "Адреса" @@ -1827,11 +1838,11 @@ msgstr "Здравствуйте %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" msgstr "" -"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш" -" заказ в работу. Ниже приведены детали вашего заказа:" +"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш " +"заказ в работу. Ниже приведены детали вашего заказа:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1913,8 +1924,8 @@ msgstr "Ключ" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "" "Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены " "детали вашего заказа:" @@ -1974,7 +1985,7 @@ msgstr "{config.PROJECT_NAME} | Заказ доставлен" msgid "you do not have permission to perform this action." msgstr "У вас нет разрешения на выполнение этого действия." -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "Параметр NOMINATIM_URL должен быть настроен!" @@ -1982,8 +1993,7 @@ 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} пикселей" #: core/validators.py:22 msgid "invalid phone number format" @@ -1997,7 +2007,10 @@ msgstr "Вы можете загрузить цифровой актив тол msgid "favicon not found" msgstr "favicon не найден" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "Ошибка геокодирования: {e}" + +#~ msgid "translations" +#~ msgstr "Переводы" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index 0ff5067a0f3bf345a3e92bad6048195648f117ae..7efa491adc99be4bb892631589fb8190fd666a45 100644 GIT binary patch delta 7751 zcmXxp4Sde!9>?+PMr>?mW477sd1((qv*f8M4@-Jrk`gtt!-OauO5D*Z%tQ0XNutR* zm4=*EhjS=;^+>66G^LJuRZ}>x3Wp;()%kpP{kmV>=Y9RI>;JzVe%JN?-#hihv(3)b zHVc0d*J8Efvoqve3N}VNH=>zyb;+uA?qs%e@puZ=-YUnNjU9-uGH*uRau+7yW0;5= zu|56`yWj!L#Q!4Kg|Kn+ln>s$i9g6i-C)OFvY+9UFuqv$## zx407QfzvSpYpneREFeCJnuyESePQP=q0ouA6g%TIvkEo93#bXah8^(`w!-f%K8umW zQS^QTcEn;V$3gfkDg!4l4u8eD7~9pk9L9IcC|rc~NcP=MRLb8$-EahB@g!=XW|uk_ zgHfmnrC>WOL``&%wU4#>spdRvP5W}xgw|p>ox&ChWW^n@3(n(Z#4Wn{RQ5u(SD*%7 zg~~uJYA@?h3-}OYumLsUqo@JTS=_9tPYCiceLFcw#%Ch(laJFq?RKGX!lUs&NM)I{QX z`iW$swx9@=>SAOpcP(mS^RNh)pgP=x8t7xx79K@q@CVcu{txxoMsSnb^N?hOT_FVx zRE|0ecjEwDiJH(s)JncVJ>O?hTaa?Oug^ktSY+{)sQ!jyE{?%oSc%W#F4XlCsEpV1 ze-{NN=N6z&@vEp*?!vx!7MZE*LFFZQCu${2Q4`vVT;duq0i(%(9OhsLyaLnldekAD zjyf}oF;>t2athaD4UWMda0CwR<0rHZb*eYw5PS)>!gHuhgqWo=6@kiBB9bJRhnjF1 z>WnP5_G;9GH(^+Z>T?R+uvI_5m%Xqf@i0ur33w&WM-99iwWsfx2T?2j63MPRja@Of zKQAR5jm@zNHK7%#v$3N;`PTq%TgBIyN_-O4VGN^o!A$d7RO;_BS7B%3S1}Dg#&kS` zN^yL#&qyciL|kB&Un$UNs)BZCiV%q_JC0$VU zMW`(qio8VKaJ&`6sLUKj9m;lB`Sw0x3OaNZr~&Rq?d3vLidLc~RD*i#wqXkHLapd9 zYQQt7_rwL%gfF?;_fw3VOLrscFfKy%vmUjD;ms7(;j5^vIEXqdKbq%IEBg&~Xxb0- zdpisV5#NtGtgoRuY)7RANI1IIy7sr zCBB6^H1DH2ZhnnFwf#`-m8c0;p$6KBnYh<%#2n&QLw$W$Od=kRn!pqckEHMz1+wNo zNB(i?*ZP%BLG5J~YD;QR9c)LXct7^Qb7t-^zrx$F3-ym;E^f8@PqAqs*ZJR)e%FzI zRoqR5I(isD96(eiPDe^8Jm%Y~t`j3jHWNhgxwXw!ssqz5Xv|VY^Yj!=9)Nlwu?C0!*lnc{Lq!8>&yJ#2egfk#akPIi<)da?g382H zwmiHHr{U#TgX-uLR7zWn^LyP5I}wk@c)SPIz6fajB(#_*UBhl4^C z6{UChJ--7}i0?<$ufYV|gdOnjsIB?P>c2q^bOAM?*fO7)D^b^t#|=0OwT10T^TB4E zoAKm7k&38^zT+IT59-1jEuMv`#EVf|@;qkaK2*woM4j^UsOvJy{h1kHjzx_#$E-%( zzqvf@8$Ps#W2hB}{@@Q$Th!rSrRx3~fvfOD|~ccE6=Vv;uj?sZp zzbrl;wu+Oefqt=u=*fO%9Z>bD7GG-d6&7D(mZCZyiyElH;u)xw&okFp{WjFZ!n-K+ zqwqZzVP1vrs0@|bX{f!Ojp}$AYC@|}1J;_`t^PICbqB1z0X2cIExuqzOlf**!Y-bI zI?BavcsWMmA5b05FlVE#n~!>zS6Tg9tFJ+A!4}kn_gMQO^9btxMvG5joSy%mtf9?a zzJo;6!1?B7W^Z!rwar&3qH}SRJtT|DYE3v&A{n{f}1x^5>!(HQk>7wNz;D{(^ery@eX!IL6{h zjKXGjdt=NLRK{|#3l77jcrWUHH^Wc76&4aEpz4R=Ff5%x{s&XoKt*?KM6Doxrq4tl zRD3h4eJ;je9cn_mP#Jg+HSvR}SL->{K=JqZ>r+qz7T`pjgS>RzkuU{a*!Nz)(yLLA z<4xEat5NMwp$6P!zJyBcZd3-2p{{E^%U>6ZYEMNiU?^US)2)3y#u0}%Q_%Cd8}vOnlIz!)W3PPY1q?==nJK9I*P-rz1~uVrikqH)Yk1#0 zjQaWg7UQw`1HOYKRLAM4js{zODQd58wfaibp{%xe9VQY#k6P$ntN$3on%P$rG^1mv z8UKX(8O@#RADe5ig!nbG1gv7DS%ymKG*kyq zU{~C3erfg5^Zk3`Vl1QmYSb2OLf!W+Hf0z!&N0*(Icsr3m$1SNho@2~prQ&j&<=AyY9(Kw zCf0nRHy>3$(wt+iH{U>I?mJY*;vV*AY5*#pX+G@@yAQ150$$Apxt0E3pHD@-n(MG1 zo;JHZV(q95)nPW)qf-1SCgV|yLy!7D+1jGo$DtNF1)HA#dDc+bR6*)dPr(ydjPF@} zK5T>j9KJUJ_)-JKPuTqx0ON$9zu2a6E^Mb zV!yIN)D5?wPWMBov##2vA19+Gz6wX;2F%0L%gDcG-g&v7 zQ88+OX{Z%GfH}Af)p5PGzlXhv51~40x5D4w7qtZysD9U@+F!T!6BZ{v&Nb8zoJ>J0 z*n(a0ZPaN#VnD75#x$~nEU9hvf93?}cK`qY delta 7793 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 N?)CD@50`8X`#-a0>f-\n" "Language-Team: BRITISH ENGLISH \n" @@ -27,8 +27,7 @@ msgstr "处于活动状态" #: core/abstract.py:20 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,则没有必要权限的用户无法查看此对象" #: core/abstract.py:22 core/choices.py:18 @@ -47,22 +46,22 @@ msgstr "改装" msgid "when the object was last modified" msgstr "对象最后一次编辑的时间" -#: core/admin.py:36 core/admin.py:49 +#: core/admin.py:37 core/admin.py:52 #, python-format msgid "activate selected %(verbose_name_plural)s" msgstr "激活选定的 %(verbose_name_plural)s" -#: core/admin.py:40 core/admin.py:54 +#: core/admin.py:42 core/admin.py:57 #, python-format msgid "deactivate selected %(verbose_name_plural)s" msgstr "停用选定的 %(verbose_name_plural)s" -#: core/admin.py:63 core/graphene/object_types.py:390 -#: core/graphene/object_types.py:397 core/models.py:148 core/models.py:156 +#: core/admin.py:66 core/graphene/object_types.py:391 +#: core/graphene/object_types.py:398 core/models.py:148 core/models.py:156 msgid "attribute value" msgstr "属性值" -#: core/admin.py:64 core/graphene/object_types.py:35 core/models.py:157 +#: core/admin.py:67 core/graphene/object_types.py:35 core/models.py:157 msgid "attribute values" msgstr "属性值" @@ -75,19 +74,19 @@ msgstr "名称" msgid "image" msgstr "图片" -#: core/admin.py:155 core/graphene/object_types.py:343 +#: core/admin.py:155 core/graphene/object_types.py:344 msgid "images" msgstr "图片" -#: core/admin.py:162 core/models.py:1125 +#: core/admin.py:162 core/models.py:1139 msgid "stock" msgstr "库存" -#: core/admin.py:163 core/graphene/object_types.py:444 +#: core/admin.py:163 core/graphene/object_types.py:445 msgid "stocks" msgstr "股票" -#: core/admin.py:194 core/graphene/object_types.py:347 +#: core/admin.py:192 core/graphene/object_types.py:348 #: core/templates/digital_order_created_email.html:109 #: core/templates/digital_order_delivered_email.html:109 #: core/templates/shipped_order_created_email.html:95 @@ -95,35 +94,31 @@ msgstr "股票" msgid "price" msgstr "价格" -#: core/admin.py:199 +#: core/admin.py:197 msgid "rating" msgstr "产品评级" -#: core/admin.py:203 +#: core/admin.py:201 msgid "basic info" msgstr "基本信息" -#: core/admin.py:217 +#: core/admin.py:215 msgid "important dates" msgstr "重要日期" -#: core/admin.py:218 -msgid "translations" -msgstr "翻译" - -#: core/admin.py:256 core/models.py:831 +#: core/admin.py:253 core/models.py:846 msgid "order product" msgstr "订购产品" -#: core/admin.py:257 core/graphene/object_types.py:269 core/models.py:832 +#: core/admin.py:254 core/graphene/object_types.py:270 core/models.py:847 msgid "order products" msgstr "订购产品" -#: core/admin.py:276 +#: core/admin.py:273 msgid "is business" msgstr "Is Business" -#: core/admin.py:399 +#: core/admin.py:396 msgid "config" msgstr "配置" @@ -187,35 +182,37 @@ msgstr "" "仅使用密钥从缓存中读取允许的数据。\n" "应用密钥、数据和带验证的超时,将数据写入缓存。" -#: core/docs/drf/views.py:31 +#: core/docs/drf/views.py:32 msgid "get a list of supported languages" msgstr "获取支持的语言列表" -#: core/docs/drf/views.py:40 +#: core/docs/drf/views.py:41 msgid "get application's exposable parameters" msgstr "获取应用程序的可公开参数" -#: core/docs/drf/views.py:47 +#: core/docs/drf/views.py:48 msgid "send a message to the support team" msgstr "向支持团队发送信息" -#: core/docs/drf/views.py:58 core/graphene/mutations.py:47 +#: core/docs/drf/views.py:59 core/graphene/mutations.py:47 msgid "request a CORSed URL" msgstr "请求 CORSed URL。只允许使用 https。" -#: core/docs/drf/views.py:84 +#: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "全局搜索端点可跨项目表格进行查询" -#: core/docs/drf/views.py:90 +#: core/docs/drf/views.py:91 msgid "purchase an order as a business" msgstr "以企业身份购买订单" -#: core/docs/drf/views.py:97 +#: core/docs/drf/views.py:98 msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订单。" +msgstr "" +"使用提供的带有 `product_uuid` 和 `attributes` 的 `products` 作为企业购买订" +"单。" #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -238,8 +235,7 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "重写保存不可编辑的现有属性组" #: core/docs/drf/viewsets.py:57 -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 "重写现有属性组的某些字段,保存不可编辑的内容" #: core/docs/drf/viewsets.py:64 @@ -287,8 +283,7 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "重写现有属性值,保存不可编辑属性" #: core/docs/drf/viewsets.py:111 -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 "重写现有属性值的某些字段,保存不可编辑的属性值" #: core/docs/drf/viewsets.py:118 @@ -356,235 +351,254 @@ msgid "" "finalizes the order purchase. if `force_balance` is used, the purchase is " "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." -msgstr "完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 \"force_payment\",则启动交易。" +msgstr "" +"完成订单购买。如果使用 \"force_balance\",则使用用户的余额完成购买;如果使用 " +"\"force_payment\",则启动交易。" -#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:215 +#: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" msgstr "无需创建账户即可购买订单" -#: core/docs/drf/viewsets.py:187 +#: core/docs/drf/viewsets.py:186 msgid "finalizes the order purchase for a non-registered user." msgstr "完成非注册用户的订单购买。" -#: core/docs/drf/viewsets.py:196 +#: core/docs/drf/viewsets.py:194 msgid "add product to order" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:197 +#: core/docs/drf/viewsets.py:195 msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 将产品添加到订单中。" -#: core/docs/drf/viewsets.py:202 +#: core/docs/drf/viewsets.py:200 msgid "remove product from order" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:203 +#: core/docs/drf/viewsets.py:201 msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." msgstr "使用提供的 `product_uuid` 和 `attributes` 从订单中删除产品。" -#: core/docs/drf/viewsets.py:211 +#: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" msgstr "列出所有属性(简单视图)" -#: core/docs/drf/viewsets.py:212 +#: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "对于非工作人员用户,只返回他们自己的愿望清单。" -#: core/docs/drf/viewsets.py:216 +#: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" msgstr "检索单个属性(详细视图)" -#: core/docs/drf/viewsets.py:220 +#: core/docs/drf/viewsets.py:218 msgid "create an wishlist" msgstr "创建属性" -#: core/docs/drf/viewsets.py:221 +#: core/docs/drf/viewsets.py:219 msgid "Doesn't work for non-staff users." msgstr "不适用于非工作人员用户。" -#: core/docs/drf/viewsets.py:225 +#: core/docs/drf/viewsets.py:223 msgid "delete an wishlist" msgstr "删除属性" -#: core/docs/drf/viewsets.py:229 +#: core/docs/drf/viewsets.py:227 msgid "rewrite an existing wishlist saving non-editables" msgstr "重写现有属性,保存不可编辑属性" -#: core/docs/drf/viewsets.py:233 +#: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "重写现有属性的某些字段,保存不可编辑的内容" -#: core/docs/drf/viewsets.py:237 +#: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" msgstr "在订单中添加产品" -#: core/docs/drf/viewsets.py:238 +#: core/docs/drf/viewsets.py:236 msgid "adds a product to an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 将产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:243 +#: core/docs/drf/viewsets.py:241 msgid "remove product from wishlist" msgstr "从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:244 +#: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" msgstr "使用提供的 `product_uuid` 从愿望清单中删除产品" -#: core/docs/drf/viewsets.py:249 +#: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" msgstr "将许多产品添加到愿望清单" -#: core/docs/drf/viewsets.py:250 +#: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 将许多产品添加到愿望清单中" -#: core/docs/drf/viewsets.py:255 +#: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" msgstr "从订单中删除产品" -#: core/docs/drf/viewsets.py:256 +#: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" msgstr "使用提供的 `product_uuids` 从愿望清单中删除多个产品" -#: core/docs/drf/viewsets.py:263 +#: core/docs/drf/viewsets.py:261 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " +"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " +"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " +"`true`/`false` for booleans, integers, floats; otherwise treated as " +"string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," +"\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "根据一个或多个属性名/值对进行筛选。 \n" "- 语法**:`attr_name=method-value[;attr2=method2-value2]...`\n" -"- 方法**(如果省略,默认为 `icontains`):iexact`、`exact`、`icontains`、`contains`、`isnull`、`startswith`、`istartswith`、`endswith`、`iendswith`、`regex`、`iregex`、`lt`、`lte`、`gt`、`gte`、`in`。\n" -"- 值键入**:首先尝试使用 JSON(因此可以传递列表/字段),布尔、整数、浮点数使用 `true`/`false`,否则视为字符串。 \n" +"- 方法**(如果省略,默认为 `icontains`):iexact`、`exact`、`icontains`、" +"`contains`、`isnull`、`startswith`、`istartswith`、`endswith`、`iendswith`、" +"`regex`、`iregex`、`lt`、`lte`、`gt`、`gte`、`in`。\n" +"- 值键入**:首先尝试使用 JSON(因此可以传递列表/字段),布尔、整数、浮点数使" +"用 `true`/`false`,否则视为字符串。 \n" "- **Base64**:以 `b64-` 作为前缀,对原始值进行 URL 安全的 base64 编码。 \n" "示例 \n" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\"、\"bluetooth\"]`、\n" "`b64-description=icontains-aGVhdC1jb2xk`." -#: core/docs/drf/viewsets.py:279 +#: core/docs/drf/viewsets.py:277 msgid "list all products (simple view)" msgstr "列出所有产品(简单视图)" -#: core/docs/drf/viewsets.py:284 +#: core/docs/drf/viewsets.py:282 msgid "(exact) Product UUID" msgstr "(产品 UUID" -#: core/docs/drf/viewsets.py:290 +#: core/docs/drf/viewsets.py:288 msgid "(icontains) Product name" msgstr "(图示) 产品名称" -#: core/docs/drf/viewsets.py:296 +#: core/docs/drf/viewsets.py:294 msgid "(list) Category names, case-insensitive" msgstr "(列表) 类别名称,不区分大小写" -#: core/docs/drf/viewsets.py:302 +#: core/docs/drf/viewsets.py:300 msgid "(exact) Category UUID" msgstr "(类别 UUID" -#: core/docs/drf/viewsets.py:308 +#: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" msgstr "(标签名称,不区分大小写" -#: core/docs/drf/viewsets.py:314 +#: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" msgstr "(gte) 最低股价" -#: core/docs/drf/viewsets.py:320 +#: core/docs/drf/viewsets.py:318 msgid "(lte) Maximum stock price" msgstr "(lte) 最高股价" -#: core/docs/drf/viewsets.py:326 +#: core/docs/drf/viewsets.py:324 msgid "(exact) Only active products" msgstr "(准确)只有活性产品" -#: core/docs/drf/viewsets.py:332 +#: core/docs/drf/viewsets.py:330 msgid "(iexact) Brand name" msgstr "(iexact) 品牌名称" -#: core/docs/drf/viewsets.py:344 +#: core/docs/drf/viewsets.py:342 msgid "(gt) Minimum stock quantity" msgstr "(gt) 最低库存量" -#: core/docs/drf/viewsets.py:350 +#: core/docs/drf/viewsets.py:348 msgid "(exact) Product slug" msgstr "(准确) 产品标题" -#: core/docs/drf/viewsets.py:356 +#: core/docs/drf/viewsets.py:354 msgid "(exact) Digital vs. physical" msgstr "(准确)数字与实物" -#: core/docs/drf/viewsets.py:363 +#: core/docs/drf/viewsets.py:361 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、评分、名称、标签、创建、修改、价格、随机" -#: core/docs/drf/viewsets.py:377 +#: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" msgstr "检索单个产品(详细视图)" -#: core/docs/drf/viewsets.py:382 core/docs/drf/viewsets.py:404 -#: core/docs/drf/viewsets.py:419 core/docs/drf/viewsets.py:434 +#: core/docs/drf/viewsets.py:380 core/docs/drf/viewsets.py:402 +#: core/docs/drf/viewsets.py:417 core/docs/drf/viewsets.py:432 msgid "Product UUID or slug" msgstr "产品 UUID 或 Slug" -#: core/docs/drf/viewsets.py:392 +#: core/docs/drf/viewsets.py:390 msgid "create a product" msgstr "创建产品" -#: core/docs/drf/viewsets.py:399 +#: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "重写现有产品,保留不可编辑字段" -#: core/docs/drf/viewsets.py:414 +#: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" msgstr "更新现有产品的某些字段,保留不可编辑的字段" -#: core/docs/drf/viewsets.py:429 +#: core/docs/drf/viewsets.py:427 msgid "delete a product" msgstr "删除产品" -#: core/docs/drf/viewsets.py:447 +#: core/docs/drf/viewsets.py:445 msgid "list all addresses" msgstr "列出所有地址" -#: core/docs/drf/viewsets.py:454 +#: core/docs/drf/viewsets.py:452 msgid "retrieve a single address" msgstr "检索单个地址" -#: core/docs/drf/viewsets.py:461 +#: core/docs/drf/viewsets.py:459 msgid "create a new address" msgstr "创建新地址" -#: core/docs/drf/viewsets.py:469 +#: core/docs/drf/viewsets.py:467 msgid "delete an address" msgstr "删除地址" -#: core/docs/drf/viewsets.py:476 +#: core/docs/drf/viewsets.py:474 msgid "update an entire address" msgstr "更新整个地址" -#: core/docs/drf/viewsets.py:484 +#: core/docs/drf/viewsets.py:482 msgid "partially update an address" msgstr "部分更新地址" -#: core/docs/drf/viewsets.py:492 +#: core/docs/drf/viewsets.py:490 msgid "autocomplete address suggestions" msgstr "自动完成地址输入" +#: core/docs/drf/viewsets.py:495 +msgid "raw data query string, please append with data from geo-IP endpoint" +msgstr "" + +#: core/docs/drf/viewsets.py:501 +msgid "limit the results amount, 1 < limit < 10, default: 5" +msgstr "" + #: core/elasticsearch/__init__.py:40 msgid "no search term provided." msgstr "未提供搜索条件。" @@ -618,7 +632,7 @@ msgid "add a product to the order" msgstr "在订单中添加产品" #: core/graphene/mutations.py:93 core/graphene/mutations.py:119 -#: core/graphene/mutations.py:210 +#: core/graphene/mutations.py:221 #, python-brace-format msgid "order {order_uuid} not found" msgstr "未找到订单 {order_uuid}" @@ -635,65 +649,66 @@ msgstr "从订单中删除所有产品" msgid "buy an order" msgstr "购买订单" -#: core/graphene/mutations.py:185 +#: core/graphene/mutations.py:194 msgid "please provide either order_uuid or order_hr_id - mutually exclusive" msgstr "请提供 order_uuid 或 order_hr_id(互斥)!" -#: core/graphene/mutations.py:207 core/graphene/mutations.py:364 -#: core/graphene/mutations.py:398 core/viewsets.py:261 +#: core/graphene/mutations.py:218 core/graphene/mutations.py:388 +#: core/graphene/mutations.py:422 core/viewsets.py:261 msgid "wrong type came from order.buy() method: {type(instance)!s}" msgstr "order.buy() 方法中的类型有误:{type(instance)!s}" -#: core/graphene/mutations.py:248 +#: core/graphene/mutations.py:272 msgid "add a product to the wishlist" msgstr "在订单中添加产品" -#: core/graphene/mutations.py:270 core/graphene/mutations.py:297 -#: core/graphene/mutations.py:324 core/graphene/mutations.py:367 +#: core/graphene/mutations.py:294 core/graphene/mutations.py:321 +#: core/graphene/mutations.py:348 core/graphene/mutations.py:391 #, python-brace-format msgid "wishlist {wishlist_uuid} not found" msgstr "未找到愿望清单 {wishlist_uuid}" -#: core/graphene/mutations.py:275 +#: core/graphene/mutations.py:299 msgid "remove a product from the wishlist" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:302 +#: core/graphene/mutations.py:326 msgid "remove all products from the wishlist" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:329 +#: core/graphene/mutations.py:353 msgid "buy all products from the wishlist" msgstr "从订单中删除产品" -#: core/graphene/mutations.py:372 +#: core/graphene/mutations.py:396 msgid "buy a product" msgstr "购买订单" -#: core/graphene/mutations.py:378 +#: core/graphene/mutations.py:402 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" -#: core/graphene/mutations.py:463 +#: core/graphene/mutations.py:485 msgid "original address string provided by the user" msgstr "用户提供的原始地址字符串" -#: core/graphene/mutations.py:501 +#: core/graphene/mutations.py:519 +#, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}不存在" -#: core/graphene/mutations.py:514 +#: core/graphene/mutations.py:532 msgid "limit must be between 1 and 10" msgstr "限值必须在 1 和 10 之间" -#: core/graphene/mutations.py:558 +#: core/graphene/mutations.py:576 msgid "elasticsearch - works like a charm" msgstr "ElasticSearch - 工作起来得心应手" -#: core/graphene/object_types.py:42 core/graphene/object_types.py:252 -#: core/graphene/object_types.py:293 core/models.py:125 core/models.py:480 +#: core/graphene/object_types.py:42 core/graphene/object_types.py:253 +#: core/graphene/object_types.py:294 core/models.py:125 core/models.py:488 msgid "attributes" msgstr "属性" @@ -706,11 +721,11 @@ msgid "groups of attributes" msgstr "属性组" #: core/graphene/object_types.py:75 core/graphene/object_types.py:104 -#: core/graphene/object_types.py:131 core/models.py:89 core/models.py:211 +#: core/graphene/object_types.py:132 core/models.py:89 core/models.py:219 msgid "categories" msgstr "类别" -#: core/graphene/object_types.py:82 core/models.py:258 +#: core/graphene/object_types.py:82 core/models.py:266 msgid "brands" msgstr "品牌" @@ -718,7 +733,7 @@ msgstr "品牌" msgid "category image url" msgstr "类别" -#: core/graphene/object_types.py:107 core/graphene/object_types.py:202 +#: core/graphene/object_types.py:107 core/graphene/object_types.py:203 #: core/models.py:175 msgid "markup percentage" msgstr "加价百分比" @@ -728,98 +743,97 @@ msgid "which attributes and values can be used for filtering this category." msgstr "哪些属性和值可用于筛选该类别。" #: core/graphene/object_types.py:114 -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 "该类别产品的最低和最高价格(如有)。" -#: core/graphene/object_types.py:209 core/models.py:395 +#: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" msgstr "供应商" -#: core/graphene/object_types.py:213 +#: core/graphene/object_types.py:214 msgid "Latitude (Y coordinate)" msgstr "纬度(Y 坐标)" -#: core/graphene/object_types.py:214 +#: core/graphene/object_types.py:215 msgid "Longitude (X coordinate)" msgstr "经度(X 坐标)" -#: core/graphene/object_types.py:240 +#: core/graphene/object_types.py:241 msgid "comment" msgstr "如何" -#: core/graphene/object_types.py:241 +#: core/graphene/object_types.py:242 msgid "rating value from 1 to 10, inclusive, or 0 if not set." msgstr "评级值从 1 到 10(包括 10),如果未设置,则为 0。" -#: core/graphene/object_types.py:248 +#: core/graphene/object_types.py:249 msgid "represents feedback from a user." msgstr "代表用户的反馈意见。" -#: core/graphene/object_types.py:253 core/graphene/object_types.py:294 -#: core/models.py:474 +#: core/graphene/object_types.py:254 core/graphene/object_types.py:295 +#: core/models.py:482 msgid "notifications" msgstr "通知" -#: core/graphene/object_types.py:254 +#: core/graphene/object_types.py:255 msgid "download url for this order product if applicable" msgstr "此订单产品的下载网址(如适用" -#: core/graphene/object_types.py:283 +#: core/graphene/object_types.py:284 msgid "a list of order products in this order" msgstr "该订单中的订单产品列表" -#: core/graphene/object_types.py:285 core/models.py:444 +#: core/graphene/object_types.py:286 core/models.py:452 msgid "billing address" msgstr "账单地址" -#: core/graphene/object_types.py:288 +#: core/graphene/object_types.py:289 msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "此订单的送货地址,如果与账单地址相同或不适用,请留空" -#: core/graphene/object_types.py:290 +#: core/graphene/object_types.py:291 msgid "total price of this order" msgstr "订单总价" -#: core/graphene/object_types.py:291 +#: core/graphene/object_types.py:292 msgid "total quantity of products in order" msgstr "订单中产品的总数量" -#: core/graphene/object_types.py:292 +#: core/graphene/object_types.py:293 msgid "are all products in the order digital" msgstr "订单中的所有产品都是数字产品吗?" -#: core/graphene/object_types.py:312 core/models.py:508 +#: core/graphene/object_types.py:313 core/models.py:516 msgid "orders" msgstr "订单" -#: core/graphene/object_types.py:328 +#: core/graphene/object_types.py:329 msgid "image url" msgstr "图片 URL" -#: core/graphene/object_types.py:335 +#: core/graphene/object_types.py:336 msgid "product's images" msgstr "产品图片" -#: core/graphene/object_types.py:342 core/models.py:210 core/models.py:268 +#: core/graphene/object_types.py:343 core/models.py:218 core/models.py:276 msgid "category" msgstr "类别" -#: core/graphene/object_types.py:344 core/models.py:431 +#: core/graphene/object_types.py:345 core/models.py:439 msgid "feedbacks" msgstr "反馈意见" -#: core/graphene/object_types.py:345 core/models.py:257 core/models.py:276 +#: core/graphene/object_types.py:346 core/models.py:265 core/models.py:284 msgid "brand" msgstr "品牌" -#: core/graphene/object_types.py:346 core/models.py:79 +#: core/graphene/object_types.py:347 core/models.py:79 msgid "attribute groups" msgstr "属性组" -#: core/graphene/object_types.py:348 +#: core/graphene/object_types.py:349 #: core/templates/digital_order_created_email.html:108 #: core/templates/digital_order_delivered_email.html:108 #: core/templates/shipped_order_created_email.html:94 @@ -827,31 +841,31 @@ msgstr "属性组" msgid "quantity" msgstr "数量" -#: core/graphene/object_types.py:349 +#: core/graphene/object_types.py:350 msgid "number of feedbacks" msgstr "反馈数量" -#: core/graphene/object_types.py:367 core/models.py:320 +#: core/graphene/object_types.py:368 core/models.py:328 msgid "products" msgstr "产品" -#: core/graphene/object_types.py:415 +#: core/graphene/object_types.py:416 msgid "promocodes" msgstr "促销代码" -#: core/graphene/object_types.py:425 +#: core/graphene/object_types.py:426 msgid "products on sale" msgstr "销售产品" -#: core/graphene/object_types.py:432 core/models.py:1066 +#: core/graphene/object_types.py:433 core/models.py:1080 msgid "promotions" msgstr "促销活动" -#: core/graphene/object_types.py:436 core/models.py:394 +#: core/graphene/object_types.py:437 core/models.py:402 msgid "vendor" msgstr "供应商" -#: core/graphene/object_types.py:437 core/models.py:319 +#: core/graphene/object_types.py:438 core/models.py:327 #: core/templates/digital_order_created_email.html:107 #: core/templates/digital_order_delivered_email.html:107 #: core/templates/shipped_order_created_email.html:93 @@ -859,76 +873,76 @@ msgstr "供应商" msgid "product" msgstr "产品" -#: core/graphene/object_types.py:448 core/models.py:1136 +#: core/graphene/object_types.py:449 core/models.py:1150 msgid "wishlisted products" msgstr "心愿单上的产品" -#: core/graphene/object_types.py:454 core/models.py:1153 +#: core/graphene/object_types.py:455 core/models.py:1167 msgid "wishlists" msgstr "愿望清单" -#: core/graphene/object_types.py:458 +#: core/graphene/object_types.py:459 msgid "project name" msgstr "项目名称" -#: core/graphene/object_types.py:459 +#: core/graphene/object_types.py:460 msgid "company email" msgstr "公司电子邮件" -#: core/graphene/object_types.py:460 +#: core/graphene/object_types.py:461 msgid "company name" msgstr "公司名称" -#: core/graphene/object_types.py:461 +#: core/graphene/object_types.py:462 msgid "company address" msgstr "公司地址" -#: core/graphene/object_types.py:462 +#: core/graphene/object_types.py:463 msgid "company phone number" msgstr "公司电话号码" -#: core/graphene/object_types.py:463 +#: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "电子邮件来自\",有时必须使用它来代替主机用户值" -#: core/graphene/object_types.py:464 +#: core/graphene/object_types.py:465 msgid "email host user" msgstr "电子邮件主机用户" -#: core/graphene/object_types.py:465 +#: core/graphene/object_types.py:466 msgid "maximum amount for payment" msgstr "最高付款额" -#: core/graphene/object_types.py:466 +#: core/graphene/object_types.py:467 msgid "minimum amount for payment" msgstr "最低付款额" -#: core/graphene/object_types.py:469 +#: core/graphene/object_types.py:470 msgid "company configuration" msgstr "配置" -#: core/graphene/object_types.py:473 +#: core/graphene/object_types.py:474 msgid "language code" msgstr "语言代码" -#: core/graphene/object_types.py:474 +#: core/graphene/object_types.py:475 msgid "language name" msgstr "语言名称" -#: core/graphene/object_types.py:475 +#: core/graphene/object_types.py:476 msgid "language flag, if exists :)" msgstr "语言标志(如果有):)" -#: core/graphene/object_types.py:478 +#: core/graphene/object_types.py:479 msgid "supported languages" msgstr "获取支持的语言列表" -#: core/graphene/object_types.py:506 core/graphene/object_types.py:507 -#: core/graphene/object_types.py:508 +#: core/graphene/object_types.py:507 core/graphene/object_types.py:508 +#: core/graphene/object_types.py:509 msgid "products search results" msgstr "产品搜索结果" -#: core/graphene/object_types.py:509 +#: core/graphene/object_types.py:510 msgid "posts search results" msgstr "产品搜索结果" @@ -1009,8 +1023,7 @@ msgstr "该值的属性" msgid "the specific product associated with this attribute's value" msgstr "与该属性值相关的特定产品" -#: core/models.py:144 core/models.py:808 core/models.py:922 -#: core/models.py:1092 +#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 msgid "associated product" msgstr "相关产品" @@ -1054,636 +1067,636 @@ msgstr "为该类别添加详细说明" msgid "category description" msgstr "类别说明" -#: core/models.py:220 +#: core/models.py:228 msgid "name of this brand" msgstr "品牌名称" -#: core/models.py:221 +#: core/models.py:229 msgid "brand name" msgstr "品牌名称" -#: core/models.py:228 +#: core/models.py:236 msgid "upload a logo representing this brand" msgstr "上传代表该品牌的徽标" -#: core/models.py:230 +#: core/models.py:238 msgid "brand small image" msgstr "品牌小形象" -#: core/models.py:236 +#: core/models.py:244 msgid "upload a big logo representing this brand" msgstr "上传代表该品牌的大徽标" -#: core/models.py:238 +#: core/models.py:246 msgid "brand big image" msgstr "品牌大形象" -#: core/models.py:243 +#: core/models.py:251 msgid "add a detailed description of the brand" msgstr "添加品牌的详细描述" -#: core/models.py:244 +#: core/models.py:252 msgid "brand description" msgstr "品牌描述" -#: core/models.py:249 +#: core/models.py:257 msgid "optional categories that this brand is associated with" msgstr "与该品牌相关的可选类别" -#: core/models.py:250 +#: core/models.py:258 msgid "associated categories" msgstr "类别" -#: core/models.py:267 +#: core/models.py:275 msgid "category this product belongs to" msgstr "该产品所属类别" -#: core/models.py:275 +#: core/models.py:283 msgid "optionally associate this product with a brand" msgstr "可选择将该产品与某个品牌联系起来" -#: core/models.py:281 +#: core/models.py:289 msgid "tags that help describe or group this product" msgstr "有助于描述或归类该产品的标签" -#: core/models.py:282 core/models.py:896 +#: core/models.py:290 core/models.py:911 msgid "product tags" msgstr "产品标签" -#: core/models.py:286 +#: core/models.py:294 msgid "indicates whether this product is digitally delivered" msgstr "表示该产品是否以数字方式交付" -#: core/models.py:287 +#: core/models.py:295 msgid "is product digital" msgstr "产品是否数字化" -#: core/models.py:293 +#: core/models.py:301 msgid "provide a clear identifying name for the product" msgstr "为产品提供一个明确的标识名称" -#: core/models.py:294 +#: core/models.py:302 msgid "product name" msgstr "产品名称" -#: core/models.py:299 core/models.py:1054 +#: core/models.py:307 core/models.py:1068 msgid "add a detailed description of the product" msgstr "添加产品的详细描述" -#: core/models.py:300 +#: core/models.py:308 msgid "product description" msgstr "产品说明" -#: core/models.py:307 +#: core/models.py:315 msgid "part number for this product" msgstr "该产品的零件编号" -#: core/models.py:308 +#: core/models.py:316 msgid "part number" msgstr "部件编号" -#: core/models.py:372 +#: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "存储供应商应用程序接口通信所需的凭证和端点" -#: core/models.py:373 +#: core/models.py:381 msgid "authentication info" msgstr "认证信息" -#: core/models.py:378 +#: core/models.py:386 msgid "define the markup for products retrieved from this vendor" msgstr "定义从该供应商获取的产品的标记" -#: core/models.py:379 +#: core/models.py:387 msgid "vendor markup percentage" msgstr "供应商加价百分比" -#: core/models.py:383 +#: core/models.py:391 msgid "name of this vendor" msgstr "供应商名称" -#: core/models.py:384 +#: core/models.py:392 msgid "vendor name" msgstr "供应商名称" -#: core/models.py:407 +#: core/models.py:415 msgid "user-provided comments about their experience with the product" msgstr "用户提供的产品使用体验评论" -#: core/models.py:408 +#: core/models.py:416 msgid "feedback comments" msgstr "反馈意见" -#: core/models.py:415 -msgid "" -"references the specific product in an order that this feedback is about" +#: core/models.py:423 +msgid "references the specific product in an order that this feedback is about" msgstr "引用该反馈意见涉及的订单中的具体产品" -#: core/models.py:416 +#: core/models.py:424 msgid "related order product" msgstr "相关订购产品" -#: core/models.py:421 +#: core/models.py:429 msgid "user-assigned rating for the product" msgstr "用户对产品的评分" -#: core/models.py:422 +#: core/models.py:430 msgid "product rating" msgstr "产品评级" -#: core/models.py:430 +#: core/models.py:438 msgid "feedback" msgstr "反馈意见" -#: core/models.py:443 +#: core/models.py:451 msgid "the billing address used for this order" msgstr "该订单使用的账单地址" -#: core/models.py:451 +#: core/models.py:459 msgid "optional promo code applied to this order" msgstr "此订单可选择使用促销代码" -#: core/models.py:452 +#: core/models.py:460 msgid "applied promo code" msgstr "应用促销代码" -#: core/models.py:460 +#: core/models.py:468 msgid "the shipping address used for this order" msgstr "该订单使用的送货地址" -#: core/models.py:461 +#: core/models.py:469 msgid "shipping address" msgstr "送货地址" -#: core/models.py:467 +#: core/models.py:475 msgid "current status of the order in its lifecycle" msgstr "订单在其生命周期中的当前状态" -#: core/models.py:468 +#: core/models.py:476 msgid "order status" msgstr "订单状态" -#: core/models.py:473 core/models.py:785 +#: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "向用户显示的通知的 JSON 结构,在管理用户界面中使用表格视图" -#: core/models.py:479 +#: core/models.py:487 msgid "json representation of order attributes for this order" msgstr "该订单属性的 JSON 表示形式" -#: core/models.py:485 +#: core/models.py:493 msgid "the user who placed the order" msgstr "下订单的用户" -#: core/models.py:486 +#: core/models.py:494 msgid "user" msgstr "用户" -#: core/models.py:492 +#: core/models.py:500 msgid "the timestamp when the order was finalized" msgstr "订单确定的时间戳" -#: core/models.py:493 +#: core/models.py:501 msgid "buy time" msgstr "购买时间" -#: core/models.py:500 +#: core/models.py:508 msgid "a human-readable identifier for the order" msgstr "订单的人工可读标识符" -#: core/models.py:501 +#: core/models.py:509 msgid "human readable id" msgstr "人类可读 ID" -#: core/models.py:507 +#: core/models.py:515 msgid "order" msgstr "订购" -#: core/models.py:519 +#: core/models.py:527 msgid "a user must have only one pending order at a time" msgstr "用户每次只能有一个挂单!" -#: core/models.py:543 +#: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" msgstr "您不能向非待处理订单添加产品" -#: core/models.py:548 +#: core/models.py:556 msgid "you cannot add inactive products to order" msgstr "您不能在订单中添加非活动产品" -#: core/models.py:565 +#: core/models.py:573 msgid "you cannot add more products than available in stock" msgstr "添加的产品数量不能超过现有库存" -#: core/models.py:574 core/models.py:591 core/models.py:615 -#: core/models.py:1163 core/models.py:1175 +#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 +#: core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} 不存在:{product_uuid} 不存在" -#: core/models.py:578 core/models.py:599 core/models.py:607 +#: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "您不能从非待处理订单中删除产品" -#: core/models.py:595 +#: core/models.py:603 #, python-brace-format msgid "{name} does not exist with query <{query}>" msgstr "查询 <{query}> 时 {name} 不存在" -#: core/models.py:626 +#: core/models.py:634 msgid "promocode does not exist" msgstr "促销代码不存在" -#: core/models.py:633 +#: core/models.py:643 msgid "you can only buy physical products with shipping address specified" msgstr "您只能购买指定送货地址的实物产品!" -#: core/models.py:652 +#: core/models.py:662 msgid "address does not exist" msgstr "地址不存在" -#: core/models.py:659 core/models.py:700 +#: core/models.py:674 core/models.py:715 msgid "you can not buy at this moment, please try again in a few minutes" msgstr "您现在无法购买,请稍后再试。" -#: core/models.py:662 +#: core/models.py:677 msgid "invalid force value" msgstr "力值无效" -#: core/models.py:667 core/models.py:703 +#: core/models.py:682 core/models.py:718 msgid "you cannot purchase an empty order!" msgstr "您不能购买空单!" -#: core/models.py:682 +#: core/models.py:697 msgid "insufficient funds to complete the order" msgstr "资金不足,无法完成订单" -#: core/models.py:712 +#: core/models.py:727 msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "未经注册不能购买,请提供以下信息:客户姓名、客户电子邮件、客户电话号码" -#: core/models.py:720 +#: core/models.py:735 msgid "invalid payment method" msgstr "付款方式无效" -#: core/models.py:773 +#: core/models.py:788 msgid "the price paid by the customer for this product at purchase time" msgstr "客户购买该产品时支付的价格" -#: core/models.py:774 +#: core/models.py:789 msgid "purchase price at order time" msgstr "订购时的购买价格" -#: core/models.py:779 +#: core/models.py:794 msgid "internal comments for admins about this ordered product" msgstr "管理员对该订购产品的内部评论" -#: core/models.py:780 +#: core/models.py:795 msgid "internal comments" msgstr "内部意见" -#: core/models.py:786 +#: core/models.py:801 msgid "user notifications" msgstr "用户通知" -#: core/models.py:791 +#: core/models.py:806 msgid "json representation of this item's attributes" msgstr "该项属性的 JSON 表示形式" -#: core/models.py:792 +#: core/models.py:807 msgid "ordered product attributes" msgstr "有序的产品属性" -#: core/models.py:797 +#: core/models.py:812 msgid "reference to the parent order that contains this product" msgstr "对包含该产品的父订单的引用" -#: core/models.py:798 +#: core/models.py:813 msgid "parent order" msgstr "父顺序" -#: core/models.py:807 +#: core/models.py:822 msgid "the specific product associated with this order line" msgstr "与该订单项目相关的具体产品" -#: core/models.py:814 +#: core/models.py:829 msgid "quantity of this specific product in the order" msgstr "订单中该特定产品的数量" -#: core/models.py:815 +#: core/models.py:830 msgid "product quantity" msgstr "产品数量" -#: core/models.py:822 +#: core/models.py:837 msgid "current status of this product in the order" msgstr "订单中该产品的当前状态" -#: core/models.py:823 +#: core/models.py:838 msgid "product line status" msgstr "产品系列状态" -#: core/models.py:881 +#: core/models.py:896 msgid "internal tag identifier for the product tag" msgstr "产品标签的内部标签标识符" -#: core/models.py:882 +#: core/models.py:897 msgid "tag name" msgstr "标签名称" -#: core/models.py:886 +#: core/models.py:901 msgid "user-friendly name for the product tag" msgstr "方便用户使用的产品标签名称" -#: core/models.py:887 +#: core/models.py:902 msgid "tag display name" msgstr "标签显示名称" -#: core/models.py:895 +#: core/models.py:910 msgid "product tag" msgstr "产品标签" -#: core/models.py:904 +#: core/models.py:919 msgid "provide alternative text for the image for accessibility" msgstr "为图像提供替代文字,以便于访问" -#: core/models.py:905 +#: core/models.py:920 msgid "image alt text" msgstr "图片 alt 文本" -#: core/models.py:908 +#: core/models.py:923 msgid "upload the image file for this product" msgstr "上传该产品的图片文件" -#: core/models.py:909 core/models.py:934 +#: core/models.py:924 core/models.py:949 msgid "product image" msgstr "产品图片" -#: core/models.py:915 +#: core/models.py:930 msgid "determines the order in which images are displayed" msgstr "确定图像的显示顺序" -#: core/models.py:916 +#: core/models.py:931 msgid "display priority" msgstr "显示优先级" -#: core/models.py:921 +#: core/models.py:936 msgid "the product that this image represents" msgstr "该图片所代表的产品" -#: core/models.py:935 +#: core/models.py:950 msgid "product images" msgstr "产品图片" -#: core/models.py:945 +#: core/models.py:960 msgid "unique code used by a user to redeem a discount" msgstr "用户用于兑换折扣的唯一代码" -#: core/models.py:946 +#: core/models.py:961 msgid "promo code identifier" msgstr "促销代码标识符" -#: core/models.py:953 +#: core/models.py:968 msgid "fixed discount amount applied if percent is not used" msgstr "如果不使用百分比,则使用固定折扣额" -#: core/models.py:954 +#: core/models.py:969 msgid "fixed discount amount" msgstr "固定折扣额" -#: core/models.py:960 +#: core/models.py:975 msgid "percentage discount applied if fixed amount is not used" msgstr "未使用固定金额时适用的折扣百分比" -#: core/models.py:961 +#: core/models.py:976 msgid "percentage discount" msgstr "折扣百分比" -#: core/models.py:966 +#: core/models.py:981 msgid "timestamp when the promocode expires" msgstr "促销代码过期的时间戳" -#: core/models.py:967 +#: core/models.py:982 msgid "end validity time" msgstr "结束有效时间" -#: core/models.py:972 +#: core/models.py:987 msgid "timestamp from which this promocode is valid" msgstr "该促销代码有效的时间戳" -#: core/models.py:973 +#: core/models.py:988 msgid "start validity time" msgstr "开始有效时间" -#: core/models.py:978 +#: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "使用促销代码的时间戳,如果尚未使用,则留空" -#: core/models.py:979 +#: core/models.py:994 msgid "usage timestamp" msgstr "使用时间戳" -#: core/models.py:984 +#: core/models.py:999 msgid "user assigned to this promocode if applicable" msgstr "分配给此促销代码的用户(如适用" -#: core/models.py:985 +#: core/models.py:1000 msgid "assigned user" msgstr "指定用户" -#: core/models.py:992 +#: core/models.py:1007 msgid "promo code" msgstr "促销代码" -#: core/models.py:993 +#: core/models.py:1008 msgid "promo codes" msgstr "促销代码" -#: core/models.py:1000 +#: core/models.py:1015 msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" +msgstr "" +"只能定义一种折扣类型(金额或百分比),而不能同时定义两种类型或两者都不定义。" -#: core/models.py:1016 +#: core/models.py:1030 msgid "promocode already used" msgstr "促销代码已被使用" -#: core/models.py:1030 +#: core/models.py:1044 #, python-brace-format msgid "invalid discount type for promocode {self.uuid}" msgstr "促销代码 {self.uuid} 的折扣类型无效" -#: core/models.py:1042 +#: core/models.py:1056 msgid "percentage discount for the selected products" msgstr "所选产品的折扣百分比" -#: core/models.py:1043 +#: core/models.py:1057 msgid "discount percentage" msgstr "折扣百分比" -#: core/models.py:1048 +#: core/models.py:1062 msgid "provide a unique name for this promotion" msgstr "为该促销活动提供一个独特的名称" -#: core/models.py:1049 +#: core/models.py:1063 msgid "promotion name" msgstr "推广名称" -#: core/models.py:1055 +#: core/models.py:1069 msgid "promotion description" msgstr "促销说明" -#: core/models.py:1060 +#: core/models.py:1074 msgid "select which products are included in this promotion" msgstr "选择促销活动包括哪些产品" -#: core/models.py:1061 +#: core/models.py:1075 msgid "included products" msgstr "包括产品" -#: core/models.py:1065 +#: core/models.py:1079 msgid "promotion" msgstr "促销活动" -#: core/models.py:1080 +#: core/models.py:1094 msgid "the vendor supplying this product stock" msgstr "提供该产品库存的供应商" -#: core/models.py:1081 +#: core/models.py:1095 msgid "associated vendor" msgstr "相关供应商" -#: core/models.py:1085 +#: core/models.py:1099 msgid "final price to the customer after markups" msgstr "加价后给客户的最终价格" -#: core/models.py:1086 +#: core/models.py:1100 msgid "selling price" msgstr "销售价格" -#: core/models.py:1091 +#: core/models.py:1105 msgid "the product associated with this stock entry" msgstr "与该库存条目相关的产品" -#: core/models.py:1099 +#: core/models.py:1113 msgid "the price paid to the vendor for this product" msgstr "为该产品支付给供应商的价格" -#: core/models.py:1100 +#: core/models.py:1114 msgid "vendor purchase price" msgstr "供应商购买价格" -#: core/models.py:1104 +#: core/models.py:1118 msgid "available quantity of the product in stock" msgstr "产品的可用库存量" -#: core/models.py:1105 +#: core/models.py:1119 msgid "quantity in stock" msgstr "库存数量" -#: core/models.py:1109 +#: core/models.py:1123 msgid "vendor-assigned SKU for identifying the product" msgstr "供应商指定的 SKU,用于识别产品" -#: core/models.py:1110 +#: core/models.py:1124 msgid "vendor sku" msgstr "供应商 SKU" -#: core/models.py:1116 +#: core/models.py:1130 msgid "digital file associated with this stock if applicable" msgstr "与该库存相关的数字文件(如适用" -#: core/models.py:1117 +#: core/models.py:1131 msgid "digital file" msgstr "数字文件" -#: core/models.py:1126 +#: core/models.py:1140 msgid "stock entries" msgstr "库存条目" -#: core/models.py:1135 +#: core/models.py:1149 msgid "products that the user has marked as wanted" msgstr "用户标记为想要的产品" -#: core/models.py:1143 +#: core/models.py:1157 msgid "user who owns this wishlist" msgstr "拥有此愿望清单的用户" -#: core/models.py:1144 +#: core/models.py:1158 msgid "wishlist owner" msgstr "心愿单所有者" -#: core/models.py:1152 +#: core/models.py:1166 msgid "wishlist" msgstr "愿望清单" -#: core/models.py:1197 +#: core/models.py:1211 msgid "download" msgstr "下载" -#: core/models.py:1198 +#: core/models.py:1212 msgid "downloads" msgstr "下载" -#: core/models.py:1206 +#: core/models.py:1220 msgid "you can not download a digital asset for a non-finished order" msgstr "您无法下载未完成订单的数字资产" -#: core/models.py:1218 +#: core/models.py:1232 msgid "documentary" msgstr "纪录片" -#: core/models.py:1219 +#: core/models.py:1233 msgid "documentaries" msgstr "纪录片" -#: core/models.py:1229 +#: core/models.py:1243 msgid "unresolved" msgstr "未解决" -#: core/models.py:1233 +#: core/models.py:1249 msgid "street" msgstr "街道" -#: core/models.py:1234 +#: core/models.py:1250 msgid "district" msgstr "地区" -#: core/models.py:1235 +#: core/models.py:1251 msgid "city" msgstr "城市" -#: core/models.py:1236 +#: core/models.py:1252 msgid "region" msgstr "地区" -#: core/models.py:1237 +#: core/models.py:1253 msgid "postal code" msgstr "邮政编码" -#: core/models.py:1238 +#: core/models.py:1254 msgid "country" msgstr "国家" -#: core/models.py:1245 +#: core/models.py:1257 msgid "geolocation point: (longitude, latitude)" msgstr "地理位置点(经度、纬度)" -#: core/models.py:1251 +#: core/models.py:1260 msgid "full JSON response from geocoder for this address" msgstr "地理编码器对此地址的完整 JSON 响应" -#: core/models.py:1257 +#: core/models.py:1262 msgid "stored JSON response from the geocoding service" msgstr "存储的来自地理编码服务的 JSON 响应" -#: core/models.py:1270 +#: core/models.py:1269 msgid "address" msgstr "地址" -#: core/models.py:1271 +#: core/models.py:1270 msgid "addresses" msgstr "地址" @@ -1752,9 +1765,11 @@ msgstr "您好 %(order.user.first_name)s、" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we" -" have taken your order into work. below are the details of your order:" -msgstr "感谢您的订单 #%(order.pk)s!我们很高兴地通知您,我们已将您的订单付诸实施。以下是您的订单详情:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we " +"have taken your order into work. below are the details of your order:" +msgstr "" +"感谢您的订单 #%(order.pk)s!我们很高兴地通知您,我们已将您的订单付诸实施。以" +"下是您的订单详情:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1777,7 +1792,8 @@ msgstr "总价" msgid "" "if you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." -msgstr "如果您有任何问题,请随时通过 %(config.EMAIL_HOST_USER)s 联系我们的支持人员。" +msgstr "" +"如果您有任何问题,请随时通过 %(config.EMAIL_HOST_USER)s 联系我们的支持人员。" #: core/templates/digital_order_created_email.html:130 #, python-format @@ -1830,8 +1846,8 @@ msgstr "钥匙" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are" -" the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are " +"the details of your order:" msgstr "感谢您的订购!我们很高兴确认您的购买。以下是您的订单详情:" #: core/templates/shipped_order_created_email.html:109 @@ -1887,7 +1903,7 @@ msgstr "{config.PROJECT_NAME}(项目名称| 已交付订单" msgid "you do not have permission to perform this action." msgstr "您没有执行此操作的权限。" -#: core/utils/nominatim.py:13 +#: core/utils/nominatim.py:10 msgid "NOMINATIM_URL must be configured." msgstr "必须配置 NOMINATIM_URL 参数!" @@ -1908,7 +1924,10 @@ msgstr "您只能下载一次数字资产" msgid "favicon not found" msgstr "未找到 favicon" -#: core/viewsets.py:496 +#: core/viewsets.py:497 #, python-brace-format msgid "Geocoding error: {e}" msgstr "地理编码错误:{e}" + +#~ msgid "translations" +#~ msgstr "翻译" diff --git a/vibes_auth/graphene/mutations.py b/vibes_auth/graphene/mutations.py index ede7e62d..28750979 100644 --- a/vibes_auth/graphene/mutations.py +++ b/vibes_auth/graphene/mutations.py @@ -1,6 +1,7 @@ import logging from hmac import compare_digest +from django.contrib.auth.password_validation import validate_password from django.contrib.auth.tokens import PasswordResetTokenGenerator from django.core.exceptions import BadRequest, PermissionDenied from django.db import IntegrityError @@ -56,6 +57,9 @@ class CreateUser(BaseMutation): **kwargs, ): try: + validate_password(password) + if compare_digest(password.lower(), email.lower()): + raise BadRequest(_("password too weak")) if compare_digest(password, confirm_password): User.objects.create_user( email=email, @@ -73,7 +77,7 @@ class CreateUser(BaseMutation): except IntegrityError: return CreateUser(success=True) except Exception as e: - raise BadRequest(str(e)) + raise BadRequest(str(e)) from e class UpdateUser(BaseMutation): @@ -119,6 +123,9 @@ class UpdateUser(BaseMutation): password = kwargs.get("password", "") confirm_password = kwargs.get("confirm_password", "") + if compare_digest(password.lower(), email.lower()): + raise BadRequest(_("password too weak")) + if not compare_digest(password, "") and compare_digest(password, confirm_password): user.set_password(password) user.save() diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo index e4c42f94296557e04c7146778d1c5706c665c1fb..1f72d12b2653ce6673c67fa23bdfebd64f0c7746 100644 GIT binary patch delta 1790 zcmYk+S!_&E9LMp0o6d}Ct3$PDt20W~)}lo-x@)adTPfA_r9omzQx8=SG-FMO&@iY< zJXjNAi;|GwL1TH7dXOMI5m6+TXh?0}-^>svbMEJyJ9p0cpZ_^`c2%A62VM?}Ic$_V zYC83Ov{?XeIk-@6xXi}kO&p1@Fctgt3qL;+r_e9MVYm^Ku?-9G45r}=bmMnS#Qw2n zNt!B^Mt^SP;&}Ao09=huY)0m^&8R?jM7)Fp=|9Cm_zpezD{?=BK@;dtLan6)`B-J7 zzYv{TY7GtjupYItE!c|f*nr7#W`(#36?rE%Vi#(H$?;}1trVHt{HXgiSc)qn_fKIA z{fnq^uHtCsx4Sg7lDDW7_aUh<52F-eK57LUP#I}KJ>QC2c^fLlCnMg$6#CClfqgfj6*Rnjz$g*AJ!rtJIF-=oIvgAbk6Td#T!`GigG1?eV;1(HGUDbTVzLxmk6Fn1 zvI95@tqPE@Vu5jhdhjmC1P0W$W z<20TAd9gk@;MLpqEh?>brv#Nz5?^3GEvW^7z0>~x6z9!q(K1{NPV%A zh6ZXw&XqmKvG@_6W9q1IfW4@cx_JdEunfJp6Qhts{ws@u-Hs&3RQhGXua3f41zbq2 z2>P69QPsg3Xa3q{^p{h8)Vb6e>OyKB^>3L$V+C~qRlB4uS5YFgIF$mbUW!@j{8y9| zm8#$;=MY~ht;$e8{4VPdsStc7cTYp+rOIZ%CF?X9thFvZMT+_gt%;ofQMp-JM4=np}SX;^L=3 delta 1898 zcmYk+e{9Tm9LMqZE$!XPbX{vLZhBuoO11OrD7w<>TC_@at97O_S?ZECbVHROa$Dy# z(fRAxvOlaO@J;N& z*?1EDcptMcBg5=<9ECX=s)%3+H_EXXYcUf$(2F~fF|8Xlk!Z^E_y+C2F&m#_05j=K z_ov`6oR3;dJ@T{VsrG90YN;Uty|@mwvafLm#_$s?7;09AU8tE4VjKRB8ldtuGeTR2 z%)y#b_d{5L?Wz0ym`3{?s-FRz!1#8JKr{XqmExhiO=@f^&c!O!3cf&PWEblBJ*buU zpi+Dy|l6NWk61lsE-Sc~JFWQT3oNxKUt;t=vjXhGbLjmYBcDlW!6h z{Om_A^Y9j~z|o|^VSL+6pws?s%0W~|50LX^W#h>THsE#KhWZ?v_ym;N^;m@m(7`+C zK@$64QR-io_ftU$dMcxTrk7=CxH4*WbduNaX^bxL&S?FRw&qz%)%u#K4b&j@Wzn!J zsmrL^Je>p;|Ef~o_gQcu;XO{cQG_7Sz5s(ny-ms%6u\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "الرصيد" @@ -22,7 +22,7 @@ msgstr "الرصيد" msgid "order" msgstr "الطلب" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "الطلبات" @@ -30,7 +30,7 @@ msgstr "الطلبات" msgid "personal info" msgstr "معلومات شخصية" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "الأذونات" @@ -96,88 +96,94 @@ msgstr "" "إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة " "المرور" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "التعامل مع تحميل الصورة الرمزية للمستخدم" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "تأكيد إعادة تعيين كلمة مرور المستخدم" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "كلمات المرور غير متطابقة" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "تنشيط حساب مستخدم" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "رابط التفعيل غير صالح أو أن الحساب مفعل بالفعل" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "معرّف المستخدم الذي تم ترميزه بـ b64 الذي أحال المستخدم الجديد إلينا." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} غير موجود: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "بريد إلكتروني مشوه" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "رقم هاتف مشوّه: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "تنسيق السمة غير صالح: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "رابط التفعيل غير صالح!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "تم تفعيل الحساب بالفعل..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "حدث خطأ ما: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "الرمز غير صالح!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "المنتجات التي تم عرضها مؤخراً" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "المجموعات" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "قائمة الرغبات" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "الصورة الرمزية" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "يمكن استخدام السمات لتخزين البيانات المخصصة" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "اللغة هي واحدة من {LANGUAGES} مع {LANGUAGE_CODE} الافتراضي" @@ -270,23 +276,23 @@ msgstr "الرمز المميز المدرج في القائمة السوداء" msgid "blacklisted tokens" msgstr "الرموز المميزة المدرجة في القائمة السوداء" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "لم يتم العثور على حساب نشط" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "تم إدراج الرمز المميز في القائمة السوداء" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "رمز غير صالح" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "لا توجد مطالبة معرف المستخدم في الرمز المميز" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "المستخدم غير موجود" @@ -417,5 +423,8 @@ msgstr "تمت إعادة تعيين كلمة المرور بنجاح!" msgid "account already activated!" msgstr "لقد قمت بتفعيل الحساب بالفعل..." +#~ msgid "recently viewed products" +#~ msgstr "المنتجات التي تم عرضها مؤخراً" + #~ msgid "recently viwed" #~ msgstr "تمت مشاهدته مؤخراً" diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo index ce38e21990f4587ad9a823f6ec41f85a75c9a36f..24499b1819366fe7e608852c9e7c1388c9eb9545 100644 GIT binary patch delta 1790 zcmXxkPe@cz6vy$SI5U-2=Kr*miqzCBoBlBQXEaUCOrxAq2|~g}gxJDzp)y7U?W~3< zB8!S>QAuQhLI^1>Y9lVKj21y;wFt65SlRdIJRfu4=icY*-gC~quk-%VlHj|zsLRIH zOj||!5@{C1XD)7BLmsmn9L9C{0aJ0&qVW6ca4X|dT#2VJ5&Lil-o-SW!dU!`%W=tK zvv@6)N@ocV@-Y{ExC~p-jUC9E)`be>tm6Q#U_6O&_!%?spYuGONtZI-jLM}1`B{ZC zu1B|04bag)Jc7!s8+-5ywqRnkSs`|!A|J#y978Qo5MxHy{K(q27xg@Vemv$pzk^YX zAEM@YjG3%&qjZ$XCsc`NkX=uh(xVVO1A+0>*bEicd2nF2U zv$8Y{p0>w^$2R6_uo$&&SRab53n>*R(r&lpQ z4ww6&(^n>Wv^6wkznivjshriJGEYWvGrbM8Tv`cDJFROUP2YiwMj1@?)KwJ5%CIWb Y@5zeTJNUxW>K-g#b}weolXfQRKMyCPxc~qF delta 1873 zcmXxkS!_&E9LMqhNITP7+G=TO)wDr%p;U=fJFQx4tJ+J6pf}N=Bid?+n%V_@n(!ht zL?b*%Xqs3;FtJ8FSRx)sNTeY=@nCuJ{Y`Ig=0Bfv&)hlZfBxspJS;z65&D=MbK1D- zh*89^0cIh55z8CbQ=eHrKEpBi3)68#T;KD>IFqL zjp)@<9UA)LcGSvFVH;k?O*n3lSt%YvWgfvD_!>1qQMa-R$!Cc-;FWc z-$jk{5ObK{UeQp-e^4bJ#J4GpO~NvqjaorFsv<{G&v&3!-ia#l4cC{L%KbM~Vjjv# z(}o~ZSO$*3Tnr7PQAr~oS7QktKwfr-Hzo2MwYMK}3jRh-SimwGa6W3B>!^etqY{6Q zN;H*?m$|5UW?&jRNz`8@X`@3E9YhUq1`F^C>WgpP{$5n(e{me9@S!SGg5+csxDBh3 z^Jcd(7bBR1-!T(Yn55QYR+LQr3+Xt)>=W@8j>cZpgI<LSbhph#E(Uoi`t5HsIA-@qM_3rM6IaR^&Dz|2x{UFZvSsof}`1Bl`w!B zXcbZvTaOxVhieN?=DrOz-Zc#4Q*6c1dPdRdeuEkyiTdutY}886qYlkA)M2`VO6UpB zz|U@fCZlUB^HBdIg{ZT#2vz$1sIBNizG5$tGZM018X9;kqsqxh^{ou4qSYWTb9mFQ zqaF46B~)TJQKf%`Iy>)B34B9U$j3=lB7U5O%TWtE9hLp>qM<$PK|S~um0=vCv|~1E z;ESjV^)fbvD>IEd54+IZ*e@$oR)(mZL?4- z-GHjd0n`dRFo>O~6(o|iO6o_Qohno!jmY7SP6p9yS$_kUyX|S{sSJOKEsbA9vy_+< z&hut?R)ptziyPK(UrUq_3yIZ44WSzKU$befBbE~S0dhK{mzGoJwx{DNV!nIdk5bpQ zB>c&nRx*>;T-|c1`YWTYzJ*PoolU41^W1)+>MjTu`TT)8T6shPQ9)?qbyXAkdFW4q zs@PhhoCpxQbReq29lr6N#oawV$D6vvX>8uUCu?_u)9Tb`?c5ctZ`sn^)SZ@ab?~Ta hr#^CFcVjSXZ*cRjO?#cj$d$e)wl(kRzMp\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Bilance" @@ -22,7 +22,7 @@ msgstr "Bilance" msgid "order" msgstr "Objednávka" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Objednávky" @@ -30,7 +30,7 @@ msgstr "Objednávky" msgid "personal info" msgstr "Osobní informace" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Oprávnění" @@ -94,88 +94,94 @@ msgstr "Odstranění uživatele" msgid "reset a user's password by sending a reset password email" msgstr "Obnovení hesla uživatele odesláním e-mailu s obnovením hesla." -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Zpracování nahrávání avataru pro uživatele" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Potvrzení obnovení hesla uživatele" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Hesla se neshodují" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Aktivace účtu uživatele" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Aktivační odkaz je neplatný nebo je účet již aktivován" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Uuid uživatele s kódem b64, který nám nového uživatele doporučil." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} neexistuje: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Špatně formulovaný e-mail" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Chybně zadané telefonní číslo: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nesprávný formát atributu: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Aktivační odkaz je neplatný!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Účet byl již aktivován..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Něco se pokazilo: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token je neplatný!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Nedávno zobrazené produkty" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Skupiny" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Seznam přání" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Atributy lze použít k uložení vlastních dat." -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Jazyk je jeden z {LANGUAGES} s výchozím {LANGUAGE_CODE}." @@ -268,23 +274,23 @@ msgstr "Token na černé listině" msgid "blacklisted tokens" msgstr "Tokeny na černé listině" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Nebyl nalezen žádný aktivní účet" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token na černé listině" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Neplatný token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "V tokenu není deklarace uuid uživatele" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Uživatel neexistuje" @@ -416,5 +422,8 @@ msgstr "Heslo bylo úspěšně resetováno!" msgid "account already activated!" msgstr "Účet jste již aktivovali..." +#~ msgid "recently viewed products" +#~ msgstr "Nedávno zobrazené produkty" + #~ msgid "recently viwed" #~ msgstr "Nedávno zobrazené" diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo b/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo index ea4a8820c4016b71757b66bdca04c7e774fe6ddc..148e81a1bbc78a978d27eebacacc77bd87b70a38 100644 GIT binary patch delta 1790 zcmXxkYe>^k7{~Evq0`dxvMy%j3e(E6yhRSDX_=;GMrLVrv7#tMFvx-|mIW0ANzDiX z!)~uCkw#!p7FoTBqJ-WQ*sCDy@}eLpqRaQU{XOjLbI#dzF3)-XJ6ZCqIPg9>>Vi== zQ)g1Yj57=1{b=4O12JY0?@iThyuQQ&;q!a1qpw3c)ysX^m z*P&ZSZJ?naZb6;w2p+|YxC5uenHAw7)XqcLibJRca^uZt+Hz!Vt3i!7;BwsMj9<@2DZE=KmGNxc4i$*pLA2uQ{JI|Xoa0PXzcQFrNp%xm)_V-~LYNFGqjr5>4+>hGe zSI2*-b&^PcY3N5qVnZVF*FsGUXo6N;h{sS9+;YYTF@^pxX5c4OL=yQDd$Ot6f*DAD z**Tn#moO8Da29^TMi<{WZ8fVzWTpYmJID)zO7ZrgVj;Re+;|ko0Y1oVG z#U7$U{u=cZeMHj7qIeV(*#smAR)xC4CR9>42WaTTdmXz`6Fx#MIE;(&gVXo0icXw~ znrJC%BEQowcltFrkMVj`N}pcl2lZH{fIt2>U$g+A1kyhLr}4QjzrR4%z#RsDR&8l2V0z%ClP<4)9F_M;XW zz~lHFb>do9QT8{X77ieXvYSX!hZ7INWnFMM+7rE$c4_cObkX=~T1C{AL7#huYkjc6 zoxg7*{Y_LKwTjw6t)u2q$BL4@iMp1mbWosFh>aD8Tamx{4YVtq{usIil{LX{?rA># z6_$tlk;Ks5sOUs`1m{q7%2m{{q6AwVEQ|3LZ>FUuR_89EDv&C*R0UoC241S-sp5}d cWmp;PiJ9lB2|bP3?GCM+R1qKQP2CgqA9>fGfB*mh delta 1865 zcmYk+YfQ~?9LMqRv793*sT74Wmu_T*DXHY1OSvnJM*U}JLURsg*rAbY5A0y`1RI<2 z2x&GJ!-fnGn3=7$^}t=`K{l5s-kK+XI&j>C9fDl-MhoU8;lV>xo( z>^5fLLmZD^aU{kwNTtUtH;(*g(r}E?C*VySi(Qz8UY3=M>8K1;p(Yr>S=fZ5upOC` zeMF`H7wR^}auqm6HW8KCd?YEh9krE>AqqO(M^P(2>Dq?s@Dpml-l{W zevr?GYC?;#7;8`yJ?DB2wS^B*XW|=bVbOH1i6kINwM^8RDpg(gKj6MNj(qGQU)t;Y zs6G9T8t5lB;y`-W%9~NQ;4Et3d&uJK3v#%749cP z!kOL_&x-I|?_~cP>Xk$Rv5;6zEG6=Yf6r_RYl#X%r$l+vL&|#p1E@TWSVicR{r_lF z^ehQ?d6NoeQkttOkIu`=-csKJbu&j3TJ$`(UFh7Eg>!wWMb(sakClcJLV4CxPG}GG zPa>75B8rJ3LXYn7f^f4h-Ltr*)#rE X^4<0RO+nrTf==J7&B2y+$^MAHdE&I? diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po index e634733a..88342cab 100644 --- a/vibes_auth/locale/da_DK/LC_MESSAGES/django.po +++ b/vibes_auth/locale/da_DK/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Balance" @@ -22,7 +22,7 @@ msgstr "Balance" msgid "order" msgstr "Bestil" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Bestillinger" @@ -30,7 +30,7 @@ msgstr "Bestillinger" msgid "personal info" msgstr "Personlig information" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Tilladelser" @@ -96,88 +96,94 @@ msgstr "" "Nulstil en brugers adgangskode ved at sende en e-mail om nulstilling af " "adgangskode" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Håndter upload af avatar for en bruger" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Bekræft nulstilling af en brugers adgangskode" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Adgangskoderne stemmer ikke overens" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Aktivér en brugers konto" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Aktiveringslinket er ugyldigt, eller kontoen er allerede aktiveret" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "Brugerens b64-kodede uuid, som henviste den nye bruger til os." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} findes ikke: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Misdannet e-mail" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misdannet telefonnummer: {phone_number}." -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ugyldigt attributformat: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Aktiveringslinket er ugyldigt!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Kontoen er allerede aktiveret..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Noget gik galt: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token er ugyldig!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Nyligt viste produkter" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Grupper" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Ønskeliste" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Attributter kan bruges til at gemme brugerdefinerede data" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Sprog er et af {LANGUAGES} med standard {LANGUAGE_CODE}." @@ -270,23 +276,23 @@ msgstr "Sortlistet token" msgid "blacklisted tokens" msgstr "Sortlistede tokens" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Ingen aktiv konto fundet" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token blacklistet" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Ugyldigt token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Ingen bruger-uuid-krav til stede i token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Brugeren findes ikke" @@ -419,5 +425,8 @@ msgstr "Adgangskoden er blevet nulstillet med succes!" msgid "account already activated!" msgstr "Du har allerede aktiveret kontoen..." +#~ msgid "recently viewed products" +#~ msgstr "Nyligt viste produkter" + #~ msgid "recently viwed" #~ msgstr "Set for nylig" diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo b/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo index 48a77d59a2068b3de3c0d34c4ddfbe4220cfd698..3c7f60a58ded4ad33b7d74994b3740e00f14172a 100644 GIT binary patch delta 1790 zcmYk*SxA&o7{>8eX=cpI)X6L@wM?^8D@|?<1j32`1xd_SkU8xDY9YrQZ(tPd7Z{BnFcE({{Rs>@hV~rPUKSxAD{cYBqZWJk>paVBoDDB8;?6N1-W0= zh-r8MQ?Ump<9nvkLv;Ax^{3sQwtXr@K*#T0kA@E}TRiRS#<6 zZ&7#WJ8Fk9yaKul8MqpAk-6Il!FHqaa((12G^ugd^xrLi2K%t2kE^{Ce~h??Lg zYM@7`9Y1y2&rxs704kGjQ490(r&i3wBlsH2Fi^#|$fmWTe&|N6w3vfezaO=e9jHrG zj|=fIYT{1RS>8uw;xW#^e$-v@FncB@quS-DjMO17Sim|6bSodAcGin5+CHGpI+TBD zfHa(n6{uUiA9=)1pcZ%um7%McjgPPzf1<|Q#*cb_AL{7Npil4rZGt2^zF;GI$-5TP zf}Dok!*$q;9IvG$3?Iz`^wF+F-H|3#M%qw!r2`q#`Y;a%QR8Otuzp{HQ!5F!63oV< zr~z7$?AcvBgMFwB)g%pH(mkk*TtvpSC&;B9nhb`@+Tb&n*Of!OIQZ3-H*zJB7Ev7Z zx#L61gMN2*%|_Z4RBd7f)lb!($fEu$MFg9urPK(j5~4yR4 zIOvY`70@bidbIuZPOLLdr%s{jT$fP)6`kwyV4){*;btOTE8XcuR3%bn4OQ=fi%ObI h`Bcdt#tLy+u-P*`WL5ipPqn+fIHGY(`{(!~*I%VfssaE2 delta 1872 zcmYk+X-Jh>9LMqhjl61&W?F8yrdzg{Mw>Ne=5n>N#mqLdgcj;yvK$-oT2#|q8)^oe ziHO@mFTxkTkb)MK2wI^)Dxw!HguMuYBHD|hnwp`$KYfG_p8GlHJj?l?|2dB@18qg2 z2l2fR7^R9ji2A;lSqN`L@I$#8X_kT4Fb&^hDkevD-=Bq(=$B&(?#6-GgxPo+efSdN zFgn_-AEsi0rplnvhk<;|#Mu~&_2|W2$ei{!Dv+@2MeI-iDaPX$9D=dDOygrQ1`APZ zDMS8jvD;sXUM5SMV3SjhZ0vgBeYmkHlbAsBs4i zu+ANC$KLcWpx$#CM>4xOhtseawSopzM*c+IzX!GQCRB>sTyJ6` z{b#7aJfxGR#UN9d50fz+Lj!08Xk=go=HO1`&(86qK(3?q_5n`BPpAnqSw=OMpx)Dp z3aA4Wcqb~*L^fWgqvn~4N$A9pf2Cvx1Dfa$)C&$`CLTpSc-I|&f{Oezj=%&iDl<7q zOjdv!unakGb{5m|3Xa4VI2aR{q|#$HA)fq?VW5%Or{EdX18;CRrm!rH=cCTZ7E}O- zP-o&4YRg`r0*~Y9>kOr#R+x`E6BSsBtB@G%IBF{|g=lC69jF)HKz%k*Y@i}7bX|cu zOuwN%)AOhaI#Dlri(2s~x9{PizM3dhCgV_nO~Y1PiVYZwW;yd|G$L8G`=|@gQIXcL z@f!afwUWK4!*m$)umv^oW7Jl@LS^C|jz%xD>a2{%u~_Q%w<8$|*&!NyY4!+pI$tBf z*?-7lYyeMduQO3ESb)Q@0d=~Ykz4H~D!}W=pWWd{nRUw0P4Lhn5yspA`R_f zC+6V)=*MjGzYi->0X;)@$9nxp5SWZ?yRAnqSqSy~5!6|^hsw-HB$-`GM6O`<(o%M)>9O4Pg&?T zCZi`1ejJe-J(s3pnjRkQ^?4SBXLz%!m(s7KYE5&f71VO-L~2hdrm>u=6QmDN`B5R~ zUH<{p&ZaJ*mZhp-8l092S&8Oy3Rf?#y!h0e|c}m+)M>^ibHBN1?W~+a5wX?-p x>;HAr#\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Waage" @@ -22,7 +22,7 @@ msgstr "Waage" msgid "order" msgstr "Bestellung" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Bestellungen" @@ -30,7 +30,7 @@ msgstr "Bestellungen" msgid "personal info" msgstr "Persönliche Informationen" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Erlaubnisse" @@ -97,91 +97,97 @@ msgstr "" "Zurücksetzen des Kennworts eines Benutzers durch Senden einer E-Mail zum " "Zurücksetzen des Kennworts" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Avatar-Upload für einen Benutzer verwalten" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Bestätigen Sie das Zurücksetzen des Passworts eines Benutzers" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwörter stimmen nicht überein" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Aktivieren eines Benutzerkontos" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Aktivierungslink ist ungültig oder Konto bereits aktiviert" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen " "hat." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} existiert nicht: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Fehlerhafte E-Mail" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Fehlerhafte Telefonnummer: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ungültiges Attributformat: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Der Aktivierungslink ist ungültig!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Das Konto wurde bereits aktiviert..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Etwas ist schief gelaufen: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token ist ungültig!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Zuletzt angesehene Produkte" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Gruppen" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Wunschzettel" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "" "Attribute können verwendet werden, um benutzerdefinierte Daten zu speichern" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Sprache ist eine der {LANGUAGES} mit Standard {LANGUAGE_CODE}" @@ -274,23 +280,23 @@ msgstr "Token auf der schwarzen Liste" msgid "blacklisted tokens" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Kein aktives Konto gefunden" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token auf der schwarzen Liste" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Ungültiges Token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Kein Benutzer uuid-Anspruch im Token vorhanden" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Benutzer existiert nicht" @@ -424,5 +430,8 @@ msgstr "Das Passwort wurde erfolgreich zurückgesetzt!" msgid "account already activated!" msgstr "Sie haben das Konto bereits aktiviert..." +#~ msgid "recently viewed products" +#~ msgstr "Zuletzt angesehene Produkte" + #~ msgid "recently viwed" #~ msgstr "Kürzlich gesehen" diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo b/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo index c2658187936023290f869945e3f4cbd37b3b7b4c..8efda1868f049fa5114cf333b9fb0472844b3d48 100644 GIT binary patch delta 1171 zcmX}qK}eHv7{~GF&3sonU25uPrjt^eY0%P~I;!a*q(dd$f@tNaB{j)tki?+6O36zQ z1{KjEipW@0hoD0wNYNo8I}~==#UP5JQ-{949F6zg=fD5n_j#WG^Z(zE--*w@cXCx` zwp3wOhkvjfYbwncS~L2w3)f;lcHmy@!*j@GkNK*>ml(nYjN%VmhZ_TCY21a1a}TTW zMZj_vXYh^*6%tspYzr#UHmt`(xDwBz5>284T*l3K8}%@5*E z+*h2xg4)U%Bu>t5GEmDOBC+fPs>R<>ovEguIwNhUijSgJl18n39JTTbs1{#EZOJ1f zge@RzueXLG})u5mJ*1~{Yuq~+84q+djLT$laR3T5181@>YSU@EV@}<+=jf!&v zRZt#P_#CRxlE!6gQF+?2p8Ph#KrK0eN|Zqbx`@ zM^UFcfjZm|P>1^os?&?eWp0z1_og%$8Ro|bw>~}G3GVIOdRU#%cIY$URk-a=-0N`< zI{n_X+w1J`=H09l^Af&2j^(F(DYra)CX)$gQ^_$K_ZCBSo>Ljg4^>_-4<0z43Xdlz XCbF5+qv7<#|L45Vp+vs7;aACD1de=!H zP1c3|xIK_JTfks~i739nl~}-K7$nO9$E*ca&_%M><8y4p&!_}GmbDIJs16*$r8t6Z zcm>soH%LuZK-O%3@(i>hAHOcc6{r=hK~=g3J$MkkIDjf7TXYnu)h1CLnZ{cDQJfF3 zzuMAzRGb!6o_176@|%hux>0}Jfz_D7VLXTXv6Ox2#C}xexA7=GMkQ#V-#SAvEX6L= zd^dLC?&ADq)K-onaq@PHfm;3uiDe&AEuKMjCQLtdMw(F-A4aVtgIakGwemBl7GFhe z$v9HGO`{5%K^5e%Ivs95hRAOb2JC{xQLWvI2^>Og!97$V&yX1Q7F)4^N?6NFr@Ips z=O(J42~^=zs6xvkb4E~k)?yX;Z7&10\n" "Language-Team: BRITISH ENGLISH \n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Balance" @@ -27,7 +27,7 @@ msgstr "Balance" msgid "order" msgstr "Order" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Orders" @@ -35,7 +35,7 @@ msgstr "Orders" msgid "personal info" msgstr "Personal Info" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permissions" @@ -99,88 +99,94 @@ msgstr "Delete a user" msgid "reset a user's password by sending a reset password email" msgstr "Reset a user's password by sending a reset password email" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Handle avatar upload for a user" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwords do not match" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Activate a user's account" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Activation link is invalid or account already activated" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "The user's b64-encoded uuid who referred the new user to us." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "The password is too weak" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Malformed email" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Account has been already activated..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token is invalid!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Recently viewed products" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Groups" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Wishlist" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Attributes may be used to store custom data" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" @@ -273,23 +279,23 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "User does not exist" @@ -420,5 +426,8 @@ msgstr "Password has been reset successfully!" msgid "account already activated!" msgstr "You have already activated the account..." +#~ msgid "recently viewed products" +#~ msgstr "Recently viewed products" + #~ msgid "recently viwed" #~ msgstr "Recently viewed" diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.mo b/vibes_auth/locale/en_US/LC_MESSAGES/django.mo index 88438b35a5e468b0c5a546053e87609786e0a6b5..763e926a7be369a0761a3165704cedc362cad63e 100644 GIT binary patch delta 1797 zcmXxkSxD4T6vy#njpH(9E{&O)5~k%AWtI#xW@YGeBtb!m2TaAEn1jR4d^U?tWIPvjmPN?RmO0~U zbnB==I{M;v)X9!w3tq%}^m@$vco-FVJBF|ewZXgzW^}C*+1u8l=7U&?4bJ=xbTPh% zTIV6=v%kHdqm%qVrFaNQjpeXP0OzAl(2UB+A=KwvP$xf&O7V5a4oqj9Us;rFFVhh0=R~{(??i}uTdL~Bm5@JMlEy-6-XN@;0LGxe>skz z_DP`treFY-i7mLJNej2wPDL+;!$VFoW@1%)?$(Mw0muF>SR< z%b1T{I30VjHiplznF6X$BmYYI8KNk_2dE9YQB|$uDFX{oRb7p$>PA#1+K^c6335n# zi8@d>Qa;v?I?y00&^#8=6_%lj+8?H)NU9w7AVJzCR7UQginGI+??K(=Z&U_`Q5(6q zaE&LSHt?dpmxU_o0IH~KP(}S7Rn*~fE<};<#}FPzZ7_f;o)J`4d&s}$y;zC4sQCue zU4~HW>_ese81hxSh05@ARA#=SYGe=zIBW~auObehPF{sNc@UN2U8pNLfdp;0QGq>2 z1@sD4)gO^8+jmq(|Dg|Ob9|+K2P%NQ$e-*amg@I^g^o6QhpOs+)IzmPMvD>^aVsjo zXO6E?8+}HdbVAl>CT5~GDnPAMfhD*J_5D`Vy5}*omd;H&I$ktVAusFXjiQeJ`-bSVG4eJxEp`F@#gV_U{)9F3{Isfw&pj<>QzYn~-?Wu+ z4NX~EO$*YhX{EHWXDOX+v<)=HM7c#D&TJJs@?zQyn(lQuZR}Bjt%@v(%c-cNS3oPGEutymde+laJ<6NvUHQ}#7{!+0%1B$> cEZ16kk<)1#+cV-*-R)ILZ#?bAnSaLr2bA5VQ~&?~ delta 1874 zcmZ|OSxD4T6vy%7(x_RMj=5G=VvgFbVdj>VnPrphmQ+SgVA(=x%R`Mt3zP*hEl`0y z1R)iX;!9Bv3T;FWSq~8i1tCd26|GQxfBG+a>CfExod2Df|2_BIGd=m23;aDXp=XV& znlX~`DcH=9PX_VE^)SpV6CYtJe!?V72p{-!)Vh1MU2ON$O5oW_M z3Ef&MlVC6tMVN)<7=?}K!o$d#b^?`1!0{eNbN>!w@CT+~6c5w1 zuSb`*>Lbt(>rp#v#{GB|H(*+%Sw0>^W!{Bbu^Y8O$q+L_Ta4sj)u?$N7UM2wz8yok zzl(ZKCyr-*dq$v)zoAMT$*(DmO~wM8gW5q8sv<{G-#>}kc?+t^Rk=b+|` zuox?x`DWBnotZluhod(mY zs*DGf@g!7t7oxhm71iBss8YW|UKTu>|2*=Tzt@t#k=arwo{m8!fwzP5BNh_oGv)>| zT**Pp0;R6(x>ej)F;uh#jFpT^hHCWZnnSRLv6!J0>CXO(lJwU|H@S=zj56K)b18LQ zivq7*@p-d|N_ESn<6GVz4HRMm@mPkAd!92d)Q{zXsbMLF)kON=W--*2s=qETLrtYJ zrZ84BiWr3qU9%bU11H1MLo0{^HSWsx@bDN{+(zHFhWdSDcGvm#_-e=O*txy7abv@- Q_V}po$p3xToA@Q\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Balance" @@ -22,7 +22,7 @@ msgstr "Balance" msgid "order" msgstr "Order" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Orders" @@ -30,7 +30,7 @@ msgstr "Orders" msgid "personal info" msgstr "Personal Info" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permissions" @@ -94,88 +94,94 @@ msgstr "Delete a user" msgid "reset a user's password by sending a reset password email" msgstr "Reset a user's password by sending a reset password email" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Handle avatar upload for a user" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confirm a user's password reset" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Passwords do not match" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Activate a user's account" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Activation link is invalid or account already activated" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "The user's b64-encoded uuid who referred the new user to us." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} does not exist: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Malformed email" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Malformed phone number: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Invalid attribute format: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Activation link is invalid!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Account has been already activated..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Something went wrong: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token is invalid!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Recently viewed products" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Groups" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Wishlist" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Attributes may be used to store custom data" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" @@ -268,23 +274,23 @@ msgstr "Blacklisted token" msgid "blacklisted tokens" msgstr "Blacklisted tokens" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "No active account found" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token blacklisted" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "User does not exist" @@ -415,5 +421,8 @@ msgstr "Password has been reset successfully!" msgid "account already activated!" msgstr "You have already activated the account..." +#~ msgid "recently viewed products" +#~ msgstr "Recently viewed products" + #~ msgid "recently viwed" #~ msgstr "Recently viewed" diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo b/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo index ab51f0d4a0f51f5b3bee2547e2f04e4937a0a6e9..a84585e7583bcfbdc3f483762c982c476bc63dff 100644 GIT binary patch delta 1790 zcmYk+Nk~<36vy%7@SZkmnwCRqiDj9l+4OKuEz43HERBEkl+T$H@P1UC`&kSH)3 zs5Tj;L`7ziv`ldkWD_lFVVdB=MU>U|r?=?x{`YhKm+OBx|8sqn-<0qD7#7%KT-CH# z+K|7Q7du_txE=+WEyBl`h@UYUgM%mDPsC;P^DzpKV+5YVm3R|l@B@b8cMQSFlgz?3 zRW!k59;9IkdT=_{pd0IuIqf8BA&riAaR&W<48uW;$6wC#I0l_YKOMD~T;yj(PQM)8 z+G-_%{%|L1XQ!|MFXA4Im|~WN^{AD1U@dl|Cdim-Mre7++*XQuUWs|Q&v||W1L?P+ z#%ag-%x^CUw37i;ihm%fv3N$w#!S=>j-oPh0`-0aYUk%rDZcL5g^~2%q82uS{A`RH zL)#S6I}>N4cM(AuGfy{L)&S^hzcLk-l7T1YEu!S_%L{O0%@ zHO~wRU>0VhGO;z3{A;2eJkS8On1ZKK1Ke?*cj0XMeVBw_Q5gy4CDvq-cnFh_`m*zw zjF)jfcHM)jr^>a zn^OK6HPH`LEkyAt6k;N3p$BmM2vHko@DgMaG&(*+rDzbf;{Zm@!C2G;)!bN<9dm3# z4R{GP;8mx83$?K})DgbJ!#IlDa6gk2p!W%ZQa^@gFqB!zuC<_w=N77H+EF`rhRQ$> zD%IhPE@LqclW++Z;XHd7{Dz9<54xS36;^Oj<0bp{cpHR-+u`I_Vhvt*5Ym?OV)!*^%pF~ z@5rL9m{sWgUAO}4aUR}9ZKMyipnlX545JnlOL`Kp40&WnFtLi@EI}IHNA2tr>PQB# z8GoWO(?lhznp;pQ?nI?@2>p=t{ktlBeXelVa{BqcQCHTa^+Z{;LZ8PSCQZ; zI@nJ0(ALo^Y2`E({@-gg!46s(O~mqsMb*XqIZ7Xe!I{#hCPQ1Z4;-2Nnqo;${ zrB!bkk0!q7#l$)j6uU{K;8)u5GN{JgQ8;~IYDZ~|zv~Z!Y^Zer delta 1875 zcmYk+S!_&E9LMqhFf&!OXz8HT6s^(LQnih$c4$${sI8Vhh_sh96w%rqWb6b@Boh)6 z>6?;>ghnI;35hMX5E6ut5c``@y!igw+r-WM@8_H|bI>(z5vHkufTq|7yDonPQZ(pj^D8-CMKHo!2X!3 zp>im6rC|!@VmT(`CiLSTWK27Rnn>LB8up_88B_2t4#H$QQ~O9v!V=V4qR7VSk7m`%yE$iFNoCH9(}h8AY3i%)zQq?G6@Wz1!Y`Ug}p- z{oKH8#6nEokQe&fVGEPISU67U7u3W&q?4j0 zAwyU?_Qep!dQ*r{$iYes<4)vbSGZ{+_fUKL2FGA4YQS8UQHwKB{hUWl=oV_?FHjRr zW8-BAHO?dqpwpB5D<#`$&_KIT9UQ}4JcD}hncMymHS<51g{ge0%!H9SSuw7`D01HH zGKTObX5%*;h^Y*+)MJ*PLjFh7aFEeQ;1$%$K4TDlEK4iSMxBvmNFTNhOYsm6!^g@QP2ubVF8|XeTzy_Z+g>;^RNiZPy_7d#vJX0 z>p4`1H&FfEb?c8%3ww^*LNA@J!wjs%SR;i9h4-k`XEWL!3?o^#Yp6r?2z7W~p;qt- zm4RQVR8OXNS%w)H#Zg#?!|^2QaNkBAv9HMU>_6|EmxglGdmcs3ja8yjy$ZEOTV2nf zQu`7$U@MX=^RRE)f&gj)d8n0WUc1o-!7o{e;|cS8ph#7T+;RhdxUk= zPb1m0G)7g*N8oIXAd9d@RENzt93Xs@lW=j-|g*yvQ(@_VOFx0X)noqhiRIa#%} diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index a97e1524..df3646c1 100644 --- a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Saldo" @@ -22,7 +22,7 @@ msgstr "Saldo" msgid "order" msgstr "Pida" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Pedidos" @@ -30,7 +30,7 @@ msgstr "Pedidos" msgid "personal info" msgstr "Información personal" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permisos" @@ -96,89 +96,95 @@ msgstr "" "Restablecer la contraseña de un usuario enviando un correo electrónico de " "restablecimiento de contraseña" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Gestionar la subida de avatares de un usuario" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confirmar el restablecimiento de la contraseña de un usuario" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Las contraseñas no coinciden" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Activar la cuenta de un usuario" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "El enlace de activación no es válido o la cuenta ya está activada" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "El uuid codificado en b64 del usuario que nos ha remitido al nuevo usuario." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} no existe: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Correo electrónico malformado" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de teléfono malformado: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo no válido: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "El enlace de activación no es válido." -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "La cuenta ya ha sido activada..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Algo salió mal: {e!s}." -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "¡La ficha no es válida!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Productos vistos recientemente" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Grupos" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Lista de deseos" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Los atributos pueden utilizarse para almacenar datos personalizados" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "El idioma es uno de los {LANGUAGES} con {LANGUAGE_CODE} por defecto." @@ -271,23 +277,23 @@ msgstr "Ficha en la lista negra" msgid "blacklisted tokens" msgstr "Fichas en la lista negra" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "No se ha encontrado ninguna cuenta activa" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Ficha en la lista negra" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Token no válido" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "No user uuid claim present in token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "El usuario no existe" @@ -418,5 +424,8 @@ msgstr "La contraseña se ha restablecido correctamente." msgid "account already activated!" msgstr "Ya ha activado la cuenta..." +#~ msgid "recently viewed products" +#~ msgstr "Productos vistos recientemente" + #~ msgid "recently viwed" #~ msgstr "Vistos recientemente" diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo index 9e1c1a25c329a331113645dd4e9e16fa87cba8e3..350d3fe4c622c646cfda15a79d8e492b6860f4e1 100644 GIT binary patch delta 1790 zcmXxkOGs2v9LMqhh%=U^`6x9_$BNXlho+U&n2)sgyR=MNBqk(fMD&7`32f10A$5sB zaM6nhDxx7O2&tq+6o{)VD54^IE?l&zF#G;yu9rFYbIx_5m6cu?G+p!kj(ZEI1_8?Xvn+~-#? zmhmmrJa;jl_3bGgW%3nO;=f2~%+D+pSc=Nv0IDKKP~Y!FW!{Y{@nzROOlSNC71%KH zu@P=eZ3&cj5@up(Hl4Y20@#Rr>^wIGa0#`i_izCYpcaZD{5H%*O>_zsNG~ejJE#DE zx{jjON#OuwU>6CTPbZJb{|vru)1PGZ_!!O#FtbNHSj{CQHY?I1@Qv zb`A@%2lKHXbMPBBdiV~D&1c-4M*U0ZoFfWN+>hFVuc(X@NpCt&g*yaGB4^KcWEBQe`))E4%j4)vuF9hLru>qq2cIn1JoO1bF}twFt>XHb>6 zj>_~gYNF?;i3i>B5H4Z-9`(Cy>h54U?#Gw75<@{|V|%O%&!U5h)X&E2&=jLGsYD&7 zRk#uBQKi3%+RHGi5)V)neSvzLMoKfb{w_y_mlLekI0%Qy|6;4J)z)q4LE**NX_20V-hQ4@bb zj)BGS>&=*s%xQa20iMK4?7?DujS4KDD2UzCQ303WB5cG0?8ZF2kA;nNhUhFqPhRx> ztV2~|Gxp$arx?>MtaeI^Y!#sxZ^SO2I^Yp4Er(y zRrKm2h|^8&7qM*qm eB8t`EN~brjz_T{|EUwiTu1$KJ7@j`$p7%e}-KHJ@ delta 1875 zcmYk-OGs2v9LMqhRE|ximX=nQjz(%4m1TumscD%#%${mSAv(m6+GDh6A=5i5qs35A z8*33Ew5SGK*kjQ^R8)i!5=2lCV%R1OdMxVu8%O9c=YIa@&fN3(pL6w6S$~=TW5T%0 zMyaRHqz;cU^W)1XE|h1{W;ysAXX7x=z-i-0e!m#=X;gNe&GQRZ@XvV)#DURW3Qez8nIhLVTa151^GpOHRM6J9FmEwC5Ut<#Ouc(PR zNGGAiB12dTPQz^UPa!BJ$iW?0fX9)KJ>a5=yg=>kM_hzIQ3K|(3@=uo`nijm&{NdJ z-=ij)#Ky~P)HsEhjGjs4Un%L}h6Xx;>fj3IVmIo+cai%8sG0x9Ihe?o%1i+=Co9H% zScRN7>&0vgVI~gYEKFpOT8CL)0{LISjq{A2hrOtdhfrIQz_PUBrI>+U)Ji+Kti~Id zg#)OG$8+>GKn7|HN>FE_2CK0FnY-OXZDq($pws;VmHNJj6M34@)}T7t#U*^0P_Jna zm5Dc~l@6l%`Ht%Ncckqg&xN#IsOQQtfDPD+{vQMt1WokDcG+#bfDchKUCYMn@YJDJ zvKMuz4&o;4K&Ac_YAZjWGVuwO(P7kEmB~fpl%megIozW6|0aP}@DnwFgKyPA3@QVu zn2-6m1ih%e>_ScCDKdujA&a&lOvSM*Hw`ne5LaO{cA&ohis^d)U2ND~ZscMKZb$9? z6>P^|)Bp>4ieq8xa5L^k#sI-_fXTadNcZq&q&;!?bhS$=|k0yq9e zomMxERal97UprA5xr*2DHgb@yB7J1yb*K(cB8#$KbfDtVq6v={(jG3#rlU0QC924^ zp0J2o9+>M)acm8&b}shT(5|HxP}fm+P<4hEQAbM|!A`19f=+?*prX7i4@V>a1-27w z_x~?is>;T|Cued&36b6?6^@>53r8bw<2+*46wc\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Balance" @@ -22,7 +22,7 @@ msgstr "Balance" msgid "order" msgstr "Commande" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Commandes" @@ -30,7 +30,7 @@ msgstr "Commandes" msgid "personal info" msgstr "Informations personnelles" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permissions" @@ -98,91 +98,97 @@ msgstr "" "Réinitialiser le mot de passe d'un utilisateur en envoyant un courriel de " "réinitialisation du mot de passe" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Gérer le téléchargement d'un avatar pour un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confirmer la réinitialisation du mot de passe d'un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Les mots de passe ne correspondent pas" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Activer le compte d'un utilisateur" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Le lien d'activation n'est pas valide ou le compte est déjà activé" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "L'uuid b64-encodé de l'utilisateur qui nous a recommandé le nouvel " "utilisateur." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} n'existe pas : {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Courriel malformé" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numéro de téléphone malformé : {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format d'attribut non valide : {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Le lien d'activation n'est pas valide !" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Le compte a déjà été activé..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Quelque chose a mal tourné : {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Le jeton n'est pas valide !" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Produits récemment consultés" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Groupes" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Liste de souhaits" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "" "Les attributs peuvent être utilisés pour stocker des données personnalisées." -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "" @@ -277,23 +283,23 @@ msgstr "Jeton sur liste noire" msgid "blacklisted tokens" msgstr "Jetons sur liste noire" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Aucun compte actif trouvé" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token sur liste noire" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Jeton non valide" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "L'utilisateur n'existe pas" @@ -426,5 +432,8 @@ msgstr "Le mot de passe a été réinitialisé avec succès !" msgid "account already activated!" msgstr "Vous avez déjà activé le compte..." +#~ msgid "recently viewed products" +#~ msgstr "Produits récemment consultés" + #~ msgid "recently viwed" #~ msgstr "Récemment consultés" diff --git a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po index 40f548a3..c0b08311 100644 --- a/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po +++ b/vibes_auth/locale/hi_IN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "" @@ -26,7 +26,7 @@ msgstr "" msgid "order" msgstr "" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "" @@ -34,7 +34,7 @@ msgstr "" msgid "personal info" msgstr "" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "" @@ -98,88 +98,94 @@ msgstr "" msgid "reset a user's password by sending a reset password email" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "" -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "" @@ -272,23 +278,23 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "" diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo b/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo index 70236926f1da74d09e974d6ac1fd2e6a796a4d60..73b4971c53195a0f9b031713245fc7c490c9f40c 100644 GIT binary patch delta 1790 zcmXxkZ%oZm9LMn!-FxHu(;q6L8>y%y#d24-TZ&SV;c~S+@b7^&n?ETV?b@vIz=S*6 znjT=D$?jZ?MKdjVVirB1jbWbnKf?_3=l!{Uo&C=5b7iW3urkrsHdzjxjO+-%rOy^viG>?!&3rfkk)`Q}7wa;t!mR zv<}JPNbiYT1zQ% znM$i)k9IB9M?*hsM6K)~wqYl3#;HzYim??Hc^G$MKWc)76O5s0yvW?97WLeRUfgOu zzkt#7dr;$C!A#~icWG!PZ%|wO3)vduVw4grM6F;KYDZd7@3)~=-htZU^Ok*>NPh$s z*k|N2zqv8Aak9NrFc|~cH0INAqaV4+lH@aKL2n%_;I+)XEA`TU~{@ z*nm2#Bd9aHjymIEWHII$>iw^niVkMg$}`cA8&F9Xvb>M8>AygazW=d=mBxc|+>KjM z0}rDHeuowK2MO9NB?|q$5le6{YQPX`A&*fD89{zxKH@@j5}g9{aAR)Mh%*)8ej3Vw zGpGUXp_1wWcHk>iAbZF}eMar5_d}?FULZ*wnG7Ojb#Ta*U|USPEcnej`3Ht1XJJ!?RKy_1BP<_;TY5{e$ETyrLx{9g3Jb0VI^uU zA>_|ix&003)lwZA`r$Uz%1+>ZynywXlW10kM^TY?;dcBRH9>Hw8BJS`#9(!(=MDz2 z*?r!DarEz?#(99b%x}+WDB>Te6esd)Qe#Cp2j`(yZ~&E&BdGV=Q7ez3Qhe3*8K%?! z7ZsR?bkejWWD3i~49vsG2pT~e`M4TO@gVYNxA;&XPf>gO2B+b7)Pw~rBaDks<6J=n z^avIBD^#HAY`n}v%`+Q)=%kQ;rDQ)3G|?f{0B5iOFQR_aX4Go?sO z7Qn3-Le87r#60Z6T>Ok#n8qY)J!ZwJwc72rXv z!c(X~UL$`tkfX2EXP`1xggO(8aVf4u1sX$b<)sJ>&Y5+h0=Vbejmn6h(X`^}I18&$ z6CB|~-=9Ne;0h{}*HHuCcJ0Ec^q-;v`iXmSB>CTnk#-stG`f-PvLa?{!vK1wVDJ;RusQ)wXahdMFhdZZ;L$0-`m90mm zdM8fC!>FygjM~Gus6GA%dp`egqT31Ay|h?=Mk^?eNI;5F2EJ*b7H6NMI(g$!lISd1YYtNVX|2EkYi z`HkH|orPDZ0TMWQI$SAu5_3?2bfT`)W7PXSsDQHl+Xo_edqO+R?=FaE`=jytNL2MZkM)yJXPmzq5E9)-K=PF{J8QudXuOH)Bsf* ztP-Lsg}NeS$JS9RsO40Zxzws?d;CPtvX0Jp$D6*%+0n9XpMOu-+3Pg;cQ!RP?B3MU u+~G^^9y+0hUSms3m~Wf;YzX_C9KG*YaLbl(W7CfM=>1W?j@-\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Equilibrio" @@ -22,7 +22,7 @@ msgstr "Equilibrio" msgid "order" msgstr "Ordine" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Ordini" @@ -30,7 +30,7 @@ msgstr "Ordini" msgid "personal info" msgstr "Informazioni personali" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permessi" @@ -97,89 +97,95 @@ msgstr "" "Reimpostare la password di un utente inviando un'e-mail di reimpostazione " "della password" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Gestire il caricamento dell'avatar per un utente" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confermare la reimpostazione della password di un utente" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Le password non corrispondono" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Attivare l'account di un utente" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Il link di attivazione non è valido o l'account è già stato attivato." -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "L'uuid b64-encoded dell'utente che ci ha segnalato il nuovo utente." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} non esiste: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Email malformata" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Numero di telefono malformato: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato attributo non valido: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Il link di attivazione non è valido!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "L'account è già stato attivato..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Qualcosa è andato storto: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Il gettone non è valido!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Prodotti visti di recente" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Gruppi" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Lista dei desideri" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "" "Gli attributi possono essere utilizzati per memorizzare dati personalizzati" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "" @@ -273,23 +279,23 @@ msgstr "Token in lista nera" msgid "blacklisted tokens" msgstr "Gettoni nella lista nera" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Nessun conto attivo trovato" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token nella lista nera" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Token non valido" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Nessuna richiesta di uuid utente presente nel token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "L'utente non esiste" @@ -420,5 +426,8 @@ msgstr "La password è stata reimpostata con successo!" msgid "account already activated!" msgstr "Avete già attivato l'account..." +#~ msgid "recently viewed products" +#~ msgstr "Prodotti visti di recente" + #~ msgid "recently viwed" #~ msgstr "Visti di recente" diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo index d445632345817ac4966580776b0bb46aadcd8f29..f4dcc5a64ba05ef25bbad9ef7fda8bb968621113 100644 GIT binary patch delta 1790 zcmXxkTS!zv9LMqTw%+e~$!mG-j+ZjUTbh}rrD&E)JxC~tSP^M~$%X|=5K>D-K@S!M zMMWf1QdDF;1%+TlMnzCTT98E#QflAd?s3?2J~OjtXa4h_Iont9Vzd22nCCe|Y2u3G z`tELw9Uppequlp4W(AI5GJeJw^zm^$pNwm1Z@|Uai4iz}>+vea;(H9i84N~0Ut_{G zRSXqBI@aJy%)=mTK^q=M<}}@?Ku%cR#!%XCF$||L5$CM_1O^SHoq<|Q5%Mu*R=XN) zT53HN{ctyGWyi1w&to%2_#2atM^KRuVF!+)CddphhN>w><~Eh6{(3CNy;lDf^rU?Y zHO^g3V}A3LidOOsmEylhYD^-d6ks-L1qV?X=|Vlf!QGgS*H9~eiG4VUIe3Vpu9aO! zrFIqJL=Au&CiVEP08Odyu^QV^3w&Vpk7H~D9WzuiFe1q{KshRaI=p~w zs2_R|Wevt*E_R?MxQ1@(=UON=jxn!ruXQvxIR1F$`);L{&$ZE!XNz^Kb=2Fk+ji2{ zR%n}a*z36zXcpH(DW%fLwVg|En&MK?f(xBB*WdgO>g85@0lk4LRgP&}R9-Q)GH2Vh z8XY1Pz0a$-NP_dcdiFab5c2vho{|-f59B*gY#$Crx{|4-nQ9e})TsYsY b&5ldn>28%n&%Il0LmPv-gNMfAb8Pi$s5w1kqwp5N#Aw4ACD&HB=VUA3@L_^ZniX*1>Z>&pG#f&+?r2z1}KmE)6`6 z4%=;%8fp^t-A`r#yxo-#%Jp!w47`B@@g4TV_->)=bMQCXGcW-+uopmSH5;qZgZyIc*ziA&zSY_M!a>qwzDQU?hX7e>nESBGg{W zkw2?++Y8aFt@;Uc<5JYlw&MnD!$ml_hgl&uqgH+um*IWX1jRkg2(1EHgVmt={piD0 zZht$5(Y}Nl=L)7VzuhCyia(-K+=IJGjg7!DI03bTO{k1)L0#X1+IcG~#b;daU@Yy| zsD*h*C!zI1rm#ee$8-$zB`7Ayz$z@j2IS8!@S%m=M4jzp%*GF>2{YM79hRWRIgMJ- zHPpf%q81v~oBj4@17?J>)WCjVJc$2pvcpRhmr$kQ-fgi7fS z)BGK$i4X7yHep~L2fKve8)_gwuRsgdBb%@;%%%Yo zP~WGap7K1LjYZf6ccB)r4;kB9aVVZcW%3#7ZAeNo`vvFYT)qG62{gfd*C(g}-k_cZ zF9)U@5-<<*QJGnR`hF+s{$sAE-Tn^Lk^GIn;}_IM=Q5ba>j=vEKOz{U3ve9vPYJz- zf8Zh7O{h!^NDZYvA7|07L~gM*)I`^?6yGA7wb86n3#&q1SBsjb5i76_ABk7-s8lVxifE~CWkE1f=CptsDiJsZcByUa~r(@Mro!%5`6;;z^Q@@u91WK;iWF;%8JPrY#kMMRU-q-b-M!6@{a|4K}bf>d5$;HJ*YJ3CKo`?sOB^XR4LPJ?qfIj;Rwa;o=#1XI4l diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po index 4e2fadf2..ff84b640 100644 --- a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "バランス" @@ -22,7 +22,7 @@ msgstr "バランス" msgid "order" msgstr "オーダー" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "受注状況" @@ -30,7 +30,7 @@ msgstr "受注状況" msgid "personal info" msgstr "個人情報" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "アクセス許可" @@ -94,90 +94,96 @@ msgstr "ユーザーを削除する" msgid "reset a user's password by sending a reset password email" msgstr "パスワード再設定メールを送信して、ユーザーのパスワードを再設定する。" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "ユーザーのアバターアップロードを処理する" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "ユーザーのパスワード・リセットを確認する" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "パスワードが一致しない" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "ユーザーアカウントの有効化" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "" "アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション" "されています。" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "新規ユーザーを紹介したユーザーのb64エンコードされたuuid。" -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name}が存在しません:{uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "不正な電子メール" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "不正な電話番号:{phone_number}。" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "無効な属性形式です:{attribute_pair}。" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "アクティベーションリンクが無効です!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "アカウントはすでに有効になっています..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "何かが間違っていた:{e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "トークンが無効です!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "最近見た製品" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "グループ" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "ウィッシュリスト" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "アバター" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "属性は、カスタム・データを保存するために使用することができる。" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "言語は{LANGUAGES}のいずれかで、デフォルトは{LANGUAGE_CODE}です。" @@ -270,23 +276,23 @@ msgstr "ブラックリストトークン" msgid "blacklisted tokens" msgstr "ブラックリストに載ったトークン" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "アクティブなアカウントが見つかりません" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "トークンのブラックリスト入り" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "無効なトークン" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "トークンにユーザー uuid クレームが存在しない" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "ユーザーが存在しない" @@ -418,5 +424,8 @@ msgstr "パスワードのリセットに成功しました!" msgid "account already activated!" msgstr "あなたはすでにアカウントを有効にしています..." +#~ msgid "recently viewed products" +#~ msgstr "最近見た製品" + #~ msgid "recently viwed" #~ msgstr "最近閲覧した記事" diff --git a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po index 40f548a3..c0b08311 100644 --- a/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po +++ b/vibes_auth/locale/kk_KZ/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "" @@ -26,7 +26,7 @@ msgstr "" msgid "order" msgstr "" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "" @@ -34,7 +34,7 @@ msgstr "" msgid "personal info" msgstr "" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "" @@ -98,88 +98,94 @@ msgstr "" msgid "reset a user's password by sending a reset password email" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "" -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "" @@ -272,23 +278,23 @@ msgstr "" msgid "blacklisted tokens" msgstr "" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "" diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo index c165e9b6fb75342f46c1c5566d659e3ca1ac7270..8a92ad390f52d365a0a9340d4e27926589c5f7b8 100644 GIT binary patch delta 1790 zcmXxkZA^_}9LMp0t#f)JDU_lliO>ksQ8|@R^0bIF=AmUP+L#opb~10Y);t`|W|~pn zd75TpS}!zjY-YVNS&YqWk{4xd%)<9qclXY9KL6|PKG${q|JQZ*)_cwC`xq6}Zd~QG zd9>j`GavT2_~LpRY?g-4Fd4sK9EOBUKA((h=;z{GJcG0G60XC$7>^$?5`W_i3=1`j z)>Lr>VcbZ^W$3{OtVB1~B6C^;Y9SXKAK*;-0~m$hF%kbd_Y)X&I{lTXTs9ydD{%Td z(XCWV3G~AQsLUF%39sW3oE>hKh4rYFcVi9qp(a>0&5Y2z$lO+px?hT3tZ?pkVi5iN zsBs?SV&=CO1j^(as>FYg(pVy+WaDa71}9M!sY5;Agv$I9s>F93dvOl^_o#)9ARim& zi=i!?^3K9o^raE3An;%r^0BLYX#uxUd-?=3@C|CBK$c&H38;ZCq88GDTJR&(0)IIE zL(Maj0}zARs7maKr2d*{KQ}Z$4KBlG)ByLK`@I-TzaLX@2vw0t9%4;42ajV4a=z>e zF2NhP82fNO4q;gU&oG(hITB6%R}i$ZibePw^%i_Wo$7Ja*~lPGLMy>cJcfGi7P1!W zL5_>PMpf*c(;vkG`s1iA$miA27VbhNu+K-J(jIiYjC`z*FAX$+>+vV*aHg}dx?hAE zr~;L7HEO`qsJG=DDzWpZ-#x@Se1+wh$3EzA`fd^^gF)0`{DE3&4fST*tO0eZTT!KM zN9}PJD&xi2C(0zP|1pi|k8D)C2Tn`{(S;vkm4 z0FzK#k&nvoDC)Ut)WRB36SU%T>_VN1e$+TQoLpIsIz#oCt&}?mNZQ_G4UVF=;4n|? zP}boAY(Y)<74`RDxE3QwQyCYaDs=*>veluUYr{N_0n}5U| zw45oVO g%AUmXaEreqI5nWS`(<#YyL)5AscGG><3e5k0q_Z?rT_o{ delta 1871 zcmXxlTWkzb9LMqhO1rB{Ra@KY7IkS=tHdqU7OU>pDy_OyBGf!o-CION7NO!64}+(Q zXowJzP^1VCgw#DDgcl-FLU__h@#6d2PRE}8{Lk#nod5ZsGj$^THXQko6m!xzs%ROs z_HJeod=|?WM{B?=7a!vgY{zs=>)v_&SR6;c4Ex~$?2Bix0B>Lje_|rW#hLZSbWGMz zxdc5pF&Xo44kq9>^y7YHOgn-~#Pz&~edvF~B>aa1F@cBa{7CGDQ&4j$MLt&H^;e-^ zQ*{V*<9gK0j^b{-fU7Yp-mDl8qB4Jg8}K!1fRdhOgtidL!KzT_9SmcgcfJ{8=-)*> z=RRgLzP%z)#(z*Hj^}PlW20~)PD9OL52_*!sOyiRW_|`$;%lBSFi8J9Dls4BB(z@0 z5EjBT%)v+sK?y-FR$?LUMLu?iFD3E>wYDE{40fOf%wrlgI1BZhtEhw?p%Q<3?ZP&XE|2s2QdbSdimR@8%z zqGs%(p4W(aYno6KyM(&$9d5^8xB?^VSP1RXho~9EQeSP#AS%;S$THeF)b75HD)l|o z8b3$Pum{;_Df^(?WvYz?+Dx}lGx~_yof%xU0mq@1 zq6xJ*TW}>lMGc(8^z?fXj>j_8%o|V@yMk2PT2R-$#0l7jX)5)A0i78Y;9&X{I2?DN zN_!S{<7GUA_feIaPZ@G?IcnhjNbYtU+1$}tLiAYF72sko);+!ww=K3fZXRJVZMr+$ zAM%yEGyG#~meOBFE2Pb(Rnp36+NNE{G=dehg)|jkY3fiK6Qfb*{{l;hXLpIz-8t^)z`#jWL@JqfSeT~u(@{#(=F%%c zRctwJGHnt~$5h&E_gG+T;tU8Z)4Yw?v{Qj&5h|DG5-MsiMBfc diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index ae96c71a..c0210954 100644 --- a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Saldo" @@ -22,7 +22,7 @@ msgstr "Saldo" msgid "order" msgstr "Bestel" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Bestellingen" @@ -30,7 +30,7 @@ msgstr "Bestellingen" msgid "personal info" msgstr "Persoonlijke info" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Rechten" @@ -96,90 +96,96 @@ msgstr "" "Het wachtwoord van een gebruiker opnieuw instellen door een e-mail met het " "wachtwoord opnieuw in te stellen" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Avatar uploaden voor een gebruiker afhandelen" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Bevestig het resetten van het wachtwoord van een gebruiker" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Wachtwoorden komen niet overeen" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Een gebruikersaccount activeren" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Activeringslink is ongeldig of account is al geactiveerd" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "De b64-gecodeerde uuid van de gebruiker die de nieuwe gebruiker naar ons " "heeft doorverwezen." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} bestaat niet: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Misvormde e-mail" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Misvormd telefoonnummer: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Ongeldig attribuutformaat: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Activeringslink is ongeldig!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Account is al geactiveerd..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Er ging iets mis: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token is invalid!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Recent bekeken producten" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Groepen" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Verlanglijst" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Attributen kunnen worden gebruikt om aangepaste gegevens op te slaan" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Taal is een van de {LANGUAGES} met standaard {LANGUAGE_CODE}" @@ -272,23 +278,23 @@ msgstr "Token op zwarte lijst" msgid "blacklisted tokens" msgstr "Tokens op de zwarte lijst" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Geen actieve account gevonden" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token op zwarte lijst" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Invalid token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Geen gebruiker uuid claim aanwezig in token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Gebruiker bestaat niet" @@ -419,5 +425,8 @@ msgstr "Wachtwoord is succesvol gereset!" msgid "account already activated!" msgstr "Je hebt de account al geactiveerd..." +#~ msgid "recently viewed products" +#~ msgstr "Recent bekeken producten" + #~ msgid "recently viwed" #~ msgstr "Onlangs bekeken" diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo index bfa5bb874f8cec0abffebcc82624cacd6f17f421..390c3944be7a4ee82ae694402876de636245bd1d 100644 GIT binary patch delta 1790 zcmYk+TS!z<6vpvo=$P6?v(&VlO3KnKvn+=3R%Z87N^3G-q=dADh%S)Ygb~z3NDfg% z5*9smArqmXy9hl5ArVnx_+XS>5Q(6YwEyRvpu_C>t$pUW_u6akV`IU?eE<6?q34aO zoHm2@b)1$Za56?l zn8j+UM1n|eEW&j3;3TX<7al_9v^rEGCmnBN4E?t_1;3yhN1Xe~3_6j1CTcBt$j4SY z{bF=!sbvKE!wS^O>ahVYU?onAGV|h5ROanii=C(mmP{}sw0vZ4+labfhWWVLxql5q z>EA+)a~J0^zda++N(N9R9!5%IZbr$$rKlAgKvm=j>iGuL%9~InzUuf03eaO*D@5t1%fh&}md6EvSU=pc4G% zIEtDlh650fIjBmMMpJ)Hw38bepcd2d1Zser&izN2K))O3;%8JvqIrm%EDrbKT;zP& zIh>D|a2|HzO#F<#5T0SOO!}3v)PFHSGg-{WXO8`-Q|)4TdMmuhBFu;Da4#y6He^hD zgM4g&FI8v+l}IA5!Wv9La<&@O7S&S#~Y}>YeOCCK0JfNsI5E2KIEc*kU)ndgIN!v2ep!$sFgiM9hz6DE$YKO z{Ek{-76(Lo>BTu%fSPzWCS$YHZ$s^UA8x>($h>|lBt0cij4IJCRH^slEUd>=Y(cHO z3-x>t>g;?(oq=H_CyS*1%P|GZu^g3nhvRcpVm-K0@BeQCK9<8q*Pstc&N@*Q=tT`Q zh|FOd*auBig|qOu;}uk5Pn_RhpvL)tML3F@r-<1#P9?g11oZ^zco|jd=ctTdV+DRf zt+2=)Jana~Q+*6IU@LN{#||otT_u6;u-LF{;)1}BFmHrP?xht5Jg%gWt${Mv((3K> zchEev^|UftF)fSs?^;E$leUGX9JB+vG;i)$6#O?|O00wa|D`uj*QUUbE8de&w0f)` zEZ;UK)@!torq@s9Q>p%45d`Z3E5qHn+JFT#)hUmrqoivyP49u;0m@*ir>>kJ?6BF| aKudUP$j0`r@G4h(;iRDn?IlTfL;nI9)~e(H delta 1871 zcmX}tPfS!-6vy#14Gd0oC=M3rjLP6Y5Lzi>+fe=t2v)5YY^Bt8nl_YqX{S(VU})=t zj2O{~5Mw4Z>B6wF8Z|Mg)GkVBgBU{_C3%)9s8 zbMMoM$kE#5Y#?pKXi@rF`urniNxYTL2W>jTtQfz;jW~}%%v-Ve`*PgD^#ObW2k>zm z#pm!EhVW0!LZ8pkU8xXDv^}yH@KSX-!OpxVm@Xv znC@>wKh~nw(un+7vwQtEdbL!CKo54HRyKrvcmZ2+^GdTyJb}u53O~RfP!rUxG9$Dm zBnOM4?mHO49{2tjrg1%i8s|E0VSc+qpp5@Pm3SpjQyMG9Dy&DX;0UTB$5Fo@My-4l zRpP6zw=sw72dKn6l#|f>$P^aBJS@WG8iG24Vr;<*>_`4=oDU`PJ!)@faXbEvny`dr z#Bn!joG(xb-9#mRAC+hh8!wAc^E{8a=wwlUm86dwn&>EMfKRamFQOj2=idJXmH9*5 zjM;pt%2XgZSp?g$5jk)6H5TC%Zoxlr9cDAhA&*&EfcihpjX`EF#c?da-(CGIOQ*XO z^>)ONMOi=Y!852tW{|NLjy|CUcm-6ULR2F4_yX=na<>#}E6*hfIA?Yl%kV4LUr{R! zvXLrTIc~$ZP%9WleqxtV15KhTG3|QW^)BkU8PwtSQTLO$3AJ^}D+JX9dCaE6(t_Ri z4r(R$P%C?YIz0cOw#dhUsKK?U6-H588N&@2M@>A0>v7z@oa4Sqg*pS9P^B;DgIui%pT+m^4ID)+;NgPozn_g& zhGDG32=blvoR4t5$f(IpJyl*iEQ;fT?0YiHK z2MILLdCbR2EWtTc$^G0^#zA}&pF*v45Ow%IL!It#QHlSI9whJO_VRLM_KF)ngPyw7 zPwADueT0?thSXMX$a65Y%Ud3Qjq5}73OYMwE%XEQ?ewKqPoP>f(Up=mMono{Ekuj| z3%p9a+r3^wFQ(c{sX1?MMJ~R|R_#t%=TfSGeoljvE89)=p>f`}V})F<\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Równowaga" @@ -22,7 +22,7 @@ msgstr "Równowaga" msgid "order" msgstr "Zamówienie" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Zamówienia" @@ -30,7 +30,7 @@ msgstr "Zamówienia" msgid "personal info" msgstr "Informacje osobiste" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Uprawnienia" @@ -96,90 +96,96 @@ msgstr "" "Zresetowanie hasła użytkownika poprzez wysłanie wiadomości e-mail " "resetującej hasło." -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Obsługa przesyłania awatara dla użytkownika" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Potwierdzenie zresetowania hasła użytkownika" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Hasła nie są zgodne" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Aktywacja konta użytkownika" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Link aktywacyjny jest nieprawidłowy lub konto zostało już aktywowane." -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Zakodowany w b64 identyfikator uuid użytkownika, który polecił nam nowego " "użytkownika." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nie istnieje: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Zniekształcona wiadomość e-mail" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Zniekształcony numer telefonu: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Nieprawidłowy format atrybutu: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Link aktywacyjny jest nieprawidłowy!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Konto zostało już aktywowane..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Coś poszło nie tak: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token jest nieprawidłowy!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Ostatnio oglądane produkty" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Grupy" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Lista życzeń" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Awatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Atrybuty mogą być używane do przechowywania niestandardowych danych" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Język jest jednym z {LANGUAGES} z domyślnym {LANGUAGE_CODE}." @@ -272,23 +278,23 @@ msgstr "Token na czarnej liście" msgid "blacklisted tokens" msgstr "Tokeny znajdujące się na czarnej liście" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Nie znaleziono aktywnego konta" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token na czarnej liście" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Nieprawidłowy token" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Brak oświadczenia uuid użytkownika w tokenie" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Użytkownik nie istnieje" @@ -419,5 +425,8 @@ msgstr "Hasło zostało pomyślnie zresetowane!" msgid "account already activated!" msgstr "Konto zostało już aktywowane..." +#~ msgid "recently viewed products" +#~ msgstr "Ostatnio oglądane produkty" + #~ msgid "recently viwed" #~ msgstr "Ostatnio oglądane" diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo index cb9bbfe32c7cb819d122933c3407aff4fa8d3f03..639d56e6142cc2e8dcc57e21b84a60e5322a415e 100644 GIT binary patch delta 1790 zcmYk*Sx8h-9LMp$qGPF^78ODZ z_0&d#VGtHY3lWq=4;A^84`n^{&}!TFH{PJbJ@@lJckZ0!f6o2kx#IEl3=3;BN*#49 z^+Twc4{wEYqjW}?W#Uat#kZJBSQJjlk$=*Adahc4WLjA^@36FJ~`1>BV;z2I+I_-t% z(o(Al^v9K`mF>Z1Jc0F?5M@?`+fg$QU=!X$4UiXYMrftT*j9;pUX7)=#(91o!)RYd z^>ZE58Q<;_XeIAZDegy7V=44fj0LC_Y(!;b8|wXL)XG~>DL&`eg(GOcLQU)wa@j9# zbZt?jcQ}qhUnW5ofg5X)%Z_r>1kR%Nv;*_;DQcilrr&_csE!V!Cen_Y@HNx~KRW(F zjT6TK7>UKGOe~Eh{~BmH57a>uPR6~c4lX&*yKofkZcM}XsEow&5_7T<*obM!`Lb4= zh^H_e?_mmkth-HYnrBP!K@Fau-R4}BHW zQCqYUHK84-4iBO-avHhpDmP{9G0w-Is0CHihQ-sG}}ijxSJKki$mm zP`_a@xm{SM3I-))G7?D8#R*l;)5( z4eZACScS?+2Wp@PsLb@CRvgbL9O_`F5G;%Q-Qn@!(}-vIKZh3$t{^I+migVTF(Hfn z)vkhu8rsXKZt6U0HFY61pZc%NB2ZEmP__L^fC@PZZmVL=eJORe8vhl2fhtx0Pp*;f zQX*}<3TMNX1fzlPc?$73s`gc>{#TTZx&E0EDJ6A8lc+k=9xA6aShU0X4s`aFY~@p> fc!1!?H^<)|kr7fExF5036)1~oiw^WB`ojJK17D}J delta 1878 zcmYk*e@NVQ9LMqZ$?a}#dM$OQX?3%lI&W>$C3cyorlwm>ZF9C}ATqzOBX!}Aq(m-b z_FD+9#2^?o*pQ*Hj{RfkA6vvWVnHKl|7>g!%dwz87Nq;5p0D#O^x;0=$NT%y@8`$+ z^ZCq2SEKQpS>7*=(nWoo`XJ3Ljz4YSLAmTVE5j@JG(Nz5%-gv3|9kOS-rMmpoW!ko z3ajt}7T}+_1=G{b9>ILf)=*^xn`nq)824cSN6?2SkumL4)I<`lOZX`7%b0}^F@ym+ zQ~NH=#5&YkT9Kc1xbNNQ(^4G*eb|Ru*=IP8XR!yjZ#JvO4^cC}g#CCOH9&oa8KJcy zbFeN{yMwhjN1JwUdp;mqh zmE!MQuVIk)d#H(dNGG9XB12dK=3yzua|r4Q%CHk7ID!1^dmfs|Rn*?z#0vZeHDH)! z#IPCF&w12@end_D25O=~HeQyZ#(5rd(b+=&m6CB9G|>B~4yG}Tv#1Y$b=&WvX1BOZ;40`$gs~ngQ4<}-)KzE&~hw7?QJIy4cL$BXacpzAE7cb?Y4i7%H(O(7XFNbxQv|`e}j$CUL}$2*k3q- zX)J^7vy-Tfzd%j&Tht2XQQs}1R=A2vxtCGYPbTid5I%{mScCn@*me#Zb^k9CXa#=q zt$Q9obr3|Qx)e(=g1Q|&s4bdAP3Rj`hjXZm{D9h$-;kd@OI4J6`5tWe`s=q-D;m7zK z&gxzF{|*7)S{ixM3PV_h4XD(Pp$4AB<2ZxLjECMdP!=jfRj3trBZoWHC#1@&>j55g z<4W|@Cw|{ho&GXmHMKFZ!&l%rlxXtpjlIVE5o(0GpV~=nr&dtcO9R1CY8zFjLitc3 zg{jk_SW7ufZPv^GiY}(gfy8ZJZlsP#SykaESw|{byXHHI3#r=fm)v%t#d6C+ZnDUo+UP)f?JHFsCXJEMRoo#Q&oKdHD v+gpPtdPj~84<&O0GZ}^LdK*45#9xO-dirAT_Vn^H=;#}#pGR^of5Q78A?UYa diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po index 1bc0c34e..b5fd3757 100644 --- a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Equilíbrio" @@ -22,7 +22,7 @@ msgstr "Equilíbrio" msgid "order" msgstr "Pedido" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Pedidos" @@ -30,7 +30,7 @@ msgstr "Pedidos" msgid "personal info" msgstr "Informações pessoais" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permissões" @@ -95,88 +95,94 @@ msgid "reset a user's password by sending a reset password email" msgstr "" "Redefinir a senha de um usuário enviando um e-mail de redefinição de senha" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Manipular o upload do avatar de um usuário" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confirmar a redefinição de senha de um usuário" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "As senhas não correspondem" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Ativar a conta de um usuário" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "O link de ativação é inválido ou a conta já está ativada" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "O uuid codificado em b64 do usuário que nos indicou o novo usuário." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} não existe: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "E-mail malformado" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Número de telefone malformado: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Formato de atributo inválido: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "O link de ativação é inválido!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "A conta já foi ativada..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Algo deu errado: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "O token é inválido!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Produtos visualizados recentemente" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Grupos" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Lista de desejos" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Os atributos podem ser usados para armazenar dados personalizados" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "O idioma é um dos {LANGUAGES} com o padrão {LANGUAGE_CODE}" @@ -269,23 +275,23 @@ msgstr "Token na lista negra" msgid "blacklisted tokens" msgstr "Tokens na lista negra" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Nenhuma conta ativa encontrada" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token na lista negra" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Token inválido" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "Nenhuma reivindicação de uuid de usuário presente no token" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "O usuário não existe" @@ -416,5 +422,8 @@ msgstr "A senha foi redefinida com sucesso!" msgid "account already activated!" msgstr "Você já ativou a conta..." +#~ msgid "recently viewed products" +#~ msgstr "Produtos visualizados recentemente" + #~ msgid "recently viwed" #~ msgstr "Visualizado recentemente" diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo index 0dc47427a1ab5c6aeb2c03e530b2627bf788ab0e..44471b31e3ac807ba46af2c09b8a313083cdb397 100644 GIT binary patch delta 1790 zcmYk+YfQ~?9LMo*>6|W8i3YkJ@^Lx(kE7ENbnv&D!F zlbL37TMxtoo6UM+VtS${k(mb`nCtsff9ALIJFnmGzkk2q_xt_*PS;CEN_@l7LFbIN znVv`=3pDfLV;5hv`@v>e_yA|)2*zVb$i(}zaS8JhoQeA|7CSK)uVDhd!$|ywQ!y;m zEJjJA?|P-SIX?F(1Nc{D>a>&io6e7Z~(QzqA6w!tr*$cR-v9ZU@>lYp7&r7 z^Ip_CcQKv)?Fj>AGKwnkcce7tVU+^RL1oa2s>puS`$tfjccMys#jzi!Gk=2$>aGl0ldRz+NUXo`s? ziVE-*>JEKI1ro*|6=DqP2-cyFa2x8b?DR3nVbJP$6?Jy6Q44;?`53}O9mO)#^IFtG z&B$KXiYn=G)UV|f>PWj#m-_`?!ZB>e4$h$leUYrj@z_>8fi0*=zoJSziCy_2STyP~ zC808!gUWmtYU6{*saPATw4JDpA7K%`b>{JurlQX!umXP`{ZAl0^WsD*A|GCssv zIE2JxKTrY1a$Xe2Qc!^`L!EUc=HVW!!<(q}emX|*Urz6Nut2~63I?oc?bwDFQMWXS zi=a!n6cuqLl7#t@Dq1gk@hN8DFH~UZM6JJHgsE7Cxwsp3d3#XnJjcvN2Jf90rcf`H zxE!@XEgr*Ns0>F@3w%f2?$nftg{m=tIdT7Mwf;d@jB6?L68~3Mey9@2r*D`y%NcBz%POnnzcul>G|&-=?2PrN1=TQ@EMY9J;Pn5nTmVTTR#PanUJ@sh(;D e6Idy(^mhkm1gz?N7QDmVR~C^S-q(?k==uXN^r86x delta 1871 zcmYk+S!_&E9LMqhNIRow(b86H8Dz9tOR7Xhbs1GvOI2;94^30|q14)zvBlQL}$7_0TZzVwU$ccV~gE( z9eTA?hd>WDp;p#`TksUtW1z2D0q#Z3{1&dkC#V5J{mck$0Wt@xMO}BW7@OVeQH-N~ z9o5fG9K-nbm_RfBiAr%_o+dRm5vOA*Y6aU+8QFunzZ13cE>wyyx<0~G+8zL zOGJjSOiagY3=bj*5#-=f4B~d=W7qi7MDC;Z_61JDAE*IySw(KkIGCCnUfXcYOF-g zn_b0hyoF=%6Ar@^2C4Cwv zBgmL`0+rEosJAAH+R|&NL;fARa4`AbiQ#U7c?3a5VY_S(?#1J%nGR<(rFIEBzBD-U!P?^1g8u$$sVH{~uyA{cj*piq4@{av90K-9UBp7>DC) z9EH8uA7vzfnotpvEUQ3Gqz<{&HlX&r1E*mWtMLn}-w^+HI)7G8pc@-dd%7Rh!5!R+ zuTZD8o&%x7*@n#AI*>)#GbF3_6@%ED*=FGk)C53Dz7TTqO8&O!Ba5INkjzjKI{h5rIn7F4ECJ)y|k_=1GF zgay=@k+I%P&!R|~H@|Ti?Ha1qr1dVPR#Ejn{41pdE2s;oIwjf&6>=QQrD82*3AJ2} z|B9xpGC%Utn-(k~DpQl9?Ohy;dKNg2Sec8RJNLTKi&GKF^NlF1B^pcBi7Te2QB^9b zI#l|TAZxaqT0||Rs?4Cyj&%C6JoBR6KF6Ed;H+(FYV&VubT&IH{p&ZbTiM#s(i}}o g%1g|sQmfhF$M)9xrpEUA7RSHQ(G$_~%wh3=0Y*o)J^%m! diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index c0ddac3b..0a52db47 100644 --- a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Echilibru" @@ -22,7 +22,7 @@ msgstr "Echilibru" msgid "order" msgstr "Comandă" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Ordine" @@ -30,7 +30,7 @@ msgstr "Ordine" msgid "personal info" msgstr "Informații personale" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Permisiuni" @@ -97,89 +97,95 @@ msgstr "" "Resetați parola unui utilizator prin trimiterea unui e-mail de resetare a " "parolei" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Gestionarea încărcării avatarului pentru un utilizator" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Confirmați resetarea parolei unui utilizator" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Parolele nu se potrivesc" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Activați contul unui utilizator" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Linkul de activare este invalid sau contul este deja activat" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "Uuid codificat b64 al utilizatorului care ne-a recomandat noul utilizator." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} nu există: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "E-mail malformat" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Număr de telefon malformat: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Format de atribut invalid: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Linkul de activare este invalid!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Contul a fost deja activat..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Ceva nu a mers bine: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Token-ul nu este valabil!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Produse vizualizate recent" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Grupuri" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Lista dorințelor" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Avatar" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Atributele pot fi utilizate pentru a stoca date personalizate" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Limba este una dintre {LANGUAGES} cu {LANGUAGE_CODE} implicit" @@ -272,23 +278,23 @@ msgstr "Token pe lista neagră" msgid "blacklisted tokens" msgstr "Jetoane pe lista neagră" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Nu s-a găsit niciun cont activ" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Token pe lista neagră" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Jeton invalid" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "În jeton nu este prezentă nicio cerere uuid a utilizatorului" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Utilizatorul nu există" @@ -420,5 +426,8 @@ msgstr "Parola a fost resetată cu succes!" msgid "account already activated!" msgstr "Ați activat deja contul..." +#~ msgid "recently viewed products" +#~ msgstr "Produse vizualizate recent" + #~ msgid "recently viwed" #~ msgstr "Văzut recent" diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo index 38d47db071f55b990cfa6e5e1554f4fa0f6c5230..1600c9cb74d42164127e7f8c38051a9ac3b0e19f 100644 GIT binary patch delta 1790 zcmX}sZD`e17y$4yad&TJdsWliw52OISL!n6HaFW$Yvx<7rWLe8Vuj#`%%JoZMic~+ z7ZWO>5``jHw2F$dmlZ@G3c*DM^{L2~eK4>WhSu-dt{v{VzjMz1JLfsiIsg0C#*-Ve zKUPjXkd&?JW$NiEDP{RVp)cj#qLdc$J=XIl&SG)#=8f$YsY#0vfISjpd5$MgB|T9aO^e+^?V zE9jGY^8NM9#8&$>;ver|?CcTl=0OgyrYxm4?qWnf%1;~fWPPcm$6QT3owK2j7)4Um;YF3i-DM6I~(~ZV}jT6#{L4&SZs~{K$ZOWYP>3nZvM%ux!ks5{64PcJ8b58?&2a> zyoX2Fz%ednrMzFx9*QyD%RPLE@pk>iID%?v2!v@!Y=Z+8d>Z2W{ETtNS>eW!JkLn+ z5MxIlavi_QkI#|U_NUgQdnvb|rU z+7-Ps9$-xHI&CI>!B=>SvBUkMTFW8EB^_r3)aa{#PUQcxA$Ov%s_0o5(Hnml~QSDRLs}cN#a=peDH8v2(T%$&bcseFplRxvDwQtDx zFA%XsS(`hPnbF#*)icqb+-2PMD6%kdF=T(@*J@P^=1U3JfE8ChJxPV&x^KYhP$VYR}Al*+gbb{KhCdY delta 1898 zcmYk+Urdu%7{~FaMv6?WKsRurQe^^y(IB8gt$?T?L&OQFYs_Y#7ev%WQL_tI#D9rk zVr(?=Vj;_xsLL({?2Q{N(QVnx;@-}w@kX;`bJ5J3#Z2AepYM;p8c%xqIqzxvp65Kz zdHY-Qg>})}nd46yEli(Ie>l!8ia)3DM*A_t=i#58+!l zfQvDXIrsq6F)ht(3Qj}6mMUWK1{2G$7+0eYccT{%B5PV7Dv+4#C}wbd4>R$9%taqJ z)BJp#jMb>UG$Ai*aj!o>ueKUtpdWUjcGi#k@CPz%&dGGl0K zkr*tDnvY-=?sDgcaXi-}sQX;PeAc&L87Sf>s1#4+*QCZ4;8Ltb?Vtyhk;AC(A4BbY z0F~k)*Q=Pt^?g)e9@5FsCL>E&4o<~FjK0aBhCvawVFm6-UiLL_3gil^wzqL1K1MBA z%r-i)4t1YFR6swV0>6a{G>gK^Lex5yn2nKi@~@QaV?qn{qHb^si}4)lhu7Wtzfh6? zhjY-+hssO^5|dToR%}Afn_a|0yo~wyH_kvmi){3mm1L6tdM1vt`nz}yYcZGYEWmcu zd<^UG4$j8{j`&_|!xeZH3(!yAOE8GDaT^k=9mh}bGt^TSVEZaXDC!Ox@I59r;ClQL zb;D;E!hE*920L&O4xv83hqEw)`si$wqHbL2T8FxC3o7t4cpY!x=NSEpBY&7dGX-T6 zb`vk+15}OA60S<}9V*2)Q9HVeP58*2UqxQ^c`K?k9jMG4#cKQo!acZV8xG(}{1-{8 z_4A_{dj7v)pqgJo?Z`{v=3*;e!6+)#4SC7Ob0_w5eF}BB@`y$yX~Yll09N83NOdfi zbSUs8xDvOb))~Yy)*m~X%b=Vix)i%{GY+C|Foo6GoE73ZtViwiA8bS)QRuLSQ33Vw z=0Pg+s;zr9N}dN@meV~ou|HFSX*%OU`ij_GZ;oeuY^Arfa|72K=@s+_x{}yT*Ir(> zS_bda*V0veogg)Zr>&?hrnl1Tbn#kKsA_9szk9PQsu?LeYT9(m*eH3HbY3XV*q_-d zcV6hIH8&Jyq?#4etLQ4Q+E_g?g{~BCqAS%Qy4rGjee76jfv0geo*MCHwMVvh zcYPe#(;3+t=?HwZb4SPS_U>K7*}i8P<)1on=Yn(I8FEIP(SY-9qQ@Cc?03H5y_a#E a>5)XA6AvVMol(AZKGBot8}\n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "Баланс" @@ -22,7 +22,7 @@ msgstr "Баланс" msgid "order" msgstr "Заказать" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "Заказы" @@ -30,7 +30,7 @@ msgstr "Заказы" msgid "personal info" msgstr "Личная информация" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "Разрешения" @@ -96,90 +96,96 @@ msgstr "" "Сброс пароля пользователя путем отправки электронного сообщения о сбросе " "пароля" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "Обработка загрузки аватара для пользователя" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "Подтверждение сброса пароля пользователя" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "Пароли не совпадают" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "Активация учетной записи пользователя" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "Ссылка на активацию недействительна или аккаунт уже активирован" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" "b64-кодированный uuid пользователя, который направил к нам нового " "пользователя." -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} не существует: {uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "Некорректное письмо" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "Некорректный номер телефона: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "Недопустимый формат атрибута: {attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "Ссылка на активацию недействительна!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "Аккаунт уже активирован..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "Что-то пошло не так: {e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "Токен недействителен!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "Недавно просмотренные товары" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "Группы" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "Список желаний" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "Аватар" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "Атрибуты могут использоваться для хранения пользовательских данных" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "Язык - один из {LANGUAGES}, по умолчанию {LANGUAGE_CODE}." @@ -272,23 +278,23 @@ msgstr "Токен в черном списке" msgid "blacklisted tokens" msgstr "Токены, внесенные в черный список" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "Активная учетная запись не найдена" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "Токен занесен в черный список" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "Неверный токен" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "В токене отсутствует утверждение uuid пользователя" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "Пользователь не существует" @@ -421,5 +427,8 @@ msgstr "Пароль был успешно сброшен!" msgid "account already activated!" msgstr "Вы уже активировали учетную запись..." +#~ msgid "recently viewed products" +#~ msgstr "Недавно просмотренные товары" + #~ msgid "recently viwed" #~ msgstr "Недавно просмотренные" diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo index 557741b8dbac441c09c7abd1b7f5c780e2441c3b..f0e32b0bfb9eaec08f77fdfedc4fc20dce51695a 100644 GIT binary patch delta 1790 zcmXxkX-Jeo9LMpobiFFCv^-KOkFr}cTW`~{wA4yV%{QUag-}olm8?)i^~P)~p)lwq zq9m0-Aq*1V_(tp?DvE-7(VZ`P5s~%%?T!!6JfHc`&d&U2cAo9Y`r&lF4fnlZxaufz zl&@2aap6Nh9$fwY#-!o^&c_cJg8>2F{_}AqaREl-A&kU!%*2}*i*GO#e`5#+1sW5f zsbZ)E(XbR3p%Z6d6FTr9GN(C;O60h;8^efSVmN-m1e~z#@eDehcsXh8U_WX{4x{?FqE_CH+Tv^0L5w1Pg-UE3xy@f5 z3~hqh-kCTXU8z)-P;p`na+`BJl)zQgZ~6e!a1=Gs6w=>=@u-1Lp%UprC43*1;5X|( z)I4DvfLWM>+KH-A_Fog#(x3sFaS^tm2Doe62XQv>7$)Io)Q*JGiJVLn?!zSHe3=eh zfR`{Chj0#l#yTJRFqy__h+zK{shlPYt*jfB$Ox{$H#QDoncBK}sQ$}Pr@YFx@3pp| zzJCJsQ+1;HU$OBJ>Wqxo_?e4J1`V&RVT{UdnG)-E)XI0+xDA!aS!)++qC3_eYd>m1 zk5DUrjh*-#>#>6avInQK%I! zMCLN(I2RjH3p3g;jZ>KmZ8z|M33X0~Kyw*^u zr6>=*Y5GZZDc@XA&HFcBMSY!(C(#?IYomMIG0UmH!eUSC-IlGkuJ>>;MTbQHR%E9rMqW#pBAZ?3|7xkhO`u^4l8g};cpJ(Tp`OiG_>=*Cl{J`t@h+~FQ zLG4fd*2S0rK91yz@*v8XOnit#@Eay$ziyrV$Kp8J^DzncVP8Chx!8m$_z8PqbhI%& zF&PsyRVG1qE=~a&72_C8*GFLwoPt_QDe^Ik zZF?oUwNyWWZrp%cSv}TZBd)?>F~$_&0aWI9a3elPO;8wX4568agR>6R`-jf?Cv$>__!)K&|`?YKyN}pI{>G52(ak zY$u`VflOgiupee%pbtSIK_)ImFYZA;<{Dp0idRr8dx1*iD`umc<*A*A+QJf4|7EDt zUSqF2*0ZSo7g3Mw7OMY!+y00;D_^z$>hK50V+5ngd}Q~`7HchP=F$F+nmC*6 zWFD%Y54GZj$lRtH2VnzhVV96I5-=?Uy79NQD<@4Ix}y?GMh%#bbTRq%_eH4tDpCE` zS*ua~>QLjH#&o=hT4*b(e=P5Mtls}50^N{?Y3M_qhFOF2aX0FQ$JRD1pxuF*U@-fu z`*Uz4mY@>eg-Wm<)z3loJBK>l*HP!sgzOK$bb)rC{+-V(9W_7^DuLNpie01 zaSV1Ki!&Y`G>1Fa?0ujs{8nd`i9d%RPKrmIQOE-em6 zop0v|Vx65B>I{2b=v>ZnvZGQbRS*rQYF~X+4rRD#yR?P+lSrkOQzug=QB|f=XF3g0 z>8?4!rYOHVvC_Y3`-WWucUJkU{i_FV*}8f4j>_%Zf}Xf(F`kZ7wV{@y9ZiQrjR!+5 T2i~2md)wUD?gYz|j(7bF3aYwt diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index dd7fea4f..7da68893 100644 --- a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-20 06:26+0100\n" +"POT-Creation-Date: 2025-05-27 13:42+0100\n" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" @@ -14,7 +14,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: vibes_auth/admin.py:36 vibes_auth/admin.py:37 -#: vibes_auth/graphene/object_types.py:35 +#: vibes_auth/graphene/object_types.py:45 msgid "balance" msgstr "平衡" @@ -22,7 +22,7 @@ msgstr "平衡" msgid "order" msgstr "订购" -#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:33 +#: vibes_auth/admin.py:45 vibes_auth/graphene/object_types.py:43 msgid "orders" msgstr "订单" @@ -30,7 +30,7 @@ msgstr "订单" msgid "personal info" msgstr "个人信息" -#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:32 +#: vibes_auth/admin.py:58 vibes_auth/graphene/object_types.py:42 msgid "permissions" msgstr "权限" @@ -94,88 +94,94 @@ msgstr "删除用户" msgid "reset a user's password by sending a reset password email" msgstr "通过发送重置密码电子邮件重置用户密码" -#: vibes_auth/docs/drf/viewsets.py:40 +#: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" msgstr "处理用户的头像上传" -#: vibes_auth/docs/drf/viewsets.py:49 +#: vibes_auth/docs/drf/viewsets.py:46 msgid "confirm a user's password reset" msgstr "确认用户密码重置" -#: vibes_auth/docs/drf/viewsets.py:53 vibes_auth/graphene/mutations.py:305 +#: vibes_auth/docs/drf/viewsets.py:50 vibes_auth/graphene/mutations.py:306 #: vibes_auth/viewsets.py:72 msgid "passwords do not match" msgstr "密码不匹配" -#: vibes_auth/docs/drf/viewsets.py:58 +#: vibes_auth/docs/drf/viewsets.py:55 msgid "activate a user's account" msgstr "激活用户帐户" -#: vibes_auth/docs/drf/viewsets.py:62 +#: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" msgstr "激活链接无效或账户已激活" -#: vibes_auth/graphene/mutations.py:40 +#: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "将新用户推荐给我们的用户的 b64-encoded uuid。" -#: vibes_auth/graphene/mutations.py:103 +#: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 +msgid "password too weak" +msgstr "" + +#: vibes_auth/graphene/mutations.py:106 #, python-brace-format msgid "{name} does not exist: {uuid}" msgstr "{name} 不存在:{uuid}" -#: vibes_auth/graphene/mutations.py:111 +#: vibes_auth/graphene/mutations.py:114 msgid "malformed email" msgstr "畸形电子邮件" -#: vibes_auth/graphene/mutations.py:116 +#: vibes_auth/graphene/mutations.py:119 #, python-brace-format msgid "malformed phone number: {phone_number}" msgstr "畸形电话号码: {phone_number}" -#: vibes_auth/graphene/mutations.py:134 +#: vibes_auth/graphene/mutations.py:141 #, python-brace-format msgid "Invalid attribute format: {attribute_pair}" msgstr "属性格式无效:{attribute_pair}" -#: vibes_auth/graphene/mutations.py:261 vibes_auth/viewsets.py:107 +#: vibes_auth/graphene/mutations.py:262 vibes_auth/viewsets.py:107 #: vibes_auth/viewsets.py:123 msgid "activation link is invalid!" msgstr "激活链接无效!" -#: vibes_auth/graphene/mutations.py:264 +#: vibes_auth/graphene/mutations.py:265 msgid "account already activated..." msgstr "帐户已激活..." -#: vibes_auth/graphene/mutations.py:271 vibes_auth/graphene/mutations.py:321 +#: vibes_auth/graphene/mutations.py:272 vibes_auth/graphene/mutations.py:322 msgid "something went wrong: {e!s}" msgstr "出了问题:{e!s}" -#: vibes_auth/graphene/mutations.py:312 vibes_auth/viewsets.py:81 +#: vibes_auth/graphene/mutations.py:313 vibes_auth/viewsets.py:81 msgid "token is invalid!" msgstr "令牌无效!" -#: vibes_auth/graphene/object_types.py:30 -msgid "recently viewed products" -msgstr "最近浏览过的产品" +#: vibes_auth/graphene/object_types.py:39 +msgid "" +"the products this user has viewed most recently (max 48), in reverse‐" +"chronological order" +msgstr "" -#: vibes_auth/graphene/object_types.py:31 vibes_auth/models.py:108 +#: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" msgstr "组别" -#: vibes_auth/graphene/object_types.py:34 +#: vibes_auth/graphene/object_types.py:44 msgid "wishlist" msgstr "愿望清单" -#: vibes_auth/graphene/object_types.py:36 vibes_auth/models.py:49 +#: vibes_auth/graphene/object_types.py:46 vibes_auth/models.py:49 msgid "avatar" msgstr "阿凡达" -#: vibes_auth/graphene/object_types.py:37 +#: vibes_auth/graphene/object_types.py:47 msgid "attributes may be used to store custom data" msgstr "属性可用于存储自定义数据" -#: vibes_auth/graphene/object_types.py:38 +#: vibes_auth/graphene/object_types.py:48 #, python-brace-format msgid "language is one of the {LANGUAGES} with default {LANGUAGE_CODE}" msgstr "语言是{LANGUAGES}之一,默认为{LANGUAGE_CODE}。" @@ -268,23 +274,23 @@ msgstr "黑名单令牌" msgid "blacklisted tokens" msgstr "黑名单令牌" -#: vibes_auth/serializers.py:92 vibes_auth/serializers.py:114 +#: vibes_auth/serializers.py:105 vibes_auth/serializers.py:127 msgid "no active account" msgstr "未找到活动账户" -#: vibes_auth/serializers.py:185 +#: vibes_auth/serializers.py:198 msgid "token_blacklisted" msgstr "令牌被列入黑名单" -#: vibes_auth/serializers.py:190 +#: vibes_auth/serializers.py:203 msgid "invalid token" msgstr "无效令牌" -#: vibes_auth/serializers.py:196 +#: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" msgstr "令牌中没有用户 uuid 声明" -#: vibes_auth/serializers.py:198 +#: vibes_auth/serializers.py:211 msgid "user does not exist" msgstr "用户不存在" @@ -408,5 +414,8 @@ msgstr "密码已重置成功!" msgid "account already activated!" msgstr "您已经激活了账户..." +#~ msgid "recently viewed products" +#~ msgstr "最近浏览过的产品" + #~ msgid "recently viwed" #~ msgstr "最近浏览" From ef5cecedda3b7ffa1baca205cb0e3e9815a4a2a4 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 27 May 2025 16:00:32 +0300 Subject: [PATCH 06/15] Features: 1) Updated localization file for Czech language (cs_CZ) with extended translations and modifications; Fixes: None; Extra: 1) Binary format changes observed in django.mo file, potentially related to recompiled translations; --- core/locale/ar_AR/LC_MESSAGES/django.mo | Bin 48180 -> 48767 bytes core/locale/ar_AR/LC_MESSAGES/django.po | 100 ++++++----- core/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 41870 -> 42364 bytes core/locale/cs_CZ/LC_MESSAGES/django.po | 90 +++++----- core/locale/da_DK/LC_MESSAGES/django.mo | Bin 40534 -> 41033 bytes core/locale/da_DK/LC_MESSAGES/django.po | 106 ++++++------ core/locale/de_DE/LC_MESSAGES/django.mo | Bin 42806 -> 43301 bytes core/locale/de_DE/LC_MESSAGES/django.po | 125 +++++++------- core/locale/en_GB/LC_MESSAGES/django.mo | Bin 39125 -> 39613 bytes core/locale/en_GB/LC_MESSAGES/django.po | 89 +++++----- core/locale/en_US/LC_MESSAGES/django.mo | Bin 39124 -> 39612 bytes core/locale/en_US/LC_MESSAGES/django.po | 88 +++++----- core/locale/es_ES/LC_MESSAGES/django.mo | Bin 41970 -> 42471 bytes core/locale/es_ES/LC_MESSAGES/django.po | 103 ++++++------ core/locale/fr_FR/LC_MESSAGES/django.mo | Bin 42991 -> 43493 bytes core/locale/fr_FR/LC_MESSAGES/django.po | 119 +++++++------ core/locale/it_IT/LC_MESSAGES/django.mo | Bin 42355 -> 42851 bytes core/locale/it_IT/LC_MESSAGES/django.po | 130 +++++++-------- core/locale/ja_JP/LC_MESSAGES/django.mo | Bin 43451 -> 43942 bytes core/locale/ja_JP/LC_MESSAGES/django.po | 157 +++++++----------- core/locale/nl_NL/LC_MESSAGES/django.mo | Bin 41629 -> 42128 bytes core/locale/nl_NL/LC_MESSAGES/django.po | 99 ++++++----- core/locale/pl_PL/LC_MESSAGES/django.mo | Bin 41825 -> 42317 bytes core/locale/pl_PL/LC_MESSAGES/django.po | 92 +++++----- core/locale/pt_BR/LC_MESSAGES/django.mo | Bin 41927 -> 42424 bytes core/locale/pt_BR/LC_MESSAGES/django.po | 93 +++++------ core/locale/ro_RO/LC_MESSAGES/django.mo | Bin 42395 -> 42892 bytes core/locale/ro_RO/LC_MESSAGES/django.po | 107 ++++++------ core/locale/ru_RU/LC_MESSAGES/django.mo | Bin 54009 -> 54556 bytes core/locale/ru_RU/LC_MESSAGES/django.po | 102 ++++++------ core/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 37492 -> 37975 bytes core/locale/zh_Hans/LC_MESSAGES/django.po | 82 ++++----- vibes_auth/locale/ar_AR/LC_MESSAGES/django.mo | Bin 9637 -> 9951 bytes vibes_auth/locale/ar_AR/LC_MESSAGES/django.po | 19 +-- vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo | Bin 8002 -> 8271 bytes vibes_auth/locale/cs_CZ/LC_MESSAGES/django.po | 19 +-- vibes_auth/locale/da_DK/LC_MESSAGES/django.mo | Bin 7878 -> 8141 bytes vibes_auth/locale/da_DK/LC_MESSAGES/django.po | 19 +-- vibes_auth/locale/de_DE/LC_MESSAGES/django.mo | Bin 8429 -> 8712 bytes vibes_auth/locale/de_DE/LC_MESSAGES/django.po | 27 ++- vibes_auth/locale/en_GB/LC_MESSAGES/django.mo | Bin 7716 -> 7913 bytes vibes_auth/locale/en_GB/LC_MESSAGES/django.po | 6 +- vibes_auth/locale/en_US/LC_MESSAGES/django.mo | Bin 7646 -> 7902 bytes vibes_auth/locale/en_US/LC_MESSAGES/django.po | 16 +- vibes_auth/locale/es_ES/LC_MESSAGES/django.mo | Bin 8197 -> 8475 bytes vibes_auth/locale/es_ES/LC_MESSAGES/django.po | 16 +- vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo | Bin 8591 -> 8872 bytes vibes_auth/locale/fr_FR/LC_MESSAGES/django.po | 29 ++-- vibes_auth/locale/it_IT/LC_MESSAGES/django.mo | Bin 8186 -> 8458 bytes vibes_auth/locale/it_IT/LC_MESSAGES/django.po | 16 +- vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo | Bin 9163 -> 9428 bytes vibes_auth/locale/ja_JP/LC_MESSAGES/django.po | 39 ++--- vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo | Bin 8084 -> 8356 bytes vibes_auth/locale/nl_NL/LC_MESSAGES/django.po | 24 ++- vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo | Bin 8125 -> 8401 bytes vibes_auth/locale/pl_PL/LC_MESSAGES/django.po | 23 ++- vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo | Bin 7982 -> 8253 bytes vibes_auth/locale/pt_BR/LC_MESSAGES/django.po | 20 +-- vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo | Bin 8292 -> 8567 bytes vibes_auth/locale/ro_RO/LC_MESSAGES/django.po | 19 +-- vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo | Bin 10324 -> 10720 bytes vibes_auth/locale/ru_RU/LC_MESSAGES/django.po | 19 +-- .../locale/zh_Hans/LC_MESSAGES/django.mo | Bin 7407 -> 7635 bytes .../locale/zh_Hans/LC_MESSAGES/django.po | 17 +- 64 files changed, 918 insertions(+), 1092 deletions(-) diff --git a/core/locale/ar_AR/LC_MESSAGES/django.mo b/core/locale/ar_AR/LC_MESSAGES/django.mo index 37ce016ec93e2a0b6bd0d2c1f099b0c750111a58..6783869affecafc9771d9902ec35d121e024dc40 100644 GIT binary patch delta 9791 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 Od~Q@&;l>SD\n" "Language-Team: BRITISH ENGLISH \n" -"Language: ar-AR\n" +"Language: ar-ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,7 +27,8 @@ msgstr "نشط" #: core/abstract.py:20 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 "" "إذا تم تعيينه على خطأ، لا يمكن للمستخدمين رؤية هذا الكائن دون الحاجة إلى إذن" @@ -181,8 +182,7 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" "تطبيق مفتاح فقط لقراءة البيانات المسموح بها من ذاكرة التخزين المؤقت.\n" -"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين " -"المؤقت." +"تطبيق مفتاح وبيانات ومهلة مع المصادقة لكتابة البيانات إلى ذاكرة التخزين المؤقت." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -237,7 +237,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "إعادة كتابة مجموعة سمات موجودة تحفظ غير القابلة للتعديل" #: core/docs/drf/viewsets.py:57 -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 "إعادة كتابة بعض حقول مجموعة سمات موجودة تحفظ غير القابلة للتعديل" #: core/docs/drf/viewsets.py:64 @@ -285,7 +286,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "إعادة كتابة قيمة سمة موجودة تحفظ غير القابلة للتعديل" #: core/docs/drf/viewsets.py:111 -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 "إعادة كتابة بعض حقول قيمة سمة موجودة حفظ غير قابل للتعديل" #: core/docs/drf/viewsets.py:118 @@ -383,8 +385,7 @@ msgstr "إزالة منتج من الطلب" msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." +msgstr "يزيل منتجًا من أحد الطلبات باستخدام \"معرّف_المنتج\" و\"السمات\" المتوفرة." #: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" @@ -458,32 +459,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" #: core/docs/drf/viewsets.py:277 @@ -540,8 +529,7 @@ msgstr "(بالضبط) الرقمية مقابل المادية" #: core/docs/drf/viewsets.py:361 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" @@ -604,10 +592,15 @@ msgstr "إدخال عنوان الإكمال التلقائي" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"تطبيق docker compose exec تطبيق docker exec الشعر تشغيل إدارة python.py " +"deepl_translate -l en-gb -l ar-ar -l cs-cz -l da-dk -l de-de-de -l en-us -l " +"es-es -l fr-fr -l hi-in -l it-it -l ja-jp -l kk-kz -l nl-nl -l nl-nl -l pl-" +"pl -l pt-br -l ro-ro -l ru-ru -l zh-hans -l zh-ans -a core -a geo -a geo -a " +"payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "تحديد كمية النتائج، 1 < الحد < 10، الافتراضي: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -697,8 +690,8 @@ msgstr "شراء طلبية" #: core/graphene/mutations.py:402 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" #: core/graphene/mutations.py:485 @@ -754,7 +747,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "ما هي السمات والقيم التي يمكن استخدامها لتصفية هذه الفئة." #: core/graphene/object_types.py:114 -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 "" "الحد الأدنى والحد الأقصى لأسعار المنتجات في هذه الفئة، إذا كانت متوفرة." @@ -918,8 +912,8 @@ msgstr "رقم هاتف الشركة" #: core/graphene/object_types.py:464 msgid "email from, sometimes it must be used instead of host user value" msgstr "" -"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم " -"المضيف" +"\"البريد الإلكتروني من\"، في بعض الأحيان يجب استخدامه بدلاً من قيمة المستخدم" +" المضيف" #: core/graphene/object_types.py:465 msgid "email host user" @@ -1039,7 +1033,8 @@ msgstr "سمة هذه القيمة" msgid "the specific product associated with this attribute's value" msgstr "المنتج المحدد المرتبط بقيمة هذه السمة" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "المنتج المرتبط" @@ -1206,7 +1201,8 @@ msgid "feedback comments" msgstr "تعليقات على الملاحظات" #: core/models.py:423 -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 "الإشارة إلى المنتج المحدد في الطلب الذي تدور حوله هذه الملاحظات" #: core/models.py:424 @@ -1307,8 +1303,8 @@ msgstr "لا يمكنك إضافة منتجات غير نشطة للطلب" msgid "you cannot add more products than available in stock" msgstr "لا يمكنك إضافة منتجات أكثر من المتوفرة في المخزون" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} غير موجود: {product_uuid}" @@ -1355,8 +1351,8 @@ msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" msgstr "" -"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد " -"الإلكتروني للعميل، رقم هاتف العميل" +"لا يمكنك الشراء بدون تسجيل، يرجى تقديم المعلومات التالية: اسم العميل، البريد" +" الإلكتروني للعميل، رقم هاتف العميل" #: core/models.py:735 msgid "invalid payment method" @@ -1512,7 +1508,8 @@ msgstr "وقت بدء الصلاحية" #: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" -msgstr "الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" +msgstr "" +"الطابع الزمني عند استخدام الرمز الترويجي، فارغ إذا لم يتم استخدامه بعد" #: core/models.py:994 msgid "usage timestamp" @@ -1539,8 +1536,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين " -"أو لا هذا ولا ذاك." +"يجب تحديد نوع واحد فقط من الخصم (المبلغ أو النسبة المئوية)، وليس كلا النوعين" +" أو لا هذا ولا ذاك." #: core/models.py:1030 msgid "promocode already used" @@ -1788,11 +1785,11 @@ msgstr "مرحبًا %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" -"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل. " -"فيما يلي تفاصيل طلبك:" +"شكرًا لك على طلبك #%(order.pk)s! يسعدنا إبلاغك بأننا قد أخذنا طلبك في العمل." +" فيما يلي تفاصيل طلبك:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1871,8 +1868,8 @@ msgstr "المفتاح" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "شكراً على طلبك! يسعدنا تأكيد طلبك. فيما يلي تفاصيل طلبك:" #: core/templates/shipped_order_created_email.html:109 @@ -1953,6 +1950,3 @@ msgstr "الرمز المفضل غير موجود" #, python-brace-format msgid "Geocoding error: {e}" msgstr "خطأ في الترميز الجغرافي: {e}" - -#~ msgid "translations" -#~ msgstr "الترجمات" diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.mo b/core/locale/cs_CZ/LC_MESSAGES/django.mo index 7f2d03ac230f54733554480cbca565638e0b8533..7b3dceb8bd6108e2bc0a1044b6197ce5bd5c1ee3 100644 GIT binary patch delta 9695 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 delta 9192 zcmXxp30zlI`p5BuihwJK0wM^gD2p2?nz-P;FW{27rMQOsuBCPp_YKpZTP}^HWu<8j zJ|Ny&11plZaz2Z?WeirvMHqqk7>b9n7M{Us z_z=0yGnH!^vxbTW7>6I>K00t4^?RKAX5cnfz`t-7hSV`8p68nt6#TIOnSFBzHRY#JH++R5cpvqkVs(uvk7ZCDio#%Q zfa+*lcYdI&AM2chr8u95>d{K>JozFo%cnxX>wxiZ^ z7is{XVR<}{>hMj}10T7(Sbbwkl2^pCSfxJmuLcsSD1%*5Yt|1n(xF%y$D%qg)1BXj zYIv8+51^LnLoA2qQ8RY~^`J+nCH7}y#9}O#z*Z^DzeduY3iZ4@YU-ay-8dE1v0T&x zR-#6*-JRcwYUmKEoue3nCsEg5!eIOnHRXSy-i``PudMA+(1Y8fdi*S^p&ZnMCn5XA zyo~HKvlF%E7hQfAb$w(5W1hik*aQb)2(CqSV28^OVkmhbssr9NSNILpkqQlMN2;Ng zAPqIu8OXCtXH>`LU>Yt(HTWUwL0_Pj@Fr>o@1mCQ3F@^COtL0vzT%1V0w$55bi zW-e+M??+AL5p0SNke-?pDid%RY9z~19omgtV$NeYmSz4cU_4gDXD}AKp*G=o)Sg*_ zA$tGwD0IWE*dOm=7IsRv9omH2)%n;S-$#w`5o#v<=%r>V5H(W~$RwF0RELM4_Q(=< zeif?2+tAadx=NuQ1~jv4*%-sfyI>U@iY@SE)Pp}jt?4P}In;>1MrPOijCC-vIUgnL zi^XvnszWPLd*fhp=3fsu=_;;cRr33&2Fvr*T3F5588!8joog_fd_TtE7Z{7bqNcb~ zhMkc}j3lq^?0_A}hh}(oGrUWMHbntys*j)=_!u=4XHgxxh1%_pF#^lAv?Hm7s!u~L zNhjnZYBI4OdZ?MXjM|jJt?c=9kAgN`4(b6DP-~fsnxfUH4sAufc6%@ikDx|$8TG(l zQQwI_P#sQaZQIE}_ND28+Kh`)?QB6Uq4zEYHMk$O6z5Qz<(~5qYGnUIZJN+Fc5S<0 zTk;oCoAoHF!C)%&peWS9Qc&$RMzxcH8dxu6V4lf#CnlnLHXrpNS!FLUZ=f39>&}1R z&KIJV?5fLepkBWRn2crH+4h>CK49&!5@w;=8--zd|EEyUS}sLhxDB<-ccX4Nh+2X( z?)+C+pZt4_#mc;s+STc(sUC)U4L4&9?#AJG29vM>J5MwIJO=W7GmC<5n2*{t>#!uA zKy8{&Pz@LFXm@Qh)cN_S4lYAIC?Bigapw(;ClBak>+4`;@=R0*Mx)n@!XgUHnz@Sn z&%}1NBO8rc%Vnq~*@|jlFKUWE#uR+yOzdJuH~?!=zYr5~x2wN|MFZ(-f0s1t%KWQh z0u^fLZPW~0!KN70&DOU=Cc(@=Hn=(Fa=-5OcSR@UlVO&+{39%(`+L|=dpRsi-Uc;8 zS*QU`?ZNyHq_BXBa(ErJOMgOt^v|?6mPSo^Wvqv>$O~aIUA@n_5lc~@k7{QZ2IGeq zi2ueqcm-EupqIr?q_7D!WyO2i5hbH89E-JaBi6)In1FXtGZfDHHN;-1wO))#xEu9l zyo_r15$bnBOmEv>AFM&{Tjtd7BbY=aF^Gtd)*Fc-Ci%TXgg zff0BXwU>TC?STf*+71pvb#NXsAkXZkP@anOs5QHZ8u@LkfDwJ|hbbA=;|{2q7>j)7 zjStoF&ruz?gj%X^Q60IB8c^})?AuZvbzMBx)B9haLI4#*FdJXMx>$&D_&c`6DtySb zhC@($B?q;cW@0FALe0n?)Y2S6ZPo{<&DprW-80irOL`C!_5RN6rG03iUJ&YvpiilBV9x1?Ryo}y+eryg3m8r-a zY#%rpHL^U6z`Yobg{TIuqZ$YtVwa{S>Vd7XB@V*o_&VykFYy>YMs@sfHcM8Vw=A3a zSA&m++qI1zVISNYHPR8Nwcdcqcnq~PcTj5|InpjkKhy|^qBh$KjKc${fn0VzamMh< zsh!rNJbS?;DsLDQtjn(>p9b>-w!)RW(iATA78R}E~I?_SU?4l4w#Ys%TZ&4$tG|o;@Rc8WfgsG^8Tf6!`sF@gy8u3I- z!lkGs+=rU#BdCF$#L{@BC};h@b0;2S3@6Hsw-?lPrlT5akN(&VwFJFTOOu0|kzD6` z)UMx!8d#yLzvX;_rKk^?K=6DMMM1m0F4n6M;GiGCX+=bc;M=%rrGnw^|rI0eku3b+|Bp-`qaUH5-+ff}j>^$wf zg!QSvh3aU;R6bVN7d6E}(`<(;Vk&t8s^bH&A7)Qu{s&R`KPnnv<>~gX+-|71VFA{~ zo!A?%puU9lX4r;1U z|KkabOnX5MEq8f7>h(K_nt_|Bsk@K*9t6H(|EZ-svRbB-%m0bmOHWXHr~X_!6N6FD z8G~BdTnwfyvyOs#v_lnm2(@N~sHyq|HI>1+w!tWjChvk;>l|!{9%=w5oL5j&eh*{t zPiOQzJAmd`^!~S{pc}KW6OKf^hVNqsyn?;4+I;&#nSs^F*P)i+5bB$M6t!ngq6Tyx zwOMbWM*bM}9SB)qXCQ6?^RKB$qe3@yat?5gL#>&IYG^U)!JAN<>?o?iUs3m$U?*0` zFx2(wSOvRb(M-8|5A}gsy^#4=1DmPP6z@VcbP%<6g;*7T$5f11WIw%KP#sy0n%X@$ z6hA|~W~qzq`5~yiGY{2)JZyy9Q3Jo~QD{fu9%f+L68;Skr(sF_1ofbEsF6K%MlQ8~ z5w$?ok9Ouc|Bi{&U%>8Ymf7d@K;>&O3B4N>T2m;$+39sA;A7P8 zZn(nwf^#$K`m>mY#q;cd`e4xmu_N_2oOM?gW0`s@AAq7cFbeNheOU@A_+ z0k|FgQU5PR5R}By7>w~4g^}1AwU-8Aa~y{SxD)vXnZavqyVp=N9hkW}w!35;nlKE-w)3GHkLrv)?n1xrdEY{g*_efJ5PTm{!phKv3?qGck+hp?&sMl~ZY6kPL zC2rWn{Oh&2OoeW^hnk7l&Gt3vhUw(7c52(A@-?W} z`66nGqPN4YsMcWWq#4PHj;ZiJzIwCDaKeY$6(}(++(I%D)T9QN)>)pjwFq>TO)6-)wb)UK9CCX(f zPr=cyPVeXdS6)WFHi!=G)RRP0Uv|~-COtWmM!ZT*CZ-ZQhzLSQKdkM_=gEUyd6jQ( z)zIj0vRbaD=yHB^APzY--wa%_GYCaOk)}>?9(o*E_2hJ%I8!!cWtwBZGLAitlkO?!zU-Dq=eM1^j~0 zv50s~ETn!Uq2ncs8SnBIE`QNkf%+8RH!-1JGk3)ptjXD}M0d&wgpcx6Y)N#YTot$D zU_6LjiSdMvxzr8Bp2RxJzvElP)1xnicc`C7Y#?-O^eg)7!+t7y_~yjM_?O^R6JLI8 zc#yxl=$7wzY^Yb0Y=yn6=tDG#@=kZfIm(xanM4$IU*fa)09Rue>L}~3&&6)8tokSV z!SRd5ROVbBag)3bHrL*Nhh(9<;CU*WQ2qze*f%aNCcYyzI!ZZTp}d)hB6RQ>H06DJ zqF7L)79 z!6aAqa0T%i(SYc~`K5jyznmysCEh1=q!Ycl;6GRmSEG)#l%F2cDQqJ@jQYjYka8%| zkn(?t=ZROyd*j!{F3J;#V4@gNoVtM+tuMwigpTI;749Lb5ao#Ph<(&o!x%zG2D$zn zQb(%AB)i<_%dZ}qR)%Z`XF9vuA$^|1^{1Q~K drQ^TCinZxqFm&*9RSO=@saU3<`m%nJ{|{wDb=Cj? diff --git a/core/locale/cs_CZ/LC_MESSAGES/django.po b/core/locale/cs_CZ/LC_MESSAGES/django.po index d0935127..9720b73b 100644 --- a/core/locale/cs_CZ/LC_MESSAGES/django.po +++ b/core/locale/cs_CZ/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: cs-CZ\n" +"Language: cs-cz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -28,7 +28,8 @@ msgstr "Je aktivní" #: core/abstract.py:20 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í." @@ -240,7 +241,8 @@ msgstr "" "Přepsání existující skupiny atributů s uložením neupravitelných položek" #: core/docs/drf/viewsets.py:57 -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" @@ -292,7 +294,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" #: core/docs/drf/viewsets.py:111 -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" @@ -367,8 +370,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí " -"s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " +"Dokončí nákup objednávky. Pokud je použito `force_balance`, nákup se dokončí" +" s použitím zůstatku uživatele; pokud je použito `force_payment`, zahájí se " "transakce." #: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 @@ -459,7 +462,8 @@ msgstr "Přidání mnoha produktů do seznamu přání" #: core/docs/drf/viewsets.py:248 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`." #: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" @@ -475,28 +479,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`" @@ -555,12 +549,10 @@ msgstr "(přesně) Digitální vs. fyzické" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -623,10 +615,14 @@ msgstr "Automatické dokončování zadávání adresy" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "omezuje množství výsledků, 1 < limit < 10, výchozí: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -715,11 +711,11 @@ msgstr "Koupit objednávku" #: core/graphene/mutations.py:402 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." #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -774,9 +770,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." #: core/graphene/object_types.py:114 -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." #: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" @@ -1058,7 +1056,8 @@ msgstr "Atribut této hodnoty" msgid "the specific product associated with this attribute's value" msgstr "Konkrétní produkt spojený s hodnotou tohoto atributu" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Související produkt" @@ -1225,7 +1224,8 @@ msgid "feedback comments" msgstr "Zpětná vazba" #: core/models.py:423 -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á." @@ -1318,7 +1318,8 @@ msgstr "Uživatel smí mít vždy pouze jednu čekající objednávku!" #: core/models.py:551 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." #: core/models.py:556 msgid "you cannot add inactive products to order" @@ -1328,8 +1329,8 @@ msgstr "Do objednávky nelze přidat neaktivní produkty" msgid "you cannot add more products than available in stock" msgstr "Nelze přidat více produktů, než je dostupné na skladě" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} neexistuje: {product_uuid}" @@ -1810,8 +1811,8 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku #%(order.pk)s! S potěšením Vám oznamujeme, " "že jsme Vaši objednávku převzali do práce. Níže jsou uvedeny údaje o vaší " @@ -1897,8 +1898,8 @@ msgstr "Klíč" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Děkujeme vám za vaši objednávku! S potěšením potvrzujeme váš nákup. Níže " "jsou uvedeny údaje o vaší objednávce:" @@ -1982,6 +1983,3 @@ msgstr "favicon nebyl nalezen" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Chyba v zeměpisném kódování: {e}" - -#~ msgid "translations" -#~ msgstr "Překlady" diff --git a/core/locale/da_DK/LC_MESSAGES/django.mo b/core/locale/da_DK/LC_MESSAGES/django.mo index d31a5c676baec7d67d8fe79a2dd8858b63f61cc8..1a2603b56b1e5f99fa8e3ef3e15e283aee6ce6c5 100644 GIT binary patch delta 9700 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\n" "Language-Team: BRITISH ENGLISH \n" -"Language: da-DK\n" +"Language: da-dk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,7 +27,8 @@ msgstr "Er aktiv" #: core/abstract.py:20 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." @@ -182,8 +183,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -240,7 +240,8 @@ msgstr "" "attributter" #: core/docs/drf/viewsets.py:57 -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" @@ -293,10 +294,11 @@ msgstr "" "Omskriv en eksisterende attributværdi, der gemmer ikke-redigerbare filer" #: core/docs/drf/viewsets.py:111 -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" +"Omskriv nogle felter i en eksisterende attributværdi og gem ikke-redigerbare" +" felter" #: core/docs/drf/viewsets.py:118 msgid "list all categories (simple view)" @@ -330,7 +332,8 @@ msgstr "Liste over alle kategorier (enkel visning)" #: core/docs/drf/viewsets.py:146 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." #: core/docs/drf/viewsets.py:150 msgid "retrieve a single order (detailed view)" @@ -456,7 +459,8 @@ msgstr "Fjern et produkt fra ønskelisten" #: core/docs/drf/viewsets.py:242 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`." #: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" @@ -483,28 +487,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`." @@ -563,12 +557,10 @@ msgstr "(præcis) Digital vs. fysisk" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -630,10 +622,14 @@ msgstr "Automatisk udfyldning af adresseinput" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "begrænser mængden af resultater, 1 < grænse < 10, standard: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -722,11 +718,11 @@ msgstr "Køb en ordre" #: core/graphene/mutations.py:402 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" #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -779,10 +775,12 @@ msgstr "Markup-procentdel" #: core/graphene/object_types.py:110 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." #: core/graphene/object_types.py:114 -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." @@ -1069,7 +1067,8 @@ msgstr "Attribut for denne værdi" msgid "the specific product associated with this attribute's value" msgstr "Det specifikke produkt, der er knyttet til denne attributs værdi" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Tilknyttet produkt" @@ -1236,9 +1235,11 @@ msgid "feedback comments" msgstr "Kommentarer til feedback" #: core/models.py:423 -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" #: core/models.py:424 msgid "related order product" @@ -1287,8 +1288,8 @@ msgstr "Bestillingsstatus" #: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" -"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges " -"tabelvisningen" +"JSON-struktur af meddelelser, der skal vises til brugerne, i admin UI bruges" +" tabelvisningen" #: core/models.py:487 msgid "json representation of order attributes for this order" @@ -1338,8 +1339,8 @@ msgstr "Du kan ikke tilføje inaktive produkter til en ordre" msgid "you cannot add more products than available in stock" msgstr "Du kan ikke tilføje flere produkter, end der er på lager" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} findes ikke: {product_uuid}." @@ -1347,7 +1348,8 @@ msgstr "{name} findes ikke: {product_uuid}." #: core/models.py:586 core/models.py:607 core/models.py:615 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." #: core/models.py:603 #, python-brace-format @@ -1821,8 +1823,8 @@ msgstr "Hej %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Tak for din ordre #%(order.pk)s! Vi er glade for at kunne informere dig om, " "at vi har taget din ordre i brug. Nedenfor er detaljerne om din ordre:" @@ -1907,8 +1909,8 @@ msgstr "Nøgle" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Tak for din bestilling! Vi er glade for at kunne bekræfte dit køb. Nedenfor " "er detaljerne om din ordre:" @@ -1974,7 +1976,8 @@ 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." #: core/validators.py:22 msgid "invalid phone number format" @@ -1992,6 +1995,3 @@ msgstr "Favicon ikke fundet" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fejl i geokodning: {e}" - -#~ msgid "translations" -#~ msgstr "Oversættelser" diff --git a/core/locale/de_DE/LC_MESSAGES/django.mo b/core/locale/de_DE/LC_MESSAGES/django.mo index baad2cb7f7442f1ccfd5e918396c77e82b9e81d1..7af0a11575272ea0823aa8fc0fd2e941a42c8b22 100644 GIT binary patch delta 9696 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 NDJ?wu@S`s!{TG(74p#sG delta 9192 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

7;B z-ky&|-LL^_z=N?EjzF!o(HMfc7_R-lnu1pO7OaQ|F$^!DF1&>S_=oc^R7d_3?AnM$ zeZC>;3A>>B8IEx{-?isCKSn*^X)MG2&3Ovi|G!{$jGburXFJrl;t13S-oP%HhrRGN zYARY!vTJA{Y9N!Gi%|P~v-4Bee$jacJ*75qvQ1$qHltn%%is`fixW^!vLCh2&!Xn| z28QBo)b&qL`#WTc&0IEW8xC^y4X6iv4?E#EQ^>zof5oYG?$WU~^{%KzG8dK7r5KF) zs3$H!-S9Z3;W_MvW*X}RvQgVNX1X14B~<1bpdNSucE**{$-hQ&iH63QGQ*B=7}nAS zSQihYGIIwbvF1#h@-|q3dVfsBNvK7-7PWXk#Be--B*&aWUVf(eEMxj&o<~88>k(?P zJ;9zB{IZ?%A*fW3#s*Jr4EcuV7yW54xQpz2>^B7Tp0fX7$^ zgXb3Y=b20jdXny_kNe06Ca>%Sa~t?hy5`P z4`NlkhSRb161&ZEQRfRW5U-#f^cvR32dl#YWuUoTZ=} z2ES<+Q**3GeFV104cH2Q#A=wl(f(BHhPA0LLf!CV%)~#j4%Xjf=XeBWQ(uXCz^kYS zxQU*&#{&wLG4d_D8=9bQ+#QwDji?UZM|JQB6S3H4``2?7%%VOI8{$!Hf{#!G$#~no z$VQ?vG!Gl$(znTf425Gfq~H}y$Kvl;8)H-I<1qktqNZXGs-pv_?ROOQ2K^P|@i9hV zbeDZh08Q2$3 zV|z^5Vly!jv#7uC{1tV5>Q??@M$e<5eH^^acF+)&y49#ueubLzfcNaTVJ+tXOrm`; zM&SZS(btOG%zZ`)fowLYXO#dx&Ag@4A>H*_R&|;jN-Yi=Y)Q zC~9XxpeD9}wl>7GV+7@oUH$JgE+drx7u*GpQEB~+Xyw}2ex@a#VRsb0690)>Tr-G5 z{mA*5LQi5E@x<3MKEm&wuUC9!ud%yPbLR`#oojLlt;)I7`@3^g4cpYTqrMq`QiD4d z&{l!iPt2xm8uFSqWl)E9!m~qfFzwOderAkG0(}_4kwDtX1G1B|Uoz17^N8)Wl#|c7jnRndzQ8>qy+tIH5qT?8G zhe%b0qcztQ64zGHDG5kq@2YWtL+JdW^FI(2AMuBPEv%)x!QgjhpNr~Vy&OXyfc z{7EdNeI%jdWs4c_>djq!mNT68y1pM1BD|*Vim|AjnMZV`oJ#m8PsJ8Q2g((Z7lIj# z2e31t??fH*Xd8$K`R1EFK1U(wGU`?l`po0FIj7{IAaUw&d_ z$v}6}4d2nk2(K!&74}m_|JP~~<(=+|vy?9oGl@9be!$-N0M}v#)DhyY&&4jTtoHxt zAC7-pOf=_K64$BM#AaIiA5dB7E*L~(CgqQahQ4u03CZng(NW6zD&@C`I6?>ST@&it zn^f5w$`$Xst90fmF@-ot+h(E!<^LhZP%e%Wh$WPZ5jwuGm>}v~iGNW4-nD(>TtxdY z%FhvDl)rTC;F&-8cLt562_4IE2v#BH6V<5iCT>vGtb}V($9l@oj_DM(Q2zw^WoPPB zjv(q&{$FAc@hbJ_@hY*4@&uwR;ZGE!Z6L<$jnRnE(F`x+ZX%W_L;OPQqrDO)5IVA` z_jRACXPZoQSNHkyD@SAmQ`^p&j;?ixbDgsd=gt$Oi4SSZC+_=hR*v-yrP;(xqBfyp z6PCgpVloj){ENt=y)to>axkG|BK3(l8I!OR>NrXCqWmGgh!=4K@h;`{sG~sNwZ+{B z!fad74\n" "Language-Team: BRITISH ENGLISH \n" -"Language: de-DE\n" +"Language: de-de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,7 +29,8 @@ msgstr "Ist aktiv" #: core/abstract.py:20 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." @@ -183,10 +184,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -243,7 +242,8 @@ msgstr "" "Editierbarkeit" #: core/docs/drf/viewsets.py:57 -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" @@ -273,8 +273,8 @@ msgstr "" #: core/docs/drf/viewsets.py:84 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" +" Daten zu speichern" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -299,7 +299,8 @@ msgstr "" "Editierbarkeit" #: core/docs/drf/viewsets.py:111 -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" @@ -328,8 +329,8 @@ msgstr "" #: core/docs/drf/viewsets.py:138 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: core/docs/drf/viewsets.py:145 msgid "list all orders (simple view)" @@ -364,8 +365,8 @@ msgstr "" #: core/docs/drf/viewsets.py:167 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder einer bestehenden Kategorie, um nicht editierbare" +" Daten zu speichern" #: core/docs/drf/viewsets.py:171 msgid "purchase an order" @@ -388,7 +389,8 @@ msgstr "eine Bestellung kaufen, ohne ein Konto anzulegen" #: core/docs/drf/viewsets.py:186 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." #: core/docs/drf/viewsets.py:194 msgid "add product to order" @@ -448,8 +450,8 @@ msgstr "" #: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare " -"Daten zu speichern" +"Umschreiben einiger Felder eines vorhandenen Attributs, um nicht editierbare" +" Daten zu speichern" #: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" @@ -496,29 +498,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`" @@ -546,7 +537,8 @@ msgstr "(genau) Kategorie UUID" #: core/docs/drf/viewsets.py:306 msgid "(list) Tag names, case-insensitive" -msgstr "(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" +msgstr "" +"(Liste) Tag-Namen, Groß- und Kleinschreibung wird nicht berücksichtigt" #: core/docs/drf/viewsets.py:312 msgid "(gte) Minimum stock price" @@ -578,12 +570,10 @@ msgstr "(genau) Digital vs. physisch" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -602,8 +592,8 @@ msgstr "Ein Produkt erstellen" #: core/docs/drf/viewsets.py:397 msgid "rewrite an existing product, preserving non-editable fields" msgstr "" -"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer " -"Felder" +"Umschreiben eines bestehenden Produkts unter Beibehaltung nicht editierbarer" +" Felder" #: core/docs/drf/viewsets.py:412 msgid "" @@ -647,10 +637,14 @@ msgstr "Autovervollständigung der Adresseingabe" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl -l pt-br -l ro-ro -l ru-ru -l zh-hans" +" -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "begrenzt die Anzahl der Ergebnisse, 1 < Limit < 10, Standard: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -741,8 +735,8 @@ msgstr "Eine Bestellung kaufen" #: core/graphene/mutations.py:402 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" @@ -801,9 +795,11 @@ msgstr "" "verwendet werden." #: core/graphene/object_types.py:114 -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." #: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" @@ -1087,7 +1083,8 @@ msgid "the specific product associated with this attribute's value" msgstr "" "Das spezifische Produkt, das mit dem Wert dieses Attributs verbunden ist" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Zugehöriges Produkt" @@ -1200,7 +1197,8 @@ msgstr "Ist das Produkt digital" #: core/models.py:301 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." #: core/models.py:302 msgid "product name" @@ -1259,10 +1257,11 @@ msgid "feedback comments" msgstr "Kommentare zum Feedback" #: core/models.py:423 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese " -"Rückmeldung bezieht" +"Verweist auf das spezifische Produkt in einer Bestellung, auf das sich diese" +" Rückmeldung bezieht" #: core/models.py:424 msgid "related order product" @@ -1364,8 +1363,8 @@ msgstr "Sie können keine inaktiven Produkte zur Bestellung hinzufügen" msgid "you cannot add more products than available in stock" msgstr "Sie können nicht mehr Produkte hinzufügen, als auf Lager sind" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} existiert nicht: {product_uuid}" @@ -1548,7 +1547,8 @@ msgstr "Kennung des Promo-Codes" #: core/models.py:968 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" #: core/models.py:969 msgid "fixed discount amount" @@ -1699,7 +1699,8 @@ msgstr "SKU des Verkäufers" #: core/models.py:1130 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" #: core/models.py:1131 msgid "digital file" @@ -1860,8 +1861,8 @@ msgstr "Hallo %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung #%(order.pk)s! Wir freuen uns, Ihnen " "mitteilen zu können, dass wir Ihre Bestellung in Arbeit genommen haben. " @@ -1947,8 +1948,8 @@ msgstr "Schlüssel" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Vielen Dank für Ihre Bestellung! Wir freuen uns, Ihren Kauf zu bestätigen. " "Nachstehend finden Sie die Details Ihrer Bestellung:" @@ -1975,7 +1976,8 @@ msgstr "Sowohl Daten als auch Timeout sind erforderlich" #: core/utils/caching.py:43 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" #: core/utils/db.py:7 #, python-brace-format @@ -2033,6 +2035,3 @@ msgstr "Favicon nicht gefunden" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geokodierungsfehler: {e}" - -#~ msgid "translations" -#~ msgstr "Übersetzungen" diff --git a/core/locale/en_GB/LC_MESSAGES/django.mo b/core/locale/en_GB/LC_MESSAGES/django.mo index bbf03cac1c688f9448476fbc675030568a4abf07..d947478f604f96c041edc7608daebffd064d59e6 100644 GIT binary patch delta 9681 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 delta 9190 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 Apa1{> diff --git a/core/locale/en_GB/LC_MESSAGES/django.po b/core/locale/en_GB/LC_MESSAGES/django.po index d099d378..a220a857 100644 --- a/core/locale/en_GB/LC_MESSAGES/django.po +++ b/core/locale/en_GB/LC_MESSAGES/django.po @@ -32,9 +32,11 @@ msgstr "Is Active" #: core/abstract.py:20 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" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -241,7 +243,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" #: core/docs/drf/viewsets.py:57 -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" @@ -290,7 +293,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" #: core/docs/drf/viewsets.py:111 -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" @@ -466,30 +470,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`" #: core/docs/drf/viewsets.py:277 @@ -546,12 +540,10 @@ msgstr "(exact) Digital vs. physical" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -612,10 +604,14 @@ msgstr "Autocomplete address input" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limits the results amount, 1 < limit < 10, default: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -704,11 +700,11 @@ msgstr "Buy an order" #: core/graphene/mutations.py:402 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" #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -763,7 +759,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." #: core/graphene/object_types.py:114 -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." @@ -1046,7 +1043,8 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Associated product" @@ -1212,7 +1210,8 @@ msgid "feedback comments" msgstr "Feedback comments" #: core/models.py:423 -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" @@ -1314,8 +1313,8 @@ msgstr "You cannot add inactive products to order" msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" @@ -1796,11 +1795,11 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " -"have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" +" have taken your order into work. Below are the details of your order:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1882,11 +1881,11 @@ msgstr "Key" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are " -"the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are" +" the details of your order:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1948,7 +1947,8 @@ msgstr "NOMINATIM_URL parameter must be configured!" #: core/validators.py:16 #, python-brace-format 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" +msgstr "" +"Image dimensions should not exceed w{max_width} x h{max_height} pixels" #: core/validators.py:22 msgid "invalid phone number format" @@ -1970,7 +1970,6 @@ msgstr "Geocoding error: {e}" #~ msgid "translations" #~ msgstr "Translations" -#~ msgid "" -#~ "you cannot create a momental order without providing a billing address" +#~ msgid "you cannot create a momental order without providing a billing address" #~ msgstr "" #~ "you cannot create a momental order without providing a billing address" diff --git a/core/locale/en_US/LC_MESSAGES/django.mo b/core/locale/en_US/LC_MESSAGES/django.mo index d43ebe30af0d2a85ef40641e2501bf77992d96ef..07945630eb326bb72c47e3be7390f071a1229c99 100644 GIT binary patch delta 9689 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 Ay#N3J delta 9198 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 MUBlv2^B-0CAC*mAR{#J2 diff --git a/core/locale/en_US/LC_MESSAGES/django.po b/core/locale/en_US/LC_MESSAGES/django.po index d7be73a3..8c9a1341 100644 --- a/core/locale/en_US/LC_MESSAGES/django.po +++ b/core/locale/en_US/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: en-US\n" +"Language: en-us\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,9 +27,11 @@ msgstr "Is Active" #: core/abstract.py:20 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" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -236,7 +238,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Rewrite an existing attribute group saving non-editables" #: core/docs/drf/viewsets.py:57 -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" @@ -285,7 +288,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Rewrite an existing attribute value saving non-editables" #: core/docs/drf/viewsets.py:111 -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" @@ -461,26 +465,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" @@ -540,12 +535,10 @@ msgstr "(exact) Digital vs. physical" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -606,10 +599,14 @@ msgstr "Autocomplete address input" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limits the results amount, 1 < limit < 10, default: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -698,11 +695,11 @@ msgstr "Buy an order" #: core/graphene/mutations.py:402 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" #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -757,7 +754,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." #: core/graphene/object_types.py:114 -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." @@ -1040,7 +1038,8 @@ msgstr "Attribute of this value" msgid "the specific product associated with this attribute's value" msgstr "The specific product associated with this attribute's value" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Associated product" @@ -1206,7 +1205,8 @@ msgid "feedback comments" msgstr "Feedback comments" #: core/models.py:423 -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" @@ -1308,8 +1308,8 @@ msgstr "You cannot add inactive products to order" msgid "you cannot add more products than available in stock" msgstr "You cannot add more products than available in stock" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} does not exist: {product_uuid}" @@ -1790,11 +1790,11 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" -"Thank you for your order #%(order.pk)s! We are pleased to inform you that we " -"have taken your order into work. Below are the details of your order:" +"Thank you for your order #%(order.pk)s! We are pleased to inform you that we" +" have taken your order into work. Below are the details of your order:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1876,11 +1876,11 @@ msgstr "Key" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" -"Thank you for your order! We are pleased to confirm your purchase. Below are " -"the details of your order:" +"Thank you for your order! We are pleased to confirm your purchase. Below are" +" the details of your order:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1942,7 +1942,8 @@ msgstr "NOMINATIM_URL parameter must be configured!" #: core/validators.py:16 #, python-brace-format 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" +msgstr "" +"Image dimensions should not exceed w{max_width} x h{max_height} pixels" #: core/validators.py:22 msgid "invalid phone number format" @@ -1960,6 +1961,3 @@ msgstr "favicon not found" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Geocoding error: {e}" - -#~ msgid "translations" -#~ msgstr "Translations" diff --git a/core/locale/es_ES/LC_MESSAGES/django.mo b/core/locale/es_ES/LC_MESSAGES/django.mo index d2692e9e4ceeb26f8e4c2630a8bdb644e65bfd52..55164da3a6caca6ba9f2752ccbcc02753ee2362b 100644 GIT binary patch delta 9702 zcmXxo2Yggj+Q;#e0HK6HLI|OxOdz3VfKa3bArYhq(nOk+AsNyOlL<&2njl45Kv4k! z5d=ig=nCk&D+`F&cU=`+#qzo!sJM%Wy0-oObB_1(dH6o(+;;AB&b<@8em4B_>*1k` zO=@p7Y%hixlYlp(j2RPd%p0xLYfN;SF>x4!+TYGO2%FOOIp?5GS&J=jKQ_mc7>gfb zJG_Riv02-i<3gqn$rd`sVG4eU&oh7q9IYF?+`*W5d=GWOZ&1fYbhP{1BVDFHa;nM0 z3|x=(@MX9E9H!I$4mA)@C!H5EW++KZIs%x84>%8@25=5FfQ#4+Z(?1H;%aKgVSP-; zJMk7AfcN1bJcFu01FtbnFbNl62BvX;bC{$KzKcw?0Z`2wa(@sYX zAQPi;9BQDsZvR5pzs|V>8?gUr)PRm-$V2ib2~{!I+yO1R7}Je*DyozdQ2SS7V|)%( zfzznDd;|3W-(q9@9yQ=PUF{9yQSH_kfjv+U+OI41*9C^r(GZJKb2blE(q$Nl>reyO z=JuaLJ;@uc{Q+vKKE+1(J*slG8NF^4kDB5%^x#0OjlK-(uP2#BhelqCD*a;AiCa(u z+k?8n5!4f$cKcsPUFZVpIu|hpFQJbA5u-7Ra;oG>sJEk=b3}+lH=cz}a1QE1t5G-J zgsdO46IplWb<~{y;M$G4+vEFUZ~C*b4=z9rVVt-3~IoqFr-EGGf5Y0mucs60yd*vgspHH-ikX>H~ttkr*Q=7^>8TsLGUKOI+&QJ|JYw5ISC8N=t8B$~_LF##iQvvb}a>(U2jN?&MH@>)*Yl%pG#m9`D^b^5hq}%dVylZHSrZjV9TL)(WD?%HWN`d*p3`x-a{RiILr<-6?MbD*cvB07hxLhU9SBK zhFZ{Zg+y~-YdC*Ipa-e82_n19ar9uVJM5gMqDtQfb^dVdgt?f38=Zf}jm`dr;q%{TPKGjiUZ4(N#M1L{X!Sxd)T55iY=*_ZjQZ-ibPKFRJ9vVi!D) zyg=rP>rdxZ(Eje&0Q;h@GZ>?B64t}Q5Q&$h0ypDs%)=gIZOOLdK-#BK$JJqe(y=?X z#TnQhSD`9&6!nB(qvks0E?ep$s4rvyH5D6CzY(EhB)Z@=OvP5?`MTji)DthlNL-GZ z>kZfj51=miCaMBoVSQ|Mx1GW?)RRxc=2(DQOUtkWzJUxdWNwmZF(gc|Pc#G@(=J8L z*<#d_FUKbM4C*)IG-|+~qAF2mqWzIdM-99PHGtWusaS~3aXIRNwqwoj|C1y-@Xx3x zIfr%eC-h+$AMVbWgDJQf2jO$5Is6H=R>CLSwG@M~w0oc`G88p6V^NEBJ!)~jgV}oj z8%?oOFa}kc#n=O%L>>4sF2`1^OqKpI)M7h@-7sRR{XXN$}dwdl>L;IMI`PUN^&g45E&WJII_6ooKBtMSvv`=7n{5xs@5wq+fOTjeSld&%@ zK~2evs5NsMd*OA|6n4zBPC`BK{dv@1$v!%2PH;P}JEQaMKsuw=$Y9ifMxz!{K2j_b zMBX^_E;1{oU4gys3RI=`;12u?X5iF9yC^q=Nc2H?5Ou-*7=zWQ)qV!+;d$5o3^m{z zs72PK$PTbAs^tAqQ#S&&-;eci9;&j-u?6nI4j6igq$$ZI?1w+2O4+N}mOOwe`99P@ zPNGWs8rH$^5_^6<)QuBS{kNbNTP8-}Sk!|}LamV^+YXtvBpUe+jKZf-@Bazxgs-8V z;3h_*DYaA45LJnI)P;MZ_76c#(Ku{{MX2knLJg!EHNX?tT)+P>lQg2^0;b@XsERZw zvlmLn2DE#jj?2cnI0kj0NvPweqbe0d4QPXNH)6txCUp|1BihP2~1cR)89D&EN8AjY|U$;bO1}4)#81=gOQBxd3 z9lsL!)|nmZm``Hn@k<2@PzQd4nyVXl7shf>H0Gn;hI!Zomt!nGh+Xg?ssbOPu2XM; zT?>s-15U*ZoQ=IO^f*aNl7BjHqNX5bp)q%0CN{+TQFFQ#Rr+1n0-wSxdOt83RSvyQ73+gP4T*G*IjB~!(`O= zU^K?zbkup3s3%^CQ}77tK_V$jcg#XPP$kyp{^lTwZgd1S$7fNcI*%IARoDJ6rqFK4 z9|Iojj2ieT?28kyIc`P`_z(`jmr-lPtgtpk-KRZNwiW{i4@+)c}@hk0H&}k+0_t23|hj!$kN;wzx zBoDauKGbXTlJi~E0I#B+^akq2^;g-|oq;viLk(;$>blENi+3A#!o91gzYctd4&C4j z)CoUhB1YVAE0BshF%$daP;84UQLocsyaPW$Eyhl(?IIqJMYMyc<3Gg?Sa*%BOh$-A zbKMuUXhxu(T>YbPo7!P~Qn3&1uyuCz_QSfgH(_gh7?bfO=SSF%_AjoT`heX($eD{B z*&kX#GK1s@-i^`g?O!x`m`3{*?22EbZjiXa+8;a9o{Cx%>#!G|!7li#)4S3Bm`z0; zzXk{6abyjJ%Ys~+h$fchHxZ)fEsXG6|W#JbiRq&pR~nR zs2KJ71+g(6L`}g7Y^wMF3zA|we!>`>wbicHd$A7f&8W9v8`i_4sMqZ{`tSzoxVs;; ztNtEm4ywe37>8S(hfozei4Ssr^IwwLxalFgqt-V2tq1kTF%R>zyh?=s8P&fP*^+0WQ*flkF2lZFSayoROXHl#A9O{YxhKcwa z>U~YvX-^!Ay5Kws9@OEOH>r;Pkmp?;3iF`5ff8(B$R&PohqtX-nh+b>M2|jhgK>r1^9eQ~j?y=T z_+!f>KknM+=v+%oB&NCpenA!H8gZNJdq_Fw@H*6dz5kAx#9X3UKl)#gj3X+E->Xs* zW5cdj^-OFN%5*mx=$wvYIA$49n^;2o9=DIC;l(t=XtTV{|Et4oE9r|Tju8v!n~Q6( zF=}gRF>j-mUnDUr%oLgw4j4!yk$Bi0oPa*s^@%^WYWm)BjfLcTX)3YM^=04`mp?#% z3zuujy+ZV_%1Vmwa~FGh5gX|li#><~L<>UO6!g0MecBCNURAXzDK=3*YwcZ6&EfoW z2k|#zXw}K2_|Tu+-re+kPViROY-jmbZ`E$MzYs$%*IT!)<|zJ>!+#TcA++7jF+ZX{ zE!zG?93ooLpN4vo>XDZb;VP##y>*-ExPqnlJgz1-5%<#m0N*3Dts;IV?x#PW&^F&< z%3WKZ6>ak@CYJv0RVR~UL$|skN>HEMUBqbe4n!6C9Ly$$ktZXsy7A#L96^*4+LqII z4~`|ak^dL>5r1qGNDk3|AMpsGZF^YF_sssi657_|3``}K6CG(kLwrTvm{>@>M06p>)88DQ!>g!m5wV80wj%80@};qFYHp&=bt}djkH7%Hm*!$5&ET zSsG0DWOyB;Dt?#cDf@^L_4PtWQ`x8AIu?VIb#^#y&N*_HmlJWoY1P*9qe z?kO+!`zrh%UwOH|G}kk?Aee8DniVK3@#Oi-yu(I&*i&9sP#UZbA9|))xWA(M+_doI z?3#P|JjFgwj;}OWkn79kmTpwO+_DNcqEm+%lHZM~yeyz``E!D08rN%!vKxkS%W{hR z0Z&d@NqHF~@!#vu(QrKFW&R)o4OEtT%I5|1%St^ZzEWSFzjOIKuHi2)o*oSNN-K(e zT-{sDAia4rmG}Z)UqDGtg*Ruul3brRx2PuZdl{lVxU!-qsR()fHQB6ycUH}5`32sB zQtc}UdMPGJq0d`buB52QTU2w!(qeCEv3kmjz2!CudS}+09w_q$%Csv`=?zpWnV;{? vXP_Q0l`0Exf1e5~%6;=nTKY?wL>hAnX8J3p`zo0MS~H8w@~R`(TyF6{Z6^{F delta 9192 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 Yxz7Dda$YJIRkCwldgT(Y<<}zq4}+p}$N&HU diff --git a/core/locale/es_ES/LC_MESSAGES/django.po b/core/locale/es_ES/LC_MESSAGES/django.po index 523da08b..ce04b674 100644 --- a/core/locale/es_ES/LC_MESSAGES/django.po +++ b/core/locale/es_ES/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: es-ES\n" +"Language: es-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,7 +29,8 @@ msgstr "Está activo" #: core/abstract.py:20 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" @@ -184,8 +185,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é." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -217,8 +217,8 @@ msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Compra un pedido como empresa, utilizando los `productos` proporcionados con " -"`product_uuid` y `attributes`." +"Compra un pedido como empresa, utilizando los `productos` proporcionados con" +" `product_uuid` y `attributes`." #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -241,7 +241,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescribir un grupo de atributos existente guardando los no editables" #: core/docs/drf/viewsets.py:57 -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" @@ -269,7 +270,8 @@ msgstr "Reescribir un atributo existente guardando los no editables" #: core/docs/drf/viewsets.py:84 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" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -292,10 +294,11 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescribir un valor de atributo existente guardando los no editables" #: core/docs/drf/viewsets.py:111 -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" +"Reescribir algunos campos de un valor de atributo existente guardando los no" +" editables" #: core/docs/drf/viewsets.py:118 msgid "list all categories (simple view)" @@ -438,7 +441,8 @@ msgstr "Reescribir un atributo existente guardando los no editables" #: core/docs/drf/viewsets.py:231 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" #: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" @@ -485,31 +489,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`." #: core/docs/drf/viewsets.py:277 @@ -568,12 +561,10 @@ msgstr "(exacto) Digital frente a físico" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -635,10 +626,14 @@ msgstr "Autocompletar direcciones" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limita la cantidad de resultados, 1 < límite < 10, por defecto: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -697,7 +692,8 @@ msgstr "Indique order_uuid o order_hr_id, ¡se excluyen mutuamente!" #: core/graphene/mutations.py:218 core/graphene/mutations.py:388 #: core/graphene/mutations.py:422 core/viewsets.py:261 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}" #: core/graphene/mutations.py:272 msgid "add a product to the wishlist" @@ -727,11 +723,11 @@ msgstr "Comprar un pedido" #: core/graphene/mutations.py:402 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" #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -787,7 +783,8 @@ msgstr "" "Qué atributos y valores se pueden utilizar para filtrar esta categoría." #: core/graphene/object_types.py:114 -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." @@ -811,7 +808,8 @@ msgstr "Cómo" #: core/graphene/object_types.py:242 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." #: core/graphene/object_types.py:249 msgid "represents feedback from a user." @@ -1073,7 +1071,8 @@ msgstr "Atributo de este valor" msgid "the specific product associated with this attribute's value" msgstr "El producto específico asociado al valor de este atributo" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Producto asociado" @@ -1242,7 +1241,8 @@ msgid "feedback comments" msgstr "Comentarios" #: core/models.py:423 -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" @@ -1345,8 +1345,8 @@ msgstr "No se pueden añadir productos inactivos al pedido" msgid "you cannot add more products than available in stock" msgstr "No puede añadir más productos de los disponibles en stock" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} no existe: {product_uuid}" @@ -1833,8 +1833,8 @@ msgstr "Hola %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "¡Gracias por su pedido #%(order.pk)s! Nos complace informarle de que hemos " "recibido su pedido. A continuación encontrará los detalles de su pedido:" @@ -1919,8 +1919,8 @@ msgstr "Clave" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Gracias por su pedido. Nos complace confirmarle su compra. A continuación " "encontrará los detalles de su pedido:" @@ -2006,6 +2006,3 @@ msgstr "favicon no encontrado" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Error de geocodificación: {e}" - -#~ msgid "translations" -#~ msgstr "Traducciones" diff --git a/core/locale/fr_FR/LC_MESSAGES/django.mo b/core/locale/fr_FR/LC_MESSAGES/django.mo index a74e467f8ababaa8d8ad27eb7430fe64d00d46a8..2428a523d64099b68e01af6ac7de45dcf93df255 100644 GIT binary patch delta 9703 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 UF`c2Att!8`Y}Vns)&)}j7i{(p%>V!Z delta 9192 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\n" "Language-Team: BRITISH ENGLISH \n" -"Language: fr-FR\n" +"Language: fr-fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,7 +29,8 @@ msgstr "Est actif" #: core/abstract.py:20 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." @@ -183,10 +184,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -244,7 +243,8 @@ msgstr "" "modifiables" #: core/docs/drf/viewsets.py:57 -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" @@ -273,8 +273,8 @@ msgstr "" #: core/docs/drf/viewsets.py:84 msgid "rewrite some fields of an existing attribute saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " -"non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" +" non modifiables" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -299,7 +299,8 @@ msgstr "" "modifiables" #: core/docs/drf/viewsets.py:111 -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" @@ -376,8 +377,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est " -"complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " +"Finalise l'achat de la commande. Si `force_balance` est utilisé, l'achat est" +" complété en utilisant le solde de l'utilisateur ; Si `force_payment` est " "utilisé, une transaction est initiée." #: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 @@ -446,8 +447,8 @@ msgstr "" #: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" msgstr "" -"Réécrire certains champs d'un attribut existant en sauvegardant les éléments " -"non modifiables" +"Réécrire certains champs d'un attribut existant en sauvegardant les éléments" +" non modifiables" #: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" @@ -494,29 +495,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`" @@ -575,12 +565,10 @@ msgstr "(exact) Numérique ou physique" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -642,10 +630,14 @@ msgstr "Saisie automatique des adresses" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limite la quantité de résultats, 1 < limite < 10, par défaut : 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -737,8 +729,8 @@ msgstr "Acheter une commande" #: core/graphene/mutations.py:402 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." @@ -798,7 +790,8 @@ msgstr "" "catégorie." #: core/graphene/object_types.py:114 -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." @@ -849,8 +842,8 @@ msgid "" "shipping address for this order, leave blank if same as billing address or " "if not applicable" msgstr "" -"Adresse d'expédition pour cette commande, laisser vide si elle est identique " -"à l'adresse de facturation ou si elle n'est pas applicable" +"Adresse d'expédition pour cette commande, laisser vide si elle est identique" +" à l'adresse de facturation ou si elle n'est pas applicable" #: core/graphene/object_types.py:291 msgid "total price of this order" @@ -1084,7 +1077,8 @@ msgstr "Attribut de cette valeur" msgid "the specific product associated with this attribute's value" msgstr "Le produit spécifique associé à la valeur de cet attribut" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Produit associé" @@ -1253,7 +1247,8 @@ msgid "feedback comments" msgstr "Commentaires" #: core/models.py:423 -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." @@ -1347,7 +1342,8 @@ msgstr "Un utilisateur ne peut avoir qu'un seul ordre en cours à la fois !" #: core/models.py:551 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." #: core/models.py:556 msgid "you cannot add inactive products to order" @@ -1358,8 +1354,8 @@ msgid "you cannot add more products than available in stock" msgstr "" "Vous ne pouvez pas ajouter plus de produits que ceux disponibles en stock" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} n'existe pas : {product_uuid}" @@ -1430,7 +1426,8 @@ msgstr "Prix d'achat au moment de la commande" #: core/models.py:794 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é" #: core/models.py:795 msgid "internal comments" @@ -1530,7 +1527,8 @@ msgstr "Images du produit" #: core/models.py:960 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" #: core/models.py:961 msgid "promo code identifier" @@ -1538,7 +1536,8 @@ msgstr "Identifiant du code promotionnel" #: core/models.py:968 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é" #: core/models.py:969 msgid "fixed discount amount" @@ -1546,7 +1545,8 @@ msgstr "Montant de l'escompte fixe" #: core/models.py:975 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é" #: core/models.py:976 msgid "percentage discount" @@ -1571,8 +1571,8 @@ msgstr "Heure de début de validité" #: core/models.py:993 msgid "timestamp when the promocode was used, blank if not used yet" msgstr "" -"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore " -"été utilisé." +"Date à laquelle le code promotionnel a été utilisé, vide s'il n'a pas encore" +" été utilisé." #: core/models.py:994 msgid "usage timestamp" @@ -1850,8 +1850,8 @@ msgstr "Bonjour %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Merci pour votre commande #%(order.pk)s ! Nous avons le plaisir de vous " "informer que nous avons pris en compte votre commande. Vous trouverez ci-" @@ -1937,8 +1937,8 @@ msgstr "Clé" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Nous vous remercions pour votre commande ! Nous avons le plaisir de " "confirmer votre achat. Vous trouverez ci-dessous les détails de votre " @@ -1967,8 +1967,8 @@ msgstr "Les données et le délai d'attente sont tous deux nécessaires" #: core/utils/caching.py:43 msgid "invalid timeout value, it must be between 0 and 216000 seconds" msgstr "" -"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre " -"0 et 216000 secondes." +"La valeur du délai d'attente n'est pas valide, elle doit être comprise entre" +" 0 et 216000 secondes." #: core/utils/db.py:7 #, python-brace-format @@ -2026,6 +2026,3 @@ msgstr "favicon introuvable" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erreur de géocodage : {e}" - -#~ msgid "translations" -#~ msgstr "Traductions" diff --git a/core/locale/it_IT/LC_MESSAGES/django.mo b/core/locale/it_IT/LC_MESSAGES/django.mo index cf4bf66b87169b4d1a3c0a113f0194e273e53033..76dab3374203d232dcfdf76b0607a2ecfce0fa29 100644 GIT binary patch delta 9697 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, 2025. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: 1\n" @@ -12,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: it-IT\n" +"Language: it-it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -34,10 +29,11 @@ msgstr "È attivo" #: core/abstract.py:20 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"Se impostato a false, questo oggetto non può essere visto dagli utenti senza " -"i necessari permessi." +"Se impostato a false, questo oggetto non può essere visto dagli utenti senza" +" i necessari permessi." #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -189,8 +185,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -247,7 +242,8 @@ msgstr "" "Riscrivere un gruppo di attributi esistente salvando i non modificabili" #: core/docs/drf/viewsets.py:57 -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" @@ -302,7 +298,8 @@ msgstr "" "modificabili" #: core/docs/drf/viewsets.py:111 -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" @@ -331,8 +328,8 @@ msgstr "" #: core/docs/drf/viewsets.py:138 msgid "rewrite some fields of an existing category saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: core/docs/drf/viewsets.py:145 msgid "list all orders (simple view)" @@ -368,8 +365,8 @@ msgstr "" #: core/docs/drf/viewsets.py:167 msgid "rewrite some fields of an existing order saving non-editables" msgstr "" -"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non " -"modificabili" +"Riscrivere alcuni campi di una categoria esistente salvando gli elementi non" +" modificabili" #: core/docs/drf/viewsets.py:171 msgid "purchase an order" @@ -382,8 +379,8 @@ msgid "" "transaction is initiated." msgstr "" "Finalizza l'acquisto dell'ordine. Se si utilizza `forza_bilancio`, " -"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza " -"`forza_pagamento`, viene avviata una transazione." +"l'acquisto viene completato utilizzando il saldo dell'utente; se si utilizza" +" `forza_pagamento`, viene avviata una transazione." #: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" @@ -424,8 +421,8 @@ msgstr "Elenco di tutti gli attributi (vista semplice)" #: core/docs/drf/viewsets.py:210 msgid "for non-staff users, only their own wishlists are returned." msgstr "" -"Per gli utenti che non fanno parte del personale, vengono restituite solo le " -"loro liste dei desideri." +"Per gli utenti che non fanno parte del personale, vengono restituite solo le" +" loro liste dei desideri." #: core/docs/drf/viewsets.py:214 msgid "retrieve a single wishlist (detailed view)" @@ -498,28 +495,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`" @@ -579,12 +566,10 @@ msgstr "(esatto) Digitale e fisico" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -602,7 +587,8 @@ msgstr "Creare un prodotto" #: core/docs/drf/viewsets.py:397 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" #: core/docs/drf/viewsets.py:412 msgid "" @@ -646,10 +632,14 @@ msgstr "Inserimento automatico dell'indirizzo" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limita la quantità di risultati, 1 < limite < 10, default: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -709,7 +699,8 @@ msgstr "" #: core/graphene/mutations.py:218 core/graphene/mutations.py:388 #: core/graphene/mutations.py:422 core/viewsets.py:261 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}" #: core/graphene/mutations.py:272 msgid "add a product to the wishlist" @@ -739,11 +730,11 @@ msgstr "Acquistare un ordine" #: core/graphene/mutations.py:402 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" #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -800,7 +791,8 @@ msgstr "" "categoria." #: core/graphene/object_types.py:114 -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." @@ -1084,7 +1076,8 @@ msgstr "Attributo di questo valore" msgid "the specific product associated with this attribute's value" msgstr "Il prodotto specifico associato al valore di questo attributo" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Prodotto associato" @@ -1252,7 +1245,8 @@ msgid "feedback comments" msgstr "Commenti di feedback" #: core/models.py:423 -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." @@ -1356,8 +1350,8 @@ msgid "you cannot add more products than available in stock" msgstr "" "Non è possibile aggiungere più prodotti di quelli disponibili in magazzino" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} non esiste: {product_uuid}" @@ -1535,7 +1529,8 @@ msgstr "Identificatore del codice promozionale" #: core/models.py:968 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" #: core/models.py:969 msgid "fixed discount amount" @@ -1596,8 +1591,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"È necessario definire un solo tipo di sconto (importo o percentuale), ma non " -"entrambi o nessuno." +"È necessario definire un solo tipo di sconto (importo o percentuale), ma non" +" entrambi o nessuno." #: core/models.py:1030 msgid "promocode already used" @@ -1845,8 +1840,8 @@ msgstr "Hello %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Grazie per il vostro ordine #%(order.pk)s! Siamo lieti di informarla che " "abbiamo preso in carico il suo ordine. Di seguito sono riportati i dettagli " @@ -1874,8 +1869,8 @@ msgid "" "if you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " -"%(config.EMAIL_HOST_USER)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" +" %(config.EMAIL_HOST_USER)s." #: core/templates/digital_order_created_email.html:130 #, python-format @@ -1917,8 +1912,8 @@ msgid "" "if you have any questions, feel free to contact our support at " "%(contact_email)s." msgstr "" -"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero " -"%(contact_email)s." +"Per qualsiasi domanda, non esitate a contattare il nostro supporto al numero" +" %(contact_email)s." #: core/templates/digital_order_delivered_email.html:162 #, python-format @@ -1932,8 +1927,8 @@ msgstr "Chiave" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Grazie per il vostro ordine! Siamo lieti di confermare il suo acquisto. Di " "seguito sono riportati i dettagli dell'ordine:" @@ -2000,8 +1995,8 @@ msgstr "Il parametro NOMINATIM_URL deve essere configurato!" #, python-brace-format msgid "image dimensions should not exceed w{max_width} x h{max_height} pixels" msgstr "" -"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height} " -"pixel" +"Le dimensioni dell'immagine non devono superare w{max_width} x h{max_height}" +" pixel" #: core/validators.py:22 msgid "invalid phone number format" @@ -2019,6 +2014,3 @@ msgstr "favicon non trovata" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Errore di geocodifica: {e}" - -#~ msgid "translations" -#~ msgstr "Traduzioni" diff --git a/core/locale/ja_JP/LC_MESSAGES/django.mo b/core/locale/ja_JP/LC_MESSAGES/django.mo index fc8d693e2705c8a839bec9d9687aefb7fcff6bd5..e0d5f5fa761f28a280d20ccfd78434728e091fee 100644 GIT binary patch delta 9692 zcmZYFd0bW1-pBEc11f_Gq@YX(1wrLFTcMan&O;9A%`At591xj~2XNLSqUMy-u|ZQ) zGt;cBu+rObv$V8qcq%h1&90@HWmal+>*n+MvR2PO&wjmryw|k%Ui-J!-jJ_e`l!y% z6LkWoqwC%8aJ&@aI0<+q(s4%CahzlEYIU5ZX^ztjqfq_n*1mWHb&qvA>Xa4O0w2dX zJcu#)8K&bUY=zC+)Q$@{SrpdOa0jN~xA;602xGKv@LF5PiN)in3;uu_7uwGBXCO^Z zFXU9G06XI2Pf{-c;l{TI|kTyf+{1>CJX$Nzo zR@j7kCTarN*c9(TO*GH;&$aCc?3D@srZWxQIx57~DhI-JRoyfl~Fo=c-EJm%_EL2Jt zVmPiuP2eHh{|4$wj@kMN)KZa?57t9ZXY#Kn$)`axFGZz( zKI+8vsEKVy-C!^32@cu*cTg8PiMq~djKXuM@xNhHj3k{(c@paF=wcljpr9M)V>C`j zU1%BV#%q!N<7`3po%0TA&40D^#$C<$9(XhDIhciWP!o9`HG#Km{Zovg{vB!}fxm1a zuA7-i7mTJO2ekxaP^q4X+|!wgn%HLSj!&R2cm{Q&E2t%`Pp2~27`226sMj_F)jt?X zPQbZ?f^M`JwHH=nAAAm#nO{&(Qujvlem6rcK{l%WHq-^j*!l$2^?cYCXX8z{10TaL zP~#WU*i7&L3JOfx*@oK1pP*9t1@^>dRG6tV5;L$G^(0TCJ~;0oL!GM_i*E9-4EDnt za4fp81holQq4vyfjMDr6G=*XK8ji!pJ-8Vbq9*hbYF8h`{`djv31gX^GLeGHR0b*| zHzP@N2BRjt0JW!f+x}-!6Mh2&+Ejl~=!ogrW-af;=G2QY9v9**xCM3NQ>ZmPZ~X=J z#MhDRI?=tz0uDm9moo$F;vUq5_M-O2r@hF(Zg9>v)Zs2k)SIG~q$BFWd6kaX{ZNVg1X*H)OFS)4;FBCQP7jU zU^@<@W_A+wK{;ppe??t5w4dpZM)fD7madbnXQ5uh!Pp*iQP*3A`j9=0&2T4%>-~S3 zf>Lz^wU%F^2L6WH?R9zQbV4L*qODQ=U9c1OLKl{zcK2#js`sNd-A|Z|bqBDKu{E~C zrI^6|of-;yf)7w9oJ8%3ix`S62bxWjf@Ikli@L!kWQcPdH7;?GnP@8NhCQ$qj5}(&ZdL7uFqO)-)BB`YhD>gRwp4VP{-peI46T zzk=zQJk;#^0jTzAL&<;blhDwGhU2Ju!(rw^x1uspj(nq>?Y8|i>dBkl?l`;<&RA4^ zBlf|6BcBwf^>9=7U_I*FQQwuvF%rKRPX3jm?`Y5yMUHTsdoT$b;~cDgpRqpmEvOTB zpi=%EcEkh73*=m|?U}p^>hFqS*aLN)e%KW6!iG3CK*3F+9M|DCEWmD~Ov*N4AL@rt zq z)DzFcaI8kH^=fR5yHOW>7nOmF*a+kQVU{or_2d&U4hvCxX(6`7W5@&p&NT|!3<-Cd zCmMiFsF$MFY(DDAt1%j%Mg7h=gqrXfR3_?=HNT`XQ4=phO<)>oDdu7vR-+zh6W0Fz z-$g+KUqwC1QEY&}qX$FyaCgATn1buDFYZIF;qR!uQfHjmOHmj@y&Ebc15rye3bk2R zp*H6Sn4|Z<@!e(#Mxs(PAG_f$)WB0%jq&VErT!7rW_ts>VCZ=BeaJ#Br4NNZ*^G?)T@gm0I zVN^y>qt^TaYQkMfr^ZdkW4Oq}`rk-lWG-u0mro*U#&3B|3V*cL%{O1ZSWKY*Zp^}& zs2e_qydcgy7>Y>+W_%iUqF#u~$VSwjIgCm8T><%5q0tm`!3vX+1dtmBRA?sLs8?Wp_Zx&HNgi_*Q>GZZ%Xd(d_h4o``LEHfkbgFdF~FfCe@xHz%Z_CeqWIgL<+-sMl-? zYL8T*GW0fTA|Ip9`x-UwqP1Ryd5}cZ4M*c7EU@(>734pIhRo8Z)|G&jsgov;{( z;X|k!oI~y2AFvrVn{Hn(RDA??!hGzF58^pIfja-y8D_$VQ4ex_2Km?SOq%I9d>x(k zn2*b_KVHV}c+)KNTd@Rn;uAOte?g^m^lUS6A8I12u^T>y9q=<$#v08re?i4yHT8@D z1t#M>iEL~qb*`Cd5aXzC#4%WdwHKIY`eRV3Z;8rOJJb{RLVfAxp`Lh`?cZzrUq@}y zI`hpJGLTL|H!89&!g%VNQK>$Fy3tptO#Nj23w2&N8PpP{T8CjV_35YyoJDQU?@-st zUSQt;p~wRToKgy1>6nRG_#`TY=kRv?6Z_$iDzn?yqQ-q}ZM@K|`9Rd$Fbj3#mr>Vw z19jt*)(fcX{*Iw~{|B-V8ZaDn;zVmc>H;OUzZ#X9ASU5nR7T!IW#V(x`B(5J`~%lx z*F|PxM^KwHe6d-oY>eRk&Rhyw!)2(6Y_jzyt^Y#Z=tI=neuw3!W`;uRJ#v# zy(Os3Za_`&UDO^rhoN{GYv2E0Dd@=}?==J3TDw|%p;A5o_2gBUja#t*PoXB*Z>hQQ zDAWzS)?!qDxpjf{zNO?}GuudmW>#Z6Ua`JyJz@RY`jho9YxpvA<2Y1`+oLjZk8Ss( z9&oX(Z^Ij@?^{Ox^*UU%9Zi>;6I-KB$U;qUjBPK)cGMT4GO`!7yD#8q?76~>UxOOA z8+qfLk5M-qwbJx2LuF`tfI=e;L^sx81b&76@e;;{@DaMtTyWSb^P!rFy1*x>wLXO@ zc-b1g+FY+2sy)}b$hs4?Hv&f}@QoP??!!twD|Z!I~5_|Hw5Q$$Y?hf)(UIBpL>zQo0AD@i|*RjC$f@ zw*D=SqW&X}!<-G~wcTue3U!@VP?*2}PmW<8iaz|FIPKm^s%_dtm0nCgnR( z15ep{%S~n?BT?f@P*3tOcEw|;*VEZ-_DV9UJ{Yx>g*XJaVitan0ev{yY~kPdH2^j9 zgQ!#;K|T3#jKiN$uT|J1=C_~=8&faDQk;p}%;!<({e+bmxz*gb8g;+-u{TCd>NJ5u$^Wz z=VA`^*YGy18+hD2=>SwpHlW^uleix{>@sV39(AG6-Db@vpfa}_``|I`f{{;{{|fGd zx?TV~;J;9NZdn7~?E z(rM|3i)_!As3m=dwgJT7M*-ynwtkex6~tI#ydCf-wj(YPS`i%&61Q;;bs}mXFC^*_3#i{?`=~m68Jt1Xc@dqn zYOu!=+Vs`mPt2ih1}?`YsH3I9c^~y92q*GGoT*L<1Nu-&BsSQ=3Fx8Ti1_=cq3r`( znM*m6awSf+ZJqIMTfUF>7PhP{^d`|OcxzH@)@XWeBG%9{3cC@zi57&8yU}gSpHL68 z()8-GifuhbaFC`QH5BaVMocv@a$$5;``8)c%W&6WnDR+tCXq7v*va`d=X)AsSHro+zdqieN|;dsef+UKC&*O zJ(qG05l#7sZHIvKJ3nX97(wV*g_AIqs3zJ`f0npNS--yK5-$@Si7~Xt;XeEhb<87{ zQ`b?1?QOXVR}&8t-H9>uuM7$B3!1_g#507B9>hNw@D;Ykb=VmnB>q08Q+SN}KXDat zBjp>2Zj^r@CJ+m$kH#~^)0C$XQAAw@Z4)p_Te}CLqc@($y+l0Gm^e?oNP8wLW0&N8hJJA+eXXM~SP!qpjluA(ZA3vx!cG zj?EZ`#e|=TC4M2c)1FEkq#Qx$@Kg6;1*YII)bTcPC*`Nmi=W{`#16{$qmHNbOSgeN zA@|2WSmR4lCI=ix6#f9q4c6IKQ>B{rwdl=Be)xDGBnOJ>_1P$LI5w=DB7RR!lLY^8IBct^#kFd(a3MJ-)KS z(u$fo0}nT^Gu2mfbi&}2tn<&WIk#og*@f%AS^C0-4QtL;Z8*Dd#s8ni+3I`GR^NYi z;qJ55d(Kub)pVj4jED&2l}#@4`dyRDN_=HZz&q1BS+j8Y%DffK&tF;U^3AH4Qda6J z@sxTByd8YAcqFf{cw&X$Q(9i^sqnho#mvoJkgI~n@Amjrm|X6jJX?i4k2|lZw%~Q= z{XMv{TrJ-6fZJPJ%J;kTYfqa}=q@Z(Utxut98#F-aZmNBP*mhDs=Z>VyR=vhzGAn} z6e`@gwP*Xw-2O6k`77Q2N)={LaZh2MF1Lqg^mBWU(kXnNStZ^Ur7Rtl>4mx8@`;{G R@=h(cxU8VYvvOSG{{p(`AhiGh delta 9192 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\n" "Language-Team: BRITISH ENGLISH \n" -"Language: ja-JP\n" +"Language: ja-jp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,8 +19,7 @@ msgstr "ユニークID" #: core/abstract.py:12 msgid "unique id is used to surely identify any database object" -msgstr "" -"ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" +msgstr "ユニークIDは、データベースオブジェクトを確実に識別するために使用されます。" #: core/abstract.py:19 msgid "is active" @@ -28,10 +27,9 @@ msgstr "アクティブ" #: core/abstract.py:20 msgid "" -"if set to false, this object can't be seen by users without needed permission" -msgstr "" -"falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーに" -"は見えない。" +"if set to false, this object can't be seen by users without needed " +"permission" +msgstr "falseに設定された場合、このオブジェクトは必要なパーミッションのないユーザーには見えない。" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -183,8 +181,7 @@ msgid "" "apply key, data and timeout with authentication to write data to cache." msgstr "" "許可されたデータをキャッシュから読み出すには、キーのみを適用する。\n" -"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用" -"する。" +"キャッシュにデータを書き込むには、認証付きのキー、データ、タイムアウトを適用する。" #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -214,9 +211,7 @@ msgstr "ビジネスとして注文を購入する" msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." -msgstr "" -"提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスと" -"して注文を購入する。" +msgstr "提供された `product` と `product_uuid` と `attributes` を使用して、ビジネスとして注文を購入する。" #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -239,10 +234,9 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "既存の属性グループを書き換えて、編集不可能なものを保存する。" #: core/docs/drf/viewsets.py:57 -msgid "rewrite some fields of an existing attribute group saving non-editables" -msgstr "" -"既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存す" -"る。" +msgid "" +"rewrite some fields of an existing attribute group saving non-editables" +msgstr "既存の属性グループのいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: core/docs/drf/viewsets.py:64 msgid "list all attributes (simple view)" @@ -266,8 +260,7 @@ msgstr "既存の属性を書き換える。" #: core/docs/drf/viewsets.py:84 msgid "rewrite some fields of an existing attribute saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: core/docs/drf/viewsets.py:91 msgid "list all attribute values (simple view)" @@ -290,9 +283,9 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "既存の属性値を書き換える。" #: core/docs/drf/viewsets.py:111 -msgid "rewrite some fields of an existing attribute value saving non-editables" -msgstr "" -"既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" +msgid "" +"rewrite some fields of an existing attribute value saving non-editables" +msgstr "既存の属性値のいくつかのフィールドを書き換え、編集不可能な値を保存する。" #: core/docs/drf/viewsets.py:118 msgid "list all categories (simple view)" @@ -360,9 +353,8 @@ msgid "" "completed using the user's balance; if `force_payment` is used, a " "transaction is initiated." msgstr "" -"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用し" -"て購入が完了します。 `force_payment` が使用された場合、トランザクションが開始" -"されます。" +"注文の購入を確定する。force_balance` が使用された場合、ユーザーの残高を使用して購入が完了します。 `force_payment` " +"が使用された場合、トランザクションが開始されます。" #: core/docs/drf/viewsets.py:185 core/graphene/mutations.py:226 msgid "purchase an order without account creation" @@ -380,8 +372,7 @@ msgstr "注文に商品を追加する" msgid "" "adds a product to an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" +msgstr "指定した `product_uuid` と `attributes` を使用して、商品を注文に追加する。" #: core/docs/drf/viewsets.py:200 msgid "remove product from order" @@ -391,9 +382,7 @@ msgstr "注文から商品を削除する" msgid "" "removes a product from an order using the provided `product_uuid` and " "`attributes`." -msgstr "" -"指定された `product_uuid` と `attributes` を使用して、注文から商品を削除す" -"る。" +msgstr "指定された `product_uuid` と `attributes` を使用して、注文から商品を削除する。" #: core/docs/drf/viewsets.py:209 msgid "list all wishlists (simple view)" @@ -425,8 +414,7 @@ msgstr "既存の属性を書き換える。" #: core/docs/drf/viewsets.py:231 msgid "rewrite some fields of an existing wishlist saving non-editables" -msgstr "" -"既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" +msgstr "既存の属性のいくつかのフィールドを書き換え、編集不可能なものを保存する。" #: core/docs/drf/viewsets.py:235 msgid "add product to wishlist" @@ -442,8 +430,7 @@ msgstr "ウィッシュリストから商品を削除する" #: core/docs/drf/viewsets.py:242 msgid "removes a product from an wishlist using the provided `product_uuid`" -msgstr "" -"指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" +msgstr "指定された `product_uuid` を使ってウィッシュリストから商品を削除します。" #: core/docs/drf/viewsets.py:247 msgid "add many products to wishlist" @@ -451,8 +438,7 @@ msgstr "ウィッシュリストに多くの商品を追加する" #: core/docs/drf/viewsets.py:248 msgid "adds many products to an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストに多くの商品を追加する。" #: core/docs/drf/viewsets.py:253 msgid "remove many products from wishlist" @@ -461,34 +447,24 @@ msgstr "注文から商品を削除する" #: core/docs/drf/viewsets.py:254 msgid "" "removes many products from an wishlist using the provided `product_uuids`" -msgstr "" -"指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" +msgstr "指定された `product_uuids` を使ってウィッシュリストから多くの商品を削除する。" #: core/docs/drf/viewsets.py:261 msgid "" "Filter by one or more attribute name/value pairs. \n" "• **Syntax**: `attr_name=method-value[;attr2=method2-value2]…` \n" -"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" -"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), " -"`true`/`false` for booleans, integers, floats; otherwise treated as " -"string. \n" +"• **Methods** (defaults to `icontains` if omitted): `iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in` \n" +"• **Value typing**: JSON is attempted first (so you can pass lists/dicts), `true`/`false` for booleans, integers, floats; otherwise treated as string. \n" "• **Base64**: prefix with `b64-` to URL-safe base64-encode the raw value. \n" "Examples: \n" -"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\"," -"\"bluetooth\"]`, \n" +"`color=exact-red`, `size=gt-10`, `features=in-[\"wifi\",\"bluetooth\"]`, \n" "`b64-description=icontains-aGVhdC1jb2xk`" msgstr "" "1つまたは複数の属性名/値のペアでフィルタリングします。 \n" "- シンタックス**:attr_name=method-value[;attr2=method2-value2]...`。\n" -"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, " -"`icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, " -"`iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" -"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場" -"合は文字列として扱う。 \n" -"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとして" -"つけると、生の値を URL-safe base64-encode することができる。 \n" +"- メソッド** (省略された場合のデフォルトは `icontains`):`iexact`, `exact`, `icontains`, `contains`, `isnull`, `startswith`, `istartswith`, `endswith`, `iendswith`, `regex`, `iregex`, `lt`, `lte`, `gt`, `gte`, `in`.\n" +"- 値の型付け**:boolean, integer, float の場合は `true`/`false`; それ以外の場合は文字列として扱う。 \n" +"- それ以外は文字列として扱われる。 **Base64**: `b64-` をプレフィックスとしてつけると、生の値を URL-safe base64-encode することができる。 \n" "例 \n" "color=exact-red`、`size=gt-10`、`features=in-[\"wifi\", \"bluetooth\"]`、\n" "b64-description=icontains-aGVhdC1jb2xk`。" @@ -547,12 +523,10 @@ msgstr "(正確には)デジタルとフィジカル" #: core/docs/drf/viewsets.py:361 msgid "" -"Comma-separated list of fields to sort by. Prefix with `-` for " -"descending. \n" +"Comma-separated list of fields to sort by. Prefix with `-` for descending. \n" "**Allowed:** uuid, rating, name, slug, created, modified, price, random" msgstr "" -"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスと" -"してつける。 \n" +"カンマ区切りの並べ替えフィールドのリスト。降順の場合は `-` をプレフィックスとしてつける。 \n" "**許可:** uuid, rating, name, slug, created, modified, price, random" #: core/docs/drf/viewsets.py:375 @@ -575,9 +549,7 @@ msgstr "編集不可能なフィールドを保持したまま、既存の製品 #: core/docs/drf/viewsets.py:412 msgid "" "update some fields of an existing product, preserving non-editable fields" -msgstr "" -"編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新す" -"る。" +msgstr "編集不可能なフィールドを保持したまま、既存の製品の一部のフィールドを更新する。" #: core/docs/drf/viewsets.py:427 msgid "delete a product" @@ -614,10 +586,14 @@ msgstr "オートコンプリート住所入力" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l n-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "結果を制限する, 1 < limit < 10, デフォルト: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -706,10 +682,9 @@ msgstr "注文する" #: core/graphene/mutations.py:402 msgid "" -"please send the attributes as the string formatted like attr1=value1," -"attr2=value2" -msgstr "" -"属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" +"please send the attributes as the string formatted like " +"attr1=value1,attr2=value2" +msgstr "属性は、attr1=value1,attr2=value2のような形式の文字列として送信してください。" #: core/graphene/mutations.py:485 msgid "original address string provided by the user" @@ -764,7 +739,8 @@ msgid "which attributes and values can be used for filtering this category." msgstr "このカテゴリのフィルタリングに使用できる属性と値。" #: core/graphene/object_types.py:114 -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 "このカテゴリーの商品の最低価格と最高価格がある場合。" #: core/graphene/object_types.py:210 core/models.py:403 @@ -1044,7 +1020,8 @@ msgstr "この値の属性" msgid "the specific product associated with this attribute's value" msgstr "この属性の値に関連する特定の製品" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "関連製品" @@ -1209,7 +1186,8 @@ msgid "feedback comments" msgstr "フィードバック・コメント" #: core/models.py:423 -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 "このフィードバックが対象としている注文の特定の製品を参照する。" #: core/models.py:424 @@ -1258,8 +1236,7 @@ msgstr "注文状況" #: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" -msgstr "" -"ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" +msgstr "ユーザーに表示する通知のJSON構造、管理UIではテーブルビューが使用されます。" #: core/models.py:487 msgid "json representation of order attributes for this order" @@ -1309,8 +1286,8 @@ msgstr "アクティブでない商品を注文に追加することはできま msgid "you cannot add more products than available in stock" msgstr "在庫以上の商品を追加することはできません。" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name}が存在しません:{product_uuid}が存在しません。" @@ -1356,9 +1333,7 @@ msgstr "注文を完了するための資金不足" msgid "" "you cannot buy without registration, please provide the following " "information: customer name, customer email, customer phone number" -msgstr "" -"ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お" -"客様のお名前、お客様のEメール、お客様の電話番号" +msgstr "ご登録がない場合はご購入いただけませんので、以下の情報をお知らせください:お客様のお名前、お客様のEメール、お客様の電話番号" #: core/models.py:735 msgid "invalid payment method" @@ -1540,9 +1515,7 @@ msgstr "プロモコード" msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." -msgstr "" -"割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちら" -"も定義してはならない。" +msgstr "割引の種類は1つだけ(金額またはパーセント)定義されるべきで、両方またはどちらも定義してはならない。" #: core/models.py:1030 msgid "promocode already used" @@ -1790,11 +1763,9 @@ msgstr "こんにちは、%(order.user.first_name)sです、" #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" -msgstr "" -"ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいた" -"します。以下、ご注文の詳細です:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" +msgstr "ご注文ありがとうございます#%(order.pk)s!ご注文を承りましたことをお知らせいたします。以下、ご注文の詳細です:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1817,9 +1788,7 @@ msgstr "合計価格" msgid "" "if you have any questions, feel free to contact our support at " "%(config.EMAIL_HOST_USER)s." -msgstr "" -"ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わ" -"せください。" +msgstr "ご不明な点がございましたら、%(config.EMAIL_HOST_USER)sまでお気軽にお問い合わせください。" #: core/templates/digital_order_created_email.html:130 #, python-format @@ -1847,8 +1816,7 @@ msgstr "こんにちは、%(user_first_name)sです、" msgid "" "we have successfully processed your order №%(order_uuid)s! below are the " "details of your order:" -msgstr "" -"ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" +msgstr "ご注文の№%(order_uuid)sが正常に処理されました!以下はご注文の詳細です:" #: core/templates/digital_order_delivered_email.html:127 msgid "additional information" @@ -1859,9 +1827,7 @@ msgstr "追加情報" msgid "" "if you have any questions, feel free to contact our support at " "%(contact_email)s." -msgstr "" -"ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせくださ" -"い。" +msgstr "ご不明な点がございましたら、%(contact_email)sまでお気軽にお問い合わせください。" #: core/templates/digital_order_delivered_email.html:162 #, python-format @@ -1875,11 +1841,9 @@ msgstr "キー" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" -msgstr "" -"ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の" -"詳細です:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" +msgstr "ご注文ありがとうございます!ご購入を確認させていただきました。以下、ご注文の詳細です:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -1959,6 +1923,3 @@ msgstr "ファビコンが見つかりません" #, python-brace-format msgid "Geocoding error: {e}" msgstr "ジオコーディングエラー:{e}" - -#~ msgid "translations" -#~ msgstr "翻訳" diff --git a/core/locale/nl_NL/LC_MESSAGES/django.mo b/core/locale/nl_NL/LC_MESSAGES/django.mo index 27feb80cdd2fb67d0f7d331260d72d712b639249..4d5fdc0847618ac0027b6c446947127638de67ca 100644 GIT binary patch delta 9700 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 E9{{Nc+W-In delta 9192 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 U%@~*!o!flo@S?dNFZnFu{|iEO)c^nh diff --git a/core/locale/nl_NL/LC_MESSAGES/django.po b/core/locale/nl_NL/LC_MESSAGES/django.po index 9ce40620..09f4a61b 100644 --- a/core/locale/nl_NL/LC_MESSAGES/django.po +++ b/core/locale/nl_NL/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: nl-NL\n" +"Language: nl-nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,7 +27,8 @@ msgstr "Is actief" #: core/abstract.py:20 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" @@ -182,8 +183,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -241,7 +241,8 @@ msgstr "" "opslaan" #: core/docs/drf/viewsets.py:57 -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" @@ -296,7 +297,8 @@ msgstr "" "attributen worden opgeslagen" #: core/docs/drf/viewsets.py:111 -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" @@ -334,7 +336,8 @@ msgstr "Alle categorieën weergeven (eenvoudige weergave)" #: core/docs/drf/viewsets.py:146 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." #: core/docs/drf/viewsets.py:150 msgid "retrieve a single order (detailed view)" @@ -383,7 +386,8 @@ msgstr "een bestelling kopen zonder een account aan te maken" #: core/docs/drf/viewsets.py:186 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." #: core/docs/drf/viewsets.py:194 msgid "add product to order" @@ -491,28 +495,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`." @@ -571,14 +565,11 @@ msgstr "(exact) Digitaal vs. fysiek" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" @@ -640,10 +631,14 @@ msgstr "Automatische adresinvoer" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "beperkt de hoeveelheid resultaten, 1 < limiet < 10, standaard: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -732,8 +727,8 @@ msgstr "Een bestelling kopen" #: core/graphene/mutations.py:402 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" @@ -792,7 +787,8 @@ msgstr "" "filteren." #: core/graphene/object_types.py:114 -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." @@ -1078,7 +1074,8 @@ msgstr "Attribuut van deze waarde" msgid "the specific product associated with this attribute's value" msgstr "Het specifieke product geassocieerd met de waarde van dit kenmerk" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Bijbehorend product" @@ -1246,7 +1243,8 @@ msgid "feedback comments" msgstr "Reacties" #: core/models.py:423 -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" @@ -1351,8 +1349,8 @@ msgstr "U kunt geen inactieve producten toevoegen aan uw bestelling" msgid "you cannot add more products than available in stock" msgstr "Je kunt niet meer producten toevoegen dan er op voorraad zijn" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} bestaat niet: {product_uuid}" @@ -1360,8 +1358,8 @@ msgstr "{name} bestaat niet: {product_uuid}" #: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" msgstr "" -"U kunt geen producten verwijderen uit een bestelling die niet in behandeling " -"is." +"U kunt geen producten verwijderen uit een bestelling die niet in behandeling" +" is." #: core/models.py:603 #, python-brace-format @@ -1563,7 +1561,8 @@ msgstr "Begin geldigheidsduur" #: core/models.py:993 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" #: core/models.py:994 msgid "usage timestamp" @@ -1590,8 +1589,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage), " -"maar niet beide of geen van beide." +"Er moet slechts één type korting worden gedefinieerd (bedrag of percentage)," +" maar niet beide of geen van beide." #: core/models.py:1030 msgid "promocode already used" @@ -1840,8 +1839,8 @@ msgstr "Hallo %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Hartelijk dank voor uw bestelling #%(order.pk)s! We zijn blij om u te " "informeren dat we uw bestelling in behandeling hebben genomen. Hieronder " @@ -1927,8 +1926,8 @@ msgstr "Sleutel" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Bedankt voor uw bestelling! We zijn blij om uw aankoop te bevestigen. " "Hieronder vindt u de gegevens van uw bestelling:" @@ -1955,7 +1954,8 @@ msgstr "Zowel gegevens als time-out zijn vereist" #: core/utils/caching.py:43 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" #: core/utils/db.py:7 #, python-brace-format @@ -2013,6 +2013,3 @@ msgstr "favicon niet gevonden" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Fout bij geocodering: {e}" - -#~ msgid "translations" -#~ msgstr "Vertalingen" diff --git a/core/locale/pl_PL/LC_MESSAGES/django.mo b/core/locale/pl_PL/LC_MESSAGES/django.mo index df72b5464dda2020b5a3e4c4b51bad7c6ed9eeff..24e19b6fd662adf32e7f9892beed497bfe1144f5 100644 GIT binary patch delta 9693 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 Ml6z?7T^}|5KV9t!X#fBK delta 9192 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 Y5;\n" "Language-Team: BRITISH ENGLISH \n" -"Language: pl-PL\n" +"Language: pl-pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,7 +29,8 @@ msgstr "Jest aktywny" #: core/abstract.py:20 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ń." @@ -184,8 +185,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -242,7 +242,8 @@ msgstr "" "nieedytowalnych" #: core/docs/drf/viewsets.py:57 -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" @@ -297,7 +298,8 @@ msgstr "" "nieedytowalnych" #: core/docs/drf/viewsets.py:111 -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" @@ -488,28 +490,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`" @@ -568,12 +560,10 @@ msgstr "(dokładnie) Cyfrowe vs. fizyczne" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -635,10 +625,14 @@ msgstr "Wprowadzanie adresu w trybie autouzupełniania" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "ogranicza ilość wyników, 1 < limit < 10, domyślnie: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -727,8 +721,8 @@ msgstr "Kup zamówienie" #: core/graphene/mutations.py:402 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" @@ -787,7 +781,8 @@ msgstr "" "Które atrybuty i wartości mogą być używane do filtrowania tej kategorii." #: core/graphene/object_types.py:114 -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." @@ -950,8 +945,7 @@ msgstr "Numer telefonu firmy" #: core/graphene/object_types.py:464 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" #: core/graphene/object_types.py:465 msgid "email host user" @@ -1071,7 +1065,8 @@ msgstr "Atrybut tej wartości" msgid "the specific product associated with this attribute's value" msgstr "Konkretny produkt powiązany z wartością tego atrybutu" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Produkt powiązany" @@ -1238,7 +1233,8 @@ msgid "feedback comments" msgstr "Komentarze zwrotne" #: core/models.py:423 -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." @@ -1327,7 +1323,8 @@ msgstr "Zamówienie" #: core/models.py:527 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!" #: core/models.py:551 msgid "you cannot add products to an order that is not a pending one" @@ -1343,8 +1340,8 @@ msgstr "Nie można dodać nieaktywnych produktów do zamówienia" msgid "you cannot add more products than available in stock" msgstr "Nie można dodać więcej produktów niż jest dostępnych w magazynie" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nie istnieje: {product_uuid}" @@ -1413,7 +1410,8 @@ msgstr "Cena zakupu w momencie zamówienia" #: core/models.py:794 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" #: core/models.py:795 msgid "internal comments" @@ -1481,7 +1479,8 @@ msgstr "Etykieta produktu" #: core/models.py:919 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" #: core/models.py:920 msgid "image alt text" @@ -1831,8 +1830,8 @@ msgstr "Witam %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Dziękujemy za zamówienie #%(order.pk)s! Z przyjemnością informujemy, że " "przyjęliśmy Twoje zamówienie do realizacji. Poniżej znajdują się szczegóły " @@ -1890,8 +1889,8 @@ msgid "" "we have successfully processed your order №%(order_uuid)s! below are the " "details of your order:" msgstr "" -"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują " -"się szczegóły zamówienia:" +"Pomyślnie przetworzyliśmy Twoje zamówienie №%(order_uuid)s! Poniżej znajdują" +" się szczegóły zamówienia:" #: core/templates/digital_order_delivered_email.html:127 msgid "additional information" @@ -1918,8 +1917,8 @@ msgstr "Klucz" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Dziękujemy za zamówienie! Z przyjemnością potwierdzamy zakup. Poniżej " "znajdują się szczegóły zamówienia:" @@ -2005,6 +2004,3 @@ msgstr "nie znaleziono favicon" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Błąd geokodowania: {e}" - -#~ msgid "translations" -#~ msgstr "Tłumaczenia" diff --git a/core/locale/pt_BR/LC_MESSAGES/django.mo b/core/locale/pt_BR/LC_MESSAGES/django.mo index 5afa127e960039ed21c8dfea97e9c895508bf5ea..8f286ffe22322716c3114eb15e637c6600666af9 100644 GIT binary patch delta 9698 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\n" "Language-Team: BRITISH ENGLISH \n" -"Language: pt-BR\n" +"Language: pt-br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,7 +29,8 @@ msgstr "Está ativo" #: core/abstract.py:20 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" @@ -184,8 +185,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -241,7 +241,8 @@ msgid "rewrite an existing attribute group saving non-editables" msgstr "Reescrever um grupo de atributos existente salvando os não editáveis" #: core/docs/drf/viewsets.py:57 -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" @@ -292,7 +293,8 @@ msgid "rewrite an existing attribute value saving non-editables" msgstr "Reescreva um valor de atributo existente salvando os não editáveis" #: core/docs/drf/viewsets.py:111 -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" @@ -480,28 +482,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`" @@ -561,14 +553,11 @@ msgstr "(exato) Digital vs. físico" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" @@ -629,10 +618,14 @@ msgstr "Entrada de endereço com preenchimento automático" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limita a quantidade de resultados, 1 < limite < 10, padrão: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -721,8 +714,8 @@ msgstr "Comprar um pedido" #: core/graphene/mutations.py:402 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" @@ -780,7 +773,8 @@ msgstr "" "Quais atributos e valores podem ser usados para filtrar essa categoria." #: core/graphene/object_types.py:114 -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." #: core/graphene/object_types.py:210 core/models.py:403 @@ -1064,7 +1058,8 @@ msgstr "Atributo desse valor" msgid "the specific product associated with this attribute's value" msgstr "O produto específico associado ao valor desse atributo" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Produto associado" @@ -1232,10 +1227,11 @@ msgid "feedback comments" msgstr "Comentários de feedback" #: core/models.py:423 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Faz referência ao produto específico em um pedido sobre o qual se trata esse " -"feedback" +"Faz referência ao produto específico em um pedido sobre o qual se trata esse" +" feedback" #: core/models.py:424 msgid "related order product" @@ -1336,8 +1332,8 @@ msgid "you cannot add more products than available in stock" msgstr "" "Não é possível adicionar mais produtos do que os disponíveis em estoque" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} não existe: {product_uuid}" @@ -1358,7 +1354,8 @@ msgstr "O código promocional não existe" #: core/models.py:643 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!" #: core/models.py:662 msgid "address does not exist" @@ -1472,7 +1469,8 @@ msgstr "Etiqueta do produto" #: core/models.py:919 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" #: core/models.py:920 msgid "image alt text" @@ -1574,8 +1572,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não " -"ambos ou nenhum." +"Apenas um tipo de desconto deve ser definido (valor ou porcentagem), mas não" +" ambos ou nenhum." #: core/models.py:1030 msgid "promocode already used" @@ -1825,8 +1823,8 @@ msgstr "Olá %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Obrigado por seu pedido #%(order.pk)s! Temos o prazer de informá-lo de que " "seu pedido foi colocado em prática. Abaixo estão os detalhes de seu pedido:" @@ -1911,8 +1909,8 @@ msgstr "Chave" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Obrigado por seu pedido! Temos o prazer de confirmar sua compra. Abaixo " "estão os detalhes de seu pedido:" @@ -1996,6 +1994,3 @@ msgstr "favicon não encontrado" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Erro de geocodificação: {e}" - -#~ msgid "translations" -#~ msgstr "Traduções" diff --git a/core/locale/ro_RO/LC_MESSAGES/django.mo b/core/locale/ro_RO/LC_MESSAGES/django.mo index 226d51333591bf72c709dccf70bb00ea380c1bce..208df4c695721086a499c42a5d96c5c963377e6b 100644 GIT binary patch delta 9698 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 diff --git a/core/locale/ro_RO/LC_MESSAGES/django.po b/core/locale/ro_RO/LC_MESSAGES/django.po index ea615cd4..fa4ff1bf 100644 --- a/core/locale/ro_RO/LC_MESSAGES/django.po +++ b/core/locale/ro_RO/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: ro-RO\n" +"Language: ro-ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,10 +29,11 @@ msgstr "Este activ" #: core/abstract.py:20 msgid "" -"if set to false, this object can't be seen by users without needed permission" +"if set to false, this object can't be seen by users without needed " +"permission" msgstr "" -"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără " -"permisiunea necesară" +"Dacă este setat la false, acest obiect nu poate fi văzut de utilizatori fără" +" permisiunea necesară" #: core/abstract.py:22 core/choices.py:18 msgid "created" @@ -184,8 +185,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." #: core/docs/drf/views.py:32 msgid "get a list of supported languages" @@ -206,8 +206,8 @@ msgstr "Solicitați un URL CORSed. Numai https este permis." #: core/docs/drf/views.py:85 msgid "global search endpoint to query across project's tables" msgstr "" -"Punct final de căutare globală pentru a efectua interogări în toate tabelele " -"proiectului" +"Punct final de căutare globală pentru a efectua interogări în toate tabelele" +" proiectului" #: core/docs/drf/views.py:91 msgid "purchase an order as a business" @@ -218,8 +218,8 @@ msgid "" "purchase an order as a business, using the provided `products` with " "`product_uuid` and `attributes`." msgstr "" -"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid` " -"și `attributes` furnizate." +"Achiziționați o comandă ca o afacere, utilizând `products` cu `product_uuid`" +" și `attributes` furnizate." #: core/docs/drf/viewsets.py:37 msgid "list all attribute groups (simple view)" @@ -240,10 +240,12 @@ msgstr "Ștergerea unui grup de atribute" #: core/docs/drf/viewsets.py:53 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" #: core/docs/drf/viewsets.py:57 -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" @@ -296,7 +298,8 @@ msgstr "" "Rescrierea unei valori de atribut existente care salvează non-editabile" #: core/docs/drf/viewsets.py:111 -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" @@ -488,29 +491,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`" @@ -569,12 +561,10 @@ msgstr "(exact) Digital vs. fizic" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 @@ -637,10 +627,14 @@ msgstr "Autocompletare adresă de intrare" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a plăți -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "limitează cantitatea de rezultate, 1 < limit < 10, implicit: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -730,8 +724,8 @@ msgstr "Cumpărați o comandă" #: core/graphene/mutations.py:402 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" @@ -791,10 +785,11 @@ msgstr "" "categorii." #: core/graphene/object_types.py:114 -msgid "minimum and maximum prices for products in this category, if available." +msgid "" +"minimum and maximum prices for products in this category, if available." msgstr "" -"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt " -"disponibile." +"Prețurile minime și maxime pentru produsele din această categorie, dacă sunt" +" disponibile." #: core/graphene/object_types.py:210 core/models.py:403 msgid "vendors" @@ -1077,7 +1072,8 @@ msgstr "Atributul acestei valori" msgid "the specific product associated with this attribute's value" msgstr "Produsul specific asociat cu valoarea acestui atribut" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Produs asociat" @@ -1095,7 +1091,8 @@ msgstr "Categorie imagine" #: core/models.py:174 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" #: core/models.py:183 msgid "parent of this category to form a hierarchical structure" @@ -1246,10 +1243,11 @@ msgid "feedback comments" msgstr "Comentarii de feedback" #: core/models.py:423 -msgid "references the specific product in an order that this feedback is about" +msgid "" +"references the specific product in an order that this feedback is about" msgstr "" -"Face referire la produsul specific dintr-o comandă despre care este vorba în " -"acest feedback" +"Face referire la produsul specific dintr-o comandă despre care este vorba în" +" acest feedback" #: core/models.py:424 msgid "related order product" @@ -1350,8 +1348,8 @@ msgstr "Nu puteți adăuga produse inactive la comandă" msgid "you cannot add more products than available in stock" msgstr "Nu puteți adăuga mai multe produse decât cele disponibile în stoc" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} nu există: {product_uuid}" @@ -1838,8 +1836,8 @@ msgstr "Bună ziua %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" "Vă mulțumim pentru comanda dvs. #%(order.pk)s! Suntem încântați să vă " "informăm că am preluat comanda dvs. în lucru. Mai jos sunt detaliile " @@ -1925,11 +1923,11 @@ msgstr "Cheie" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" -"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția. " -"Mai jos sunt detaliile comenzii dvs:" +"Vă mulțumim pentru comanda dvs.! Suntem încântați să vă confirmăm achiziția." +" Mai jos sunt detaliile comenzii dvs:" #: core/templates/shipped_order_created_email.html:109 #: core/templates/shipped_order_delivered_email.html:109 @@ -2011,6 +2009,3 @@ msgstr "favicon nu a fost găsit" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Eroare de geocodare: {e}" - -#~ msgid "translations" -#~ msgstr "Traduceri" diff --git a/core/locale/ru_RU/LC_MESSAGES/django.mo b/core/locale/ru_RU/LC_MESSAGES/django.mo index 20b5c4f36283152bd1b4ad0f65d0b366365b06e3..208d1e0ad6be4410bbdaa317814a3d675183339c 100644 GIT binary patch delta 9728 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 I%MtH?0k&U-X#fBK delta 9192 zcmYk>2Ut}{8piQKELcH65CH)d5o{p#hP`)VFHwvpR_rB--l*7H^lFSXV6Uhl8qKP! zF>0d5*lS|emW^iPs<9-yDf@q!@p*P0KYsJgoO{lknK|b|vU;2EZyS9*w*qr7Gn4~9 z#zf$~!p3yWWz3FnwHoudj4{RV393I|thEdVlQ(pBMSWx_hT$wMj+q#QpJ5!H#ZveJ zInHCk${MqjhGdMvFL5sec!;_{M!YehxEFQ8uTjVSfa>>4Fovp$L_T7gV-k))Kg@9b zTd@N9Mbtn{d40}fOgSng$U9*q4tLH&U0^F}0EaOIuV6m>+2zkMKY1a}-VQ@B1qWgi z+=!ZihZu-|;yYNhqA{^t-z=b#2eXmcHwREteiHS8@31I7MqMaZC1d=t5NbdX7=X#B zfi`jdynWw)bZCa0DneJ`Jbq#BarEp6+BdQ;by22cSW6OFzUjiko{t& zAp6X0N3Ho)mp?)sUn1FM1Bf20M9K~`4u&gz^Zm2rBF*y z4K>v%$hAx>)W9ZVHJpn&;Stn@E}@q2K57OZp_cG>)MM+%ht!{dOoqoKQ_+P6qV_@> zHozsQ0bNAh$z9a*{T#If5!G#bY19d;xx7B=d>t?zdtwbt$BlRpb$lv~#q|6SrNZFM zRMalshnmWRSO=dYBQ;4hmcs$4JDHCfP!@8Cxs0J$nE4OHSPaIR7>#XFn{Whb&&Yj=JD8 z)O+H;r~#L2WY3d=>`T)gwHarl&a(!!gr03wbi#e8rMQUNEdO@CMBUk6s7({p*sg7B zY(hQ>wOJ3NP8dL=E);>fu_V;_YM{=Og1WKJ$c=eSf7dY*HL`Tni)67qz^p@^c#rEp z@1Y*Q=U5&KH?`-hg?fQC!(!MGb-p(-M9=>iDq73Ar~}udc6k=+1N%`+ zaMtyIhl%7rVl;;FOlnuxMoskq)ML0Bqc98Kz_XZu$?QDMcwhA6`sN)f`an8r(|mw= z@i=PJoI#z~w}sucby5B4r~%GHT__Vv;Zf&3j3v+4(zaK`F!Bzl0SrM;XDYL(Fl*)} z^3O!KvUfHFwU+ZxOOk;)!5-8UpT;D7>5Ok}@30rf(LNL7G0U}I!<-vwW4}x4wqgF& zkVb<}v;{Q-H?R)oZ)@9|B9mYyARFBL-Q_;*>~}>=Ri9tcW*o3Ho_DvJ;z=xrk5Drd%KBBs&ZxDXjR}~A zdNW=}o%bc`J0a>dd%iAMhTJoaN?j_OQFnX~3*tl6TED>37|_L@uqtW>I$?gChFZe; zs5?K7#qk_!FFio*f#j}sfPGK{oQ~X($7E6Qr{OYc&F-V_{2>Nn@ox6TR30_r=BSw% zhP>vD7d7w;r~zCPhkxHhD|V> z7rEB3A8M}*Ms22v7=)`(GqMY{GzUMgLy*z$Q4I zd>U%%^Rh#=*%Gh{4#(=4fjZGu)RgA#W7oPemLTtj#c(vLe>Q55WMd>=M^ASjHU||= zX@}SCCYgY`gPo`;e}MWxk$!d{6)=%J&6$C^zBa``AsAYY6z zco4NmZeb|q8f9NNB~W{$JZf*HVk=yZy51es5_$Ya+uu+IU?&<5VKodGV@KQ!HI;Wmx z?&wGRC@h3;qXseyH51!WGjRc<@G&N0z(l+I8=~6BI+voB_!A7(COSq%Bfg2vvBD&K zg0ZN4BZlJ7$b(_>ylu=#9F7|JEz|(?UlqcjBr30o8c0{?EZ4r@c?CVe9Po@v0Oo(! z{w`Mnb)sQ70B2%2K15A@-pO`q6H$2`)UF?ht#JYB4zHs=|D(&>@aSkjy>K?ppThh% zrc#V)sD(YSK6)_-FQ5kU18M-~J^Sq!fm({D*aJHulVEmWvJZoqY6sA3nq7h+NRwHE zy3wfV#%#jG>6~~km8&###s%s2g>f4-^>H(p1x!Q!nQ!?~4pV2^T|Ez@$p41PcoVe= z{b$($)W@Gf4$DvRt>lJ9+Hhdcm_;uvgzGf+!-0+a9#Cg}MOUTil_3U;Jp9yY-5oF$jo z{B>uB^EMXYxKfNd5|gk7wnq(g7BVJt2&1v>QaivAs2QAqdG-9Sp;C&54XAhhNtgc% zwHf`F*(GR)rO5|kA)JG~@dMm|zu*}B@B@BFz(ULIx8ZOMApZj6@G@$^e_%M*H{l=J zh8n2d-UanorD086fx6%Y`^YX)IO@Xnu^*;k6rMv(@nfunJ{k6N ziO$BzW;0z~J{9%UEzR)Q3vZ`E12~BV@Gk1{dW3bbOQwAXn`88cqb|6wZH)zx;}SMhpe zaHhu|{?5Z(AM?uwe(oHQZToY7V%K;lcBB6YhGOx(_RbPfOF9X!;4%!uVf*ZxZzdMe z^S_Hq89ENmRAocT|pVL1(*@hj|zktghc(oj?O zF>1P zwP~82vd?EKYKqfQ1N|J;{|x(Kz-j)D!%;XM6V7lfW?~;K`?cLm={Sh|TbzQ8&$9V^ zIG=|~6B^Eclk>}s2{~uKRF-2m+Mi){Y;)fJPo?RoB|C<-@i(l1RWI0q_Qyo>k5Ef_ z4!MrW)(=WcEQ!sCj?}e0IihBWlFSE_HCpsHBqwo*=QS&DCO|D%{kG%CF zLVY%RyF|prPNIDV5lpn8uNdwoQi&Jt^ReE{h#=1*THT)7vmI$mfZ- zOJr$JZFiyi&OX?YW2O#sTa8tQk{;7U4eA;do79ooj>T+~KT(WCXM zRHRanc*BRcb2JAuAc-WFyMx2AKY4!QRoO!u`zWWpO}#L+F*wAvC1EdDpGUjiRw~H^ zPnfCW?O!sqRwsI@5%1H|0jm(3iQ!@W3%SWJv3zk-(tm084ph?%qxB2?bCm=P|o@A65` zK-!bMx1)kQb=?s|u`InAL_6x`2ru=q*nntBy(DhH*HN#PHpB=*Wh!mGu@mtD_1|z4 z@v7);v6c4e#D|2+N}rq;K5t@@_TI_SQF(IHRm+Yi+qc*ipW_k?L6ySp_-WYI)z$vHeo%g~m@xVl68Fg~Vmoi?Lz-tAHL8Y zQ@Kg(CRAz@uW`UXuoNyqm1WdlmGM;8lYfQ_iK^6th^o~8Mf4@!BiHX4-xE8irx5`} zF2a|#-WaJjMomJc9)5?rh;X6^@dL4!_EH!{sHBkVzeB22v6%8M_j)r+2UROXwwaz* zuC;`TL66JH$kyGNG~x3*azfG!aTXB{FC)O&q0Oh)@|x zJ`zV`47NsDh6i{ J-27?9{{c9S!KVNK diff --git a/core/locale/ru_RU/LC_MESSAGES/django.po b/core/locale/ru_RU/LC_MESSAGES/django.po index 9e634a78..b2b42dd5 100644 --- a/core/locale/ru_RU/LC_MESSAGES/django.po +++ b/core/locale/ru_RU/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: ru-RU\n" +"Language: ru-ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,7 +29,8 @@ msgstr "Активен" #: core/abstract.py:20 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, этот объект не может быть виден " "пользователям без необходимого разрешения" @@ -242,7 +243,8 @@ msgstr "" "элементов" #: core/docs/drf/viewsets.py:57 -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 "" "Переписывание некоторых полей существующей группы атрибутов с сохранением " "нередактируемых полей" @@ -296,7 +298,8 @@ msgstr "" "значений" #: core/docs/drf/viewsets.py:111 -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 "" "Переписывание некоторых полей существующего значения атрибута с сохранением " "нередактируемых значений" @@ -490,29 +493,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`." @@ -571,14 +563,11 @@ msgstr "(точно) Цифровые и физические" #: core/docs/drf/viewsets.py:361 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" #: core/docs/drf/viewsets.py:375 msgid "retrieve a single product (detailed view)" @@ -639,10 +628,14 @@ msgstr "Автозаполнение ввода адреса" #: core/docs/drf/viewsets.py:495 msgid "raw data query string, please append with data from geo-IP endpoint" msgstr "" +"docker compose exec app poetry run python manage.py deepl_translate -l en-gb" +" -l ar-ar -l cs-cz -l da-dk -l de-de -l en-us -l es-es -l fr-fr -l hi-in -l " +"it-it -l ja-jp -l kk-kz -l nl-nl -l pl-pl -l pt-br -l ro-ro -l ru-ru -l zh-" +"hans -a core -a geo -a payments -a vibes_auth -a blog" #: core/docs/drf/viewsets.py:501 msgid "limit the results amount, 1 < limit < 10, default: 5" -msgstr "" +msgstr "ограничивает количество результатов, 1 < limit < 10, по умолчанию: 5" #: core/elasticsearch/__init__.py:40 msgid "no search term provided." @@ -733,8 +726,8 @@ msgstr "Купить заказ" #: core/graphene/mutations.py:402 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" @@ -793,7 +786,8 @@ msgstr "" "Какие атрибуты и значения можно использовать для фильтрации этой категории." #: core/graphene/object_types.py:114 -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 "" "Минимальные и максимальные цены на товары в этой категории, если они " "доступны." @@ -1080,7 +1074,8 @@ msgstr "Атрибут этого значения" msgid "the specific product associated with this attribute's value" msgstr "Конкретный продукт, связанный со значением этого атрибута" -#: core/models.py:144 core/models.py:823 core/models.py:937 core/models.py:1106 +#: core/models.py:144 core/models.py:823 core/models.py:937 +#: core/models.py:1106 msgid "associated product" msgstr "Сопутствующий товар" @@ -1215,8 +1210,8 @@ msgstr "Парт. номер" #: core/models.py:380 msgid "stores credentials and endpoints required for vendor communication" msgstr "" -"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API " -"поставщика." +"Хранит учетные данные и конечные точки, необходимые для взаимодействия с API" +" поставщика." #: core/models.py:381 msgid "authentication info" @@ -1247,7 +1242,8 @@ msgid "feedback comments" msgstr "Комментарии к отзывам" #: core/models.py:423 -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 "" "Ссылка на конкретный продукт в заказе, о котором идет речь в этом отзыве" @@ -1298,8 +1294,8 @@ msgstr "Статус заказа" #: core/models.py:481 core/models.py:800 msgid "json structure of notifications to display to users" msgstr "" -"JSON-структура уведомлений для отображения пользователям, в административном " -"интерфейсе используется табличный вид" +"JSON-структура уведомлений для отображения пользователям, в административном" +" интерфейсе используется табличный вид" #: core/models.py:487 msgid "json representation of order attributes for this order" @@ -1349,15 +1345,16 @@ msgstr "Вы не можете добавить неактивные товар msgid "you cannot add more products than available in stock" msgstr "Вы не можете добавить больше товаров, чем есть на складе" -#: core/models.py:582 core/models.py:599 core/models.py:623 core/models.py:1177 -#: core/models.py:1189 +#: core/models.py:582 core/models.py:599 core/models.py:623 +#: core/models.py:1177 core/models.py:1189 #, python-brace-format msgid "{name} does not exist: {product_uuid}" msgstr "{name} не существует: {product_uuid}" #: core/models.py:586 core/models.py:607 core/models.py:615 msgid "you cannot remove products from an order that is not a pending one" -msgstr "Вы не можете удалить товары из заказа, который не является отложенным." +msgstr "" +"Вы не можете удалить товары из заказа, который не является отложенным." #: core/models.py:603 #, python-brace-format @@ -1417,7 +1414,8 @@ msgstr "Покупная цена на момент заказа" #: core/models.py:794 msgid "internal comments for admins about this ordered product" -msgstr "Внутренние комментарии для администраторов об этом заказанном продукте" +msgstr "" +"Внутренние комментарии для администраторов об этом заказанном продукте" #: core/models.py:795 msgid "internal comments" @@ -1589,8 +1587,8 @@ msgid "" "only one type of discount should be defined (amount or percent), but not " "both or neither." msgstr "" -"Следует определить только один тип скидки (сумма или процент), но не оба или " -"ни один из них." +"Следует определить только один тип скидки (сумма или процент), но не оба или" +" ни один из них." #: core/models.py:1030 msgid "promocode already used" @@ -1838,11 +1836,11 @@ msgstr "Здравствуйте %(order.user.first_name)s," #: core/templates/digital_order_created_email.html:102 #, python-format msgid "" -"thank you for your order #%(order.pk)s! we are pleased to inform you that we " -"have taken your order into work. below are the details of your order:" +"thank you for your order #%(order.pk)s! we are pleased to inform you that we" +" have taken your order into work. below are the details of your order:" msgstr "" -"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш " -"заказ в работу. Ниже приведены детали вашего заказа:" +"Благодарим вас за заказ #%(order.pk)s! Мы рады сообщить Вам, что приняли Ваш" +" заказ в работу. Ниже приведены детали вашего заказа:" #: core/templates/digital_order_created_email.html:110 #: core/templates/digital_order_delivered_email.html:110 @@ -1924,8 +1922,8 @@ msgstr "Ключ" #: core/templates/shipped_order_created_email.html:88 #: core/templates/shipped_order_delivered_email.html:88 msgid "" -"thank you for your order! we are pleased to confirm your purchase. below are " -"the details of your order:" +"thank you for your order! we are pleased to confirm your purchase. below are" +" the details of your order:" msgstr "" "Спасибо за ваш заказ! Мы рады подтвердить вашу покупку. Ниже приведены " "детали вашего заказа:" @@ -1993,7 +1991,8 @@ 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} " +"пикселей" #: core/validators.py:22 msgid "invalid phone number format" @@ -2011,6 +2010,3 @@ msgstr "favicon не найден" #, python-brace-format msgid "Geocoding error: {e}" msgstr "Ошибка геокодирования: {e}" - -#~ msgid "translations" -#~ msgstr "Переводы" diff --git a/core/locale/zh_Hans/LC_MESSAGES/django.mo b/core/locale/zh_Hans/LC_MESSAGES/django.mo index 7efa491adc99be4bb892631589fb8190fd666a45..065992695d11bd7e323992fb769645dab5dfb27a 100644 GIT binary patch delta 9676 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 delta 1851 zcmYk+S!_&E9LMqhRLz){cBn2|I@4CwR!fU2UA2~)+DfUWFM`-2JQNSe*djz|7*r)5 ztO>EjkdWX(6TArt34%n3*b++!q4@r0hB&$Z`#I9{3i$_$&H6lTN$Q9)?;=8FE>5v^@=- zT53HN{bLhqW$SP~w&FZYjyD^NYfv)};c{$84KTc`8C5Gs#x_6dc|Dfn{OI$e7)$#M zs-FwkkMZpW6|LkoD#bsL)R>oEO0W>Mf|aO@tVX@R9<}loREm#8y^blgAE74p5xJ~` z8(mvG>FtSW7#K(;pGq+{AeZgorU@KI?dc^fz&ogcVwnCC%tUpx4K7lAa{yAY1eJ+d9`dh&=JG%tEXP5(0oB3j==1BCM*A-2;u};(JiNr5ECrWgE^@wX zH}=Pa*bm#W55B<$2k$VL4(Gfi@;`-28?(@ZS2!5GEK7S{i$2_j`Z`YHEWC*tAcLc> z(_YO@nQ6pqT#ZU~8_vKJ$eisP>OD96qrc|{s8muZKpmE5oQM}u6Z?r(IGMcpa2G0L z=P(P~kv{DuYJeZ8Om-z*e)OW=TZU(GC+@`(_H{7^?ov?)V>tSUaXK=leL}KjZlI8E(gXyp3AvSJdHjWkxcRg+pkML}hXTw&5|gF@s zgn5{Ur;y9;aa)U@k;T{w@;MoIpi=w*br!N&z9!~JWul2&DF(0sub~f9NP{L+BpKi4 zQ&C4P$hoq|H~>H3V@&TGnc!DcNN|Z)qbn zrB3-RBXpot^eO2ScP7~G@P0t}*Gg6r6N6`5c@BT*zAN7u>X~rL5$ffs?G#g47h06` UB`&lz^I1%Ad}?y2BkOtWA1|7&7ytkO diff --git a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po index e7c269fd..1537b86f 100644 --- a/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ar_AR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: ar-AR\n" +"Language: ar-ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -93,8 +93,8 @@ msgstr "حذف مستخدم" #: vibes_auth/docs/drf/viewsets.py:32 msgid "reset a user's password by sending a reset password email" msgstr "" -"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة " -"المرور" +"إعادة تعيين كلمة مرور المستخدم عن طريق إرسال بريد إلكتروني لإعادة تعيين كلمة" +" المرور" #: vibes_auth/docs/drf/viewsets.py:37 msgid "handle avatar upload for a user" @@ -123,7 +123,7 @@ msgstr "معرّف المستخدم الذي تم ترميزه بـ b64 الذي #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "كلمة المرور ضعيفة جداً" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -163,9 +163,10 @@ msgstr "الرمز غير صالح!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"المنتجات التي شاهدها هذا المستخدم مؤخرًا (بحد أقصى 48)، بترتيب زمني عكسي." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -422,9 +423,3 @@ msgstr "تمت إعادة تعيين كلمة المرور بنجاح!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "لقد قمت بتفعيل الحساب بالفعل..." - -#~ msgid "recently viewed products" -#~ msgstr "المنتجات التي تم عرضها مؤخراً" - -#~ msgid "recently viwed" -#~ msgstr "تمت مشاهدته مؤخراً" diff --git a/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo b/vibes_auth/locale/cs_CZ/LC_MESSAGES/django.mo index 24499b1819366fe7e608852c9e7c1388c9eb9545..17d30a6ba25e0df3a58721a946f3d185734bea0c 100644 GIT binary patch delta 2100 zcmYk+e@xVM9LMp`Ask*x*cFs1o0Bz3cw}J}#$!Ddkjx#YmTV8ky2G;^<>EcG4)vBUq2`Ab;j2HzhKS+S_@o zMi1$0!Ws-=JHCovqQ=W(qm@`WY5|R?gojW)?N!J=6gAu>x~= zTLaW{Q-2#ij)!p#4xuV^36=O&?7>fvb7u;9sT50aEwD_DbDCDy{iw=?P>Gzv^>`Mw6;q=$w5MOA zPWd!yML)ZG*gy?Xf|__6>i?an1W%$Wcm*}i7f8{}b<}v@xz6A-JkO%W^Yc<1M=NOz z(YTH}<#p6m1H^CyPoq|v!CN{se$-(qLM2pz4Y=LyKY`lHan$d_yI75rsM61&w!+8D z3_WV9Y3Pu&p$0zVdLDHaK0>N%K1Ke_EpGaj{DzEW7IPByxhGKx)}pqc1=&@z7g?L> zMkO+a&td{|_5J@V-JpD=t36zf`d}@Rp$Xv_o2MoSOK7j^2~DhPbNoS8v2Q!AEyQ#2 zGHAy$Sabs^$MLElJm| z_^fwD{Z?A7dgRjX>`k{87Fyt%L zz4Wgcq`%uz2j+$Ncy@{BrNn31>%2ZI<~Y`n9q38S?Vdsrd zS0HRTk)Rz(yq(*zD5GmQ@st1K>^#RhW?TKKi^+*_D0Rh(h66{F*Am04<~(-0rtgUz zue5q%b|iVtiiWHhvpLp4YAQ4sh}mI_6uZO8iPRMBzCgbd4cozmWU3ajiQ1`)fnmFk b*9R@9KX7xLX0O%n&>c)pR3#1-%xC-y?@k0s delta 1847 zcmXxkOGs2v9LMqhOgfX=!_v|;l@jftRyviL&(hM=vWHVDK}1AIge|ld86$+y&T5Dv zdQjn}GNLIc2q9b9Mq0G6GFn8@YZ3Is%Dz86Ugm#4=Ui{+{LlZK+fcKgUCmzRhxEJTdnHA$vROS&pgilZtVqcM; z{pH5c7Dss#F&RTkY2?u;!Y1TrXSgYWtEfG_j|Dh{n#fD~t(cA)=p-tUOQ?kJpc4Gz z97D}Bivy5^C8$a?##4Vy)XW17a0qj-3pKzk_q-pI=|96P{D`VZJTH-x&BcS5g`6)t zjf?RDX5$k~!;jeH;TJf z9yp((D)tJM$PdiNG1M01^J!=c%Tb4VV~B=Uw8hzu8sGwI;(PA-5Guj%s1hc!!5SzR zDTW1516DcfaRvQG)Og((#w&Of0}P@=9lA+F1H8vh{DoR+2ldur=|&x*GpK|v<63;^ zo_|B_rDoCpAJM3@vJh4JAZjZ*kyou3bw>J;aYHsb(J()wQ*BE?s%49ipOtXaSFsEA z_hYEUdQhdmh&nsBk=*SuDuH2KkJC7@T2O;?4{Gb$ut48`4-I8DfL-_!HQ;WRqsp{l z4R)at7({Zm5iG->sI6Je!O{00L@i(s@+WIYZN+KiX9L`r!rovC^V=U9T455SsMN)% zl~rRKHltQBh$`hU>dbgqh7wtf9P07OVEo!T*}!eCy$UOc)r7WY4H2V>b*&Aj`7&c_ zX%!Qd;Z43&&-U\n" "Language-Team: BRITISH ENGLISH \n" -"Language: cs-CZ\n" +"Language: cs-cz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -121,7 +121,7 @@ msgstr "Uuid uživatele s kódem b64, který nám nového uživatele doporučil. #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Heslo je příliš slabé" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -161,9 +161,11 @@ msgstr "Token je neplatný!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Produkty, které si tento uživatel prohlížel naposledy (max. 48), seřazené v " +"opačném pořadí." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -374,8 +376,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte následující " -"adresu URL\n" +"Pokud výše uvedené tlačítko nefunguje, zkopírujte a vložte následující adresu URL\n" " do webového prohlížeče:" #: vibes_auth/templates/user_verification_email.html:101 @@ -421,9 +422,3 @@ msgstr "Heslo bylo úspěšně resetováno!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Účet jste již aktivovali..." - -#~ msgid "recently viewed products" -#~ msgstr "Nedávno zobrazené produkty" - -#~ msgid "recently viwed" -#~ msgstr "Nedávno zobrazené" diff --git a/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo b/vibes_auth/locale/da_DK/LC_MESSAGES/django.mo index 148e81a1bbc78a978d27eebacacc77bd87b70a38..7cebad7b5ab774622b33e079f1f7b4cc49784ff5 100644 GIT binary patch delta 2087 zcmYk+Yitx%7{>9lwd}T*0=8m-)pnX{Z?rYVBE7J*O6#RuYypufmM-0)UAEo9*=;LC zvqpn=6U>U22xvm$Cliux2*zkkD46h}8iXLIAyN`dj2OQdkx2CaY=^{?p81_QvvV%* zd8c28rrT2&i*olH%2w)~)PHh}N#Rd(xKPdqjH$&7Sb@2D#w@{V)bCeg6As{F+>Z5f(5= z8J42@S79Ocp!U*_{F#V%@1S2>9iyQapF{2J06ve$FpSF!jA_I7P%A%!qj(uLLGN59 z$8E@3ObpdOhVA&0*FS~1+)ty%`3@_Y-^|d^it~9(Ar2y;G3~e#H==g14;7JjQNKTk z+W8Swh>v?-^qybGJLsQFIJLkEq|4lkOld-xx}8QhjauA>E%-X}XHIa@Le8Mh_7_}+ zK9;Wun=pz!_#}Rg8gC&7t%cR1HV{HBc#r3ssQC^pApRvZPSK&zTtZEF1vS8RT#ALf ztpQrNsDBME!hXC5Cr}YOh+6nzjNv4bcczq=s<8?yu?O$Mi6Y{^#YfiCQA5Y?%wC6! z*v8%1g%<9_MtlPmi7$~?%=h>p{)(koPwKN~vlbQlr%_)?5=kfXHY&mgkYJf}DH=M{ zE2u2LirVp?p5=_90oS1>?8gRt#=HL*wc`wGoa3l*PI>pIz5DZ6MgPyJ$mJ1sC3&ix z#&#MX;lr52Qw`XS3Spmjf70_TDx{aO0Dr?~yoSpDM#7_`Y(p))0~PvSt}N zY9T?~h@Duh@Be)oO2SW3NpS+3a0WF{2?w|f>u~@Np_24p)WV8+X%$wY7HoS?ppNo2 zRBjwaZSX8=K|f-NzW+aHD7o_Zl@`+KxdC}(cB0PwRn*xYLrwG*zKEw$JKt0``!x)p zCVm;&yqQFDJe!D+EgQJ5rPg$FQ8-kVQy-w-PpzctSQJ{7w)BlT75NX*T1o9p*Z70J zP3bQGebFu4_fcD^Yp739d#TH)H_K`oPf>fQ$}YuKg%D?Br}hf!X6hrl`CrkYsjN?5 z@|U!9(CX4HMaTbmwl%wPeYxdS1w*-fvnVf{(~W_$&{kUd&J~_^s=}@E7*%JZexlUwkFqyED!_kB_matuG zIGnJ?qxOUyu|}Ol(sJ!VJDwcbZB>tkpS7BrYwE0MoZfNUP1rLp>>C_*owzgN3`GaS zBbMVvY&Y}D{N7t~BC*U5MWH}p++x%nj%y{x!$X;ZC0Bg|owk*oIhM5DIxFFfS`j-Q zx2^5&*id!}{Mb%rUyAP@i4JM*Sfat3-Ev09?RX?<#cs}=h*|E`C$X5lW9qY!A-f^- JSMb}M{{UJ|`}+U@ delta 1847 zcmXxlduYvJ9LMqRnK@^(nb};&c4(ZrjWL&vvkS(|F_$qmxl2fD$|#qP%O8{?&ZHE% z{)4UMmzpwU@`qfDKPW4uwBZl_BDuUj+q0+hJ+J5a?RTEb_jw+kmpmzowx`9PHOgvY zIPo>kEQ0}~Ru-_ORWv`cX)*5g1tg){Iv4#N+aiodWQ_DM8L z*H9T$`tV>Pj>kew!7b>=-N=}>A2pGq&L-?n`yHm?7YyQG_dJVE`_j%st)&?GSea`t zLBEz-O+`OkgId`EJc#FTBMwY5n}vH(Gxu;OwxI@?oNPwbN|3QFf_h$!CAir=zl!m+ z8&Un-#t`G%BPv=+2P(zCkHBcPW-;PCXWejA2wJR-}@D4OGhmb+8l1;~`WBx7_plIE40V9F3i*jHL1sbFx9W14kq0 z%TD7MJdYu4!%XbN8Xxa4*jU;d)5-q?Dkqr5C~UzI_yH&5UsMM2Sf(bp5a-}p%)(2^ zTtVJE_4N)pu@iu1zs>6q<0bk=p{N&o{jG`5X zP#sM}brg2(GS`k^4$qgPGPfUfs2gw-rm+v@7_FzG4qH(veCFB({7TQuQ7K)CNw^*h za0lwNUqkI>6KdifD)o<%k9~7(KWWt8C!sP@iYy>%`>5zt9!9puPNG(R33X^Z%*A%p z?MUX1Y9e_^QY?%*-Bn1|Z3Aio^|%}_BD-imkhPhg6Rfk4g;RC^!&KDKF08|2s2}`9 zO(dBOEyf^fg6o`hsI5DKItxvxEqRWb$Q#sv9jLS9V^p>Coe|8`{ohPQdwdwRm(8ew zTJQ)yMXk7!QFQuiQ3FSjMcGZ{P\n" "Language-Team: BRITISH ENGLISH \n" -"Language: da-DK\n" +"Language: da-dk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -123,7 +123,7 @@ msgstr "Brugerens b64-kodede uuid, som henviste den nye bruger til os." #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Adgangskoden er for svag" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -163,9 +163,11 @@ msgstr "Token er ugyldig!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"De produkter, som denne bruger har set for nylig (maks. 48), i omvendt " +"kronologisk rækkefølge." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -377,8 +379,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Hvis ovenstående knap ikke virker, bedes du kopiere og indsætte følgende " -"URL\n" +"Hvis ovenstående knap ikke virker, bedes du kopiere og indsætte følgende URL\n" " i din webbrowser:" #: vibes_auth/templates/user_verification_email.html:101 @@ -424,9 +425,3 @@ msgstr "Adgangskoden er blevet nulstillet med succes!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Du har allerede aktiveret kontoen..." - -#~ msgid "recently viewed products" -#~ msgstr "Nyligt viste produkter" - -#~ msgid "recently viwed" -#~ msgstr "Set for nylig" diff --git a/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo b/vibes_auth/locale/de_DE/LC_MESSAGES/django.mo index 3c7f60a58ded4ad33b7d74994b3740e00f14172a..4cfbf4c4542d4c6763c3df65f21da4f613430040 100644 GIT binary patch delta 2132 zcmYM!TWl0n9LMpqrQK57a;aRzLK&$-TPjs3+6&uqDO!q_?G?}ly6KMHwR@4>Sr!_b zB~gMg8X+zE02l-MXizuAr21eGA56p;i3Zf5RHO01^5BzT6TiRhG*0%+=gjHMIsfyY z|MahIue4=umgS!|90RnKw14xA$>2`~oH(u*8dHNeuoCm<8*@Kaq3+*-^*D$t@H8&P zi}*Nxf#o=Zi*QAeF$=K<@6}RGbnaoG6W8N@T!6>XixbG&<_s#33$9<|Vy^$eGAw42 z)mVWVZ^2UZqxNzD`I(@59Y?RWnxdlzUqtQfERNyF7{JZN#x&zwsK~Ej6n{l6&{e|X zco2!jjG)F-*orT?)%6qh5ZF|D`-dr&(#iOR^EsQb^M zc773+;>)f#-M`<#WsH}QP6b$r44FD)N#n!J5;`4pYVaU7;;YEdT;ZfZuA$!TAGi@c zgs%nbF^qnE1}9PTE#*Zkuo~0`e5im&U0*}3_x2+4znspO3@A0XPz(N!n&1wu$5Niw z1dW_Dz8mku1Nac8Q5iai3j6|&;73T^nF=1N!gaV7{kRI#W#oUKhpJ_umVs$jZ@_Z4 zp$B^LK^#MkpGVcokEj6dqH1FaC9hZKN2W3ks+LZmHh3OY8RZKJJ!(wLD!n;tfvKy6&y;zOUqiSXXH{b`e z*BSFO9i`+h^2M2U?oxI3AhDT2WV7Z7>RrEqn&1-hGrw_KgGxuP%8{u|9V*ZcgrI=AUGV~I68aXadULDbHUVjZ4EP4E?xb@Lrg;B8dKUVdP< zXiuRsG>ODy{zMNd3v)*|9c8_`gHw+?x*5089;4|qQS{1)j^^>1g36*N=xw33jaPfi zJ-y>Qy_>@OxZY1|qV1;br70g9X>-R8I?vMlv;{QfO^04!ORhIt?)~)J-Rn83+)n5C zE${Nitz7MNN0g*Kx3AKurLoss89eEZ3zb2`_@jlZeFOAVjrtT?X(})ss(gJu1vK79 z?!Ou2DqC)+?HYf*aGmGr?4`noy+xK2k6URwFp|Adn)UR*kcbCULr&6iLgA#9O49djZ_t*U6?h*jTEU2BD7j2^ZVNqg$p$)Qjp9*alf!{MPo z#EK_^b|QOXVb{F8pq>4pY;1mc8x#5i$z(d7aI7#hj;5^SP$(T33T6At{dt+NZTS_) zh-24UL9S?uWV;+=M`wtit48;Hd delta 1846 zcmYk*drZw?9LMqRIpv%#q@1p(kjSM_$RU!-H4-9bwpgrLtv|?Iau}n(7{_I^nbG>k zZR*U1u+d!R4`$e~x%^=>V#9y#-ko?mmx=c2&t0pUlDvWgf? zd~%xw@OmGV*(z;d~C%*_zGk3JNCz@NHd?N z8b~FIjvO3=evH8y^x!6BPTP)J$R5Xw7)SdB4!|x<$3ISg8iV$uJs!1}8OX;;1-h&G#sTTm+xVI6j&CYaFIjH(qPbK3$`e;I;Xz{!)aeY zjnj@JnBQ(w(M~>~Qv4H1jiob60p_80(16NFBkK7k)Xop0QhdhoCMME;iCWlKYwZ75c+H9FAX5{RwPOcViK10rjZ6upf0)ov4Ms zN8Ozts2wKo3g|9mV;SZnbK73j5gtQr;ADV`25dpSE^kmPP2vFMB-ABZih4bRs0l8i z2D*>h@gt}G9QC%mL1pqiYGFS9)P^~@3*TZn2CCT>*|av)54TY(E#~0WUy0hudekLq z!0EUXHSu-SS>8cq;sK7rSE#$WZYM9d^66M8GA5RpoS z%G6-0CnIt`HLbNcIL|Z4wIo>M$*WyXdj+Ar&Lb)bU7cK_x6Goll2}B<5Xzehx$nL$ zs^=5Sh}mlVSF)UXS\n" "Language-Team: BRITISH ENGLISH \n" -"Language: de-DE\n" +"Language: de-de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -121,12 +121,12 @@ msgstr "Aktivierungslink ist ungültig oder Konto bereits aktiviert" #: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." msgstr "" -"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen " -"hat." +"Die b64-kodierte uuid des Benutzers, der den neuen Benutzer an uns verwiesen" +" hat." #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Das Passwort ist zu schwach" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -166,9 +166,11 @@ msgstr "Token ist ungültig!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Die Produkte, die dieser Benutzer zuletzt angesehen hat (maximal 48), in " +"umgekehrter chronologischer Reihenfolge." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -342,8 +344,8 @@ msgstr "" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." msgstr "" -"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-" -"Mail." +"Wenn Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese " +"E-Mail." #: vibes_auth/templates/user_reset_password_email.html:89 #, python-format @@ -382,8 +384,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die " -"folgende URL und fügen Sie sie in Ihren Browser ein\n" +"Wenn die obige Schaltfläche nicht funktioniert, kopieren Sie bitte die folgende URL und fügen Sie sie in Ihren Browser ein\n" " in Ihren Webbrowser ein:" #: vibes_auth/templates/user_verification_email.html:101 @@ -429,9 +430,3 @@ msgstr "Das Passwort wurde erfolgreich zurückgesetzt!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Sie haben das Konto bereits aktiviert..." - -#~ msgid "recently viewed products" -#~ msgstr "Zuletzt angesehene Produkte" - -#~ msgid "recently viwed" -#~ msgstr "Kürzlich gesehen" diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo b/vibes_auth/locale/en_GB/LC_MESSAGES/django.mo index 8efda1868f049fa5114cf333b9fb0472844b3d48..ad7c21d44034303c69ab070388d825f006bc8e33 100644 GIT binary patch delta 1921 zcmbu&};(MV2PGmLT3yEt8ost;&?oOAv}t#Z6{EH4ESEcXL!Dc#aP57 zGq3_R{tAx6C~7ZTkdL+b&uI*4t64gF@gvmEPU0T?24nbQk=e`GkBa;XrtlVOfwf~< z9JeB|*f!L778`NDKYktyc>WnR&t;s&`gW6!A}-`DrMMhPjWyy@T!-30FDfI)P`}Tk zc76tx;&Z+?{O|AMvy6`=oeHoL8L~QLNo&B|BsweU)ZkXE$3w`+e&D7+uAt8LPh5Zj z!qPJ=ifIog38+rcDAAf*4${=adJY!HPpNcx_WvC3dBALnA z9y%(LBdCZkp>}c=we#OlJO3M%Vui0GnTD)oO~@W>BPu`_74TkEmG>a0W5-dM{Q~Rp z8jjcBe+jedjGjl}XmG4HS{1oyN z8$xP)_}?`QUvF}MofcflZJl=~*c^D(n;)tSyydlo7S_JQsP?*qwu<&PZ7ofCd2%hM zvym3{z7EZpzMkHSCtvw07+tHqyP>MGmXU|yt<0tW98Cw-?9C6?1vYuHaOuo7JnQha zO_l2gny!WstO;N9^5Lq2H|TjiCDFktqmPBxf8eIuvhl8r)775LIN40Xb=qSYXGb#8 zooI7X=}ed7CgO?Cu8t3#>Qro}6M1R&TqoJd=#GS&N!;Am8*g{ho#~GB`^k8$!%4es a33u@G3HORxo_6lq|C#xP!F>6_QI7#Y(dJYD delta 1735 zcmXxkSx8iI6vy#1W_LY<1UvwA40xCr4x zMg&C=Ez|bU0*R6oJrrdRQN8$JQ4~oK_0adH*UQ}b{O^Be{{M5%|L9=JmEz#XxbP0+ zYT!=g9ttxH;>)qTaXt5&6 zFa_haRSts)CKll=tj1_Ohz_VoXGPa#^GN~$7mMQd_GRVGE^=rk(aIZ zo;RbTRGS#+hr3akox!7c6&o=#(rh7~LPg$Si*@AEG>nfZUH z0OKhuLrX`tvOEkByGP@2|0Y3HnJ2{LYb&Q>rh9zCCEVCy#p0Ui)SYito5KO(vND=FW!6v2dlG8 zMJ<$r+Gq}{BE{Z(1?qRzsOD})HFq1Txr1RGgt~h>D)LLX2XCP^m`c6XJh`auE=0{& zU@6vm^XE`U*@;@G3sv%)$WrzWRpIZb%EVDldL(FB3>5J;R3^=+%=e)(Z$*{319c>~ zku|IzNy2`h0`!xf0*gm=cLs6_mXE4zB^Kdc)Dc|6c>Vo9V89yo0s}aJ+AxVXb@yD< zLKjg1g;3qyiwbm1>WB%bjj~Z0*P|-36P0lbYMtYlhZk@n`&%yqE&LwY+rHv(^U006X{MpH?M;?Zg%4M9v zts`6PmiuS>8r=Q<#LSgE>-d$h8g>J>u96X~0++Zq{Mo+cp|}1)e<(S2C^EDowKeQN DsmYtm diff --git a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po index 3994c490..d3fe1d5a 100644 --- a/vibes_auth/locale/en_GB/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_GB/LC_MESSAGES/django.po @@ -166,9 +166,11 @@ msgstr "Token is invalid!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"The products this user has viewed most recently (max 48), in reverse-" +"chronological order." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.mo b/vibes_auth/locale/en_US/LC_MESSAGES/django.mo index 763e926a7be369a0761a3165704cedc362cad63e..f030cff1e19d493fb21e3615e9f09afe987ae9c0 100644 GIT binary patch delta 2094 zcmbuGqQ8SUb>&lWmML6^F`ncKq8w0@UqI*KFOp^ld5r z!Oj>VK`=P3^Axkz5-WX#{yl{y6{dF&1dFPv+_jBIU z_MGQD=V_-qrbC(Os=||oYZvW4+Mfl+Wbj52H?HrCjS1p4Y{0@2WA4Q!)aN%~3+}}l zJc'Jb3Qf+|57_HscOlh;N}EPatcXk5GY3cwWIpJpX}J zxPVFOu?{u99?LO|+RJX_Wd^-x2mRV=ijKbc8fs^!@Bn^>5qxZcF&+3mD)Ors#~)A& z^p>$W?m=QP!>I8TcH*1f_$4gl`5V+c-(e%`n^`)FxRh@x#kELkOee0xEvOwFLuKSW z)aOs5c76_(;)|Zs-urWS594K|Qvo(0L*`**NfW}%5;~jc1aS|x<6-1wE^|{LS5asC z6Rt)d;cLMbjA0me;^(OOmU7SvEQs1b2o>-vo<~sYeOyWYtLaQKpw!Hu7QBg?U=EwH zoNsG_c5WK)#$~u0AH*~&L#I)JPv9_~N9xYh@uenQfsGi(`!QWb{`-AYEdz?^7gpC1 z)Ub^JhENMcu?3H!GI0@A~sL4EHms>ml%MV|SQ zj;j16&Oudv85Ozm8;45N0?$6Nzo49Ss5AjcjPtexTG=b8jv(nX(y!bD3l*2pM20Aa&!Zd|WRp&2KY1VuFR@_c|#(Tblez>}N zvNQhb_Q&aU>5)svzb)UJPtZ#G%V{cur@e8ZdTq--Qd}R}MNhx$W}2#2=c4Ncnu<>8 zt*7mz=?cwbp2TOfM~hb!K2I;ZcX2pZQgXeh)Ji&zm9`_pxohP)-}bSDGng7kx>j;1 z=2|J&PFO<`*V-4e)Apbhcig0vum|kX!x|nVwHa*I9rqRZTr6wtoo1j LAIkOB9xC_;py&Ny delta 1858 zcmXxkSxD4T6vy#1X5&`5<7_+(f6utNrJs2B1_Iocb;(i5A!y}l67qA37a5{d*Bpk*>jE^%* z)lwb?@jRH11z3txunFCG7+KSfqY^po_yCi+|A;C03$t<5c|Ma#Cv(35wU_0{$EuwB zYIJL>eg=ARCu(OW@FZTrU6__&R))t=nTN3zdr%83oMgt(Dv-5pBkH*yE3nadejB5? z??lb>2y5exgeJ7b%TpGm8(4Q9Ia=s>o5)?@yw3egReDTaI0r&V4T`u_5GR zBYZKnB~ad}n2Eu;3PVgUKrCBBrvP1Kn_#v*)!S}2P2TW}_7qI0N3+EEEVL?!s! z@gHiPWEvm?eW*%oPon->sGbL!pcMCBz{CrmX3Qd2k9@n zhUjl6DnUk$b4->~fy>q0aITssf{^ zg`zod-6x_JNJG7sg=%Uas;TQxP5lAY)WH%CM42DLRy>VbUK>hVR4J*)# zdftdS%U0Ap2T>(Ig}iEaP!;Y*RpuM2M~0DvgSLeFDq|mN=as0P`%xv{gF2EkNYZu} zl~^|_q1ULc{)AN7exNEkf~A zWoW&7x~n$SrA}8yE=ptN&bS1(6KkCNakM2} zn?kObj8gShRpfr`Pkx&-R)OXbvj`pkYGV9SAFc~+jma)=V3bc35X%Xji>}RtnoQ-* zCIW;m-x#(M*M>S{=0tB~6#AW76V8k6ofryu62smp*InUhNt-4_`L~6eQ{TG7HJ(SV K@XoALQU3vUxT`$? diff --git a/vibes_auth/locale/en_US/LC_MESSAGES/django.po b/vibes_auth/locale/en_US/LC_MESSAGES/django.po index 6e7d8427..773e1867 100644 --- a/vibes_auth/locale/en_US/LC_MESSAGES/django.po +++ b/vibes_auth/locale/en_US/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: en-US\n" +"Language: en-us\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -121,7 +121,7 @@ msgstr "The user's b64-encoded uuid who referred the new user to us." #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "The password is too weak" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -161,9 +161,11 @@ msgstr "Token is invalid!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"The products this user has viewed most recently (max 48), in reverse-" +"chronological order." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -420,9 +422,3 @@ msgstr "Password has been reset successfully!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "You have already activated the account..." - -#~ msgid "recently viewed products" -#~ msgstr "Recently viewed products" - -#~ msgid "recently viwed" -#~ msgstr "Recently viewed" diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo b/vibes_auth/locale/es_ES/LC_MESSAGES/django.mo index a84585e7583bcfbdc3f483762c982c476bc63dff..877c3ddad1ccbf2b2b45bb7accd4c8cdd378855d 100644 GIT binary patch delta 2111 zcmX}tZ){Ul7{~F`ZFCNpn^l}J+^#I_FB`HA-3DX)8HzAq6Gd9YOf1G|f<}1b43dDxy_1+2qbTb4*Im5nxu0{+ZqIqn zbI$F?woYwNT?rJNG+YCe)s(;Uj7j0;CEU2aD>SAa=dlV4ZZl>T)}o%@fvxxyuEdkL z0?*)s_&Jv2O)SNgMaGn1J>IFQI;bqAV;?r)VZ0s3(2s8-bDJqtATyp{;~ljB!~ia1 zkV>pT^>4vq>_x5R2=XyuukD~;OHESI7hgcF>>Yd&KgJ+#TxQHBd>a+{C5+;as0sR( zGdUhbVlhLg{v>wct6qN=3us?JjdKyJncrNaqKJ$5mQq}fq{ejNW;}pe!6YgpZ=s%_ zMy>n|D#f39Uh)2Z1MjAPIq6h@RY;dvk4$MgF?AP}-BjxFD7NDS@-gSRDUeI3y4%F(B422iO#hMH&`bvE9^9e5TM=x-@1+S7cV z)(Vzl3zm9zqcSv#TJa=y;w?*`tnsQ*<28Ei7SzHzP+K{OF-*Ne3U!k_>vS%^-vxfE-REmSB08&U&%{Xc+P9YzY;kE(4 zL7fdBzg}f}|D(AIKR9?Ff0)KL{M76J1EaJ{nZ?GJP^te3mHNMM50kRrC(ZI;r}R>EYP3PRv@u(9wZ;DyI*Gfy_AP3?%D(hf ze_8uhT06ZSE$(rzz82R}SZnT_KJ4`iy?Jfv4TY7R1Jra18z@~A?USzk6umZjWyoso z*9>y6n%qu#Bz>Z=#%RM=KH{Wp=E`fSRx*D?d*p^%XY1>9SypXVA!$3+1aNf!(>}gjqMF`4{>PBGM)1ys`q1mxq2r(;^iz=HT QEQf#_v_+{<^unh$zd%clH#Q(++7Z-5jyvAPNwhm~GWK8s{&wES)9HBH>8Q0VLw;81v`f&f zrB)K?54WOLb`+cN9PYr#v1U2gh?;p2>#+?rz=CmRgqDwtZN;efm6(saocGr;jCL!k zp9eUL@$EH%R?>w^@lPZ*mOwALn1Ncs0aQi~qrPuKt^719#n&8P;8fZlP!s!({A`d1 zUE5gFI|ZksKZPKTARDWYpPl8Q30y_(=|fzI?Wlo5nEoD&M|E@(HIYlG3Ex9au+Q-i zYMeSbU*L4wZ!rnGQ5o^_5p%MsxEGU<^JQmn zHeSG4*oJY~ja4qbVX$=CJ0i$`8o^m+p_RSDMErzW@gVAKq_a%^)=IGucVaT$LVniH zLn-e>4fGRr7NWQcE76CVXdMo1A!-3leu4~wQG-s{={CR{{AC|>Ha5j=XAf5kaJ>bs8r{n_Nc`17%H{* zQ3JLkNwW8-E$ByWVJMFUn1DJHWvGlkcYKF4X!l{3?*Byo?dgLxSdZJ0EZG}Ws=r|| z4j_}ZB4(lQx8V|O#F=;(wUD={33Z^hpdU4%SkjY-89s4NY{xqad5h;pba z18dzeu1$ejcg7wamo3z6>RM_gwS=ns@vp2PsHSeD>Xc|>RLJqr@l~8jt)Q+_KrKK$#~YuZBpcE|t2Bs(n(~K-D$T z6(L(zMODciX6P!c4zzlbUB$t7o-}uG%7ojlV3c=#Xh>0cur8v*6WkRO6B6u<%MASs DXcMdD diff --git a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po index df3646c1..4d324141 100644 --- a/vibes_auth/locale/es_ES/LC_MESSAGES/django.po +++ b/vibes_auth/locale/es_ES/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: es-ES\n" +"Language: es-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -124,7 +124,7 @@ msgstr "" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "La contraseña es demasiado débil" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -164,9 +164,11 @@ msgstr "¡La ficha no es válida!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Los productos que este usuario ha visto más recientemente (máx. 48), en " +"orden cronológico inverso." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -423,9 +425,3 @@ msgstr "La contraseña se ha restablecido correctamente." #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Ya ha activado la cuenta..." - -#~ msgid "recently viewed products" -#~ msgstr "Productos vistos recientemente" - -#~ msgid "recently viwed" -#~ msgstr "Vistos recientemente" diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.mo index 350d3fe4c622c646cfda15a79d8e492b6860f4e1..17046aa333cbd7c136cd29e04d166c2dc1b80ef1 100644 GIT binary patch delta 2134 zcmYk+ZEO@p9LMpw(q5@hfhv!+?Pw!?0I9|D&_ZdY)`#+R6|7V%cwQGddUt#5?zL(p zrx+yxjl{ERPo8KT}q{kO!JEdEr+jq*deG0k`p>#=mEF-x!!_4^)d!$)y3j^lhh zgKO{{R^wHii;F9anS;%EgQn`BaUC67aTyNc_4qu7@l|AQ^Cl{glSRMAc|8A(RXB@5 z>aZ5ozX2;Tf?CTiXBWd-YKDehd>XZ~x9|Xdgi%~I%b0ceIx6xDn8cq^6ZFq! za@>u?Vn$H?8SKL6iv1H<%JX^DIN#z@<~NsVDB=p1YpCBJ zN3Hw}D#f1_y;S`B6ya+gf=p>TF?%D8J{rxq8{6?Pa+%M$DUb`Oz5Nwe zVudZtCBJi*Og-iesn@9Y+Oz5=Za@R z3ivo~z&zfLf1v`bw^NyD!NT|7M`JaA*pCf(3c1WT+;nRH#ErOwDD~Ywg38Q3Jcb8w z9xmc!Y5~ot@pd4KG)FLmYEKtsd^5GFkK6WQuhM!aRWB>0?NntzWnJ!SS$)ObwANGa z$~A?nLpyT4;XC3xc^;%HxtpjDQk9RD)alYg<6&xqs#Bu;s3>2`k;)qC0QFuyTvL<+ zm94qS@WS?PTKeKtbnqW2w5Gn+<+RB~AA3G`81sQ*Oe2 zJRXZCtm_RsUjERW{uw2Ey!?+DMoMIS>rI@FImslkT@zV4>L~<| kG5!xrBgRvOa95bkj@{=3Zpx+_6bUie(P;i^%_}qh14O8)aYGwPXX-&~XQBqMxNE=j4U=J-1QbPoS zfi1L95e-p6Naa%$gb#rQMN~xVLk~SvSbcvpcMfyz=bX#E=lswAoXcF9-!(7zW@P*s zqpYXqQop&)g7_eT3+0~IY%<=*0{np4n3x!Sz5vVVH{clDi=(j%XW=Ex!Pn@+UpNAj zlg!dJRW^-eZcM{stis{gh92C5%xMQvfpj|F#5DRZaU_04KmK*@=QC(3{Swq#>X4r` zI{lUC(NbG!=*11Fl^w#vcosL|=oGUW+>eSpjP2NunxJ%;8BME4=C-A%`>j}yo1Oa? zFrNMm)Ht_s0`uEr8d}L`REqx~sWCsJ)M6QG1-nrh*@t@mFlyyps1%=f?86NDuTX*g zKz=sFg`q8l^p3(T3{Ivol|~f?ke{9Aq5yhPdwK_F;B(YOZo=P=`KW=8p#tea1$+w? z;CIJ=sCm*j0GU{e%0!Eg{A;3h+|U5+Sd2$d16+6R_hACisO)eI}oP&cZZYg_TImb{w^Z-Kay|8>FGsUv+$s{49@AG*B5A9ikRXshSAs_>%@~7LPhFl<8^3CP%EiJ z9i~ON5?fHIzlhq)Fe(%GP#JxS`kIDN6J^oS+1ZHAcnDcQ(4N!K1cRsn-k~z^6U#A$ zw<@p!wU_%)f%G6_+f`(d){lOCh1K{QcVY$0&&TsP4j5mQpGyoE=61Nl JasEqj{{bxYsGR@+ diff --git a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po index ddc26260..8b04d783 100644 --- a/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po +++ b/vibes_auth/locale/fr_FR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: fr-FR\n" +"Language: fr-fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -127,7 +127,7 @@ msgstr "" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Le mot de passe est trop faible" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -167,9 +167,11 @@ msgstr "Le jeton n'est pas valide !" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Les produits que cet utilisateur a consultés le plus récemment (max 48), par" +" ordre chronologique inverse." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -297,7 +299,8 @@ msgstr "Jeton non valide" #: vibes_auth/serializers.py:209 msgid "no user uuid claim present in token" -msgstr "Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" +msgstr "" +"Aucune revendication d'uuid d'utilisateur n'est présente dans le jeton" #: vibes_auth/serializers.py:211 msgid "user does not exist" @@ -345,7 +348,8 @@ msgstr "" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." -msgstr "Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel." +msgstr "" +"Si vous n'avez pas envoyé cette demande, veuillez ignorer ce courriel." #: vibes_auth/templates/user_reset_password_email.html:89 #, python-format @@ -368,8 +372,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account " "by clicking the button below:" msgstr "" -"Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte " -"en cliquant sur le bouton ci-dessous :" +"Merci de vous être inscrit à %(project_name)s. Veuillez activer votre compte" +" en cliquant sur le bouton ci-dessous :" #: vibes_auth/templates/user_verification_email.html:95 msgid "" @@ -384,8 +388,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL " -"suivante\n" +"Si le bouton ci-dessus ne fonctionne pas, veuillez copier et coller l'URL suivante\n" " suivante dans votre navigateur web :" #: vibes_auth/templates/user_verification_email.html:101 @@ -431,9 +434,3 @@ msgstr "Le mot de passe a été réinitialisé avec succès !" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Vous avez déjà activé le compte..." - -#~ msgid "recently viewed products" -#~ msgstr "Produits récemment consultés" - -#~ msgid "recently viwed" -#~ msgstr "Récemment consultés" diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo b/vibes_auth/locale/it_IT/LC_MESSAGES/django.mo index 73b4971c53195a0f9b031713245fc7c490c9f40c..3be6a736421a20addeb1aed82b33353e04b0ecfe 100644 GIT binary patch delta 2132 zcmY+^Z){Ul7{~F`ZFEjHz_~fc1{|I4FANz|w!t<5(E$#(F%gh#l=g-->v~83Y_cFV zBEc*giFInC@Mekeg@iyQWWHLQywF5r#27I`0;nXI5cL&KF@Arg8olYcpVM=D&w0*s zpWE5?@pXwyg*g+3V;8NQ_Ggwc3H*KzCysA(jj6>8Sb;fr7_$(oQNLf0jkp_2aRQ6+ zB(B19ScbQ70hZ<&Gaqa5ZY|Y9=S~K;U>)wjd3YGT_y)4Jc?T89WX3P>F24Vcg*cZ< zmf&L4cpDaA7iuqk$j1aS-(B=-t8qHI@c?RP@8a`#7Jc~eTw_+_Td2s-;}Bj&Ezq6M z;@FSGVg^y;acsv!neiFS;rr*PdA`C*);Cw^DB?WsQi{uv)R=Z$gIiHMIEu>1o2cI( zL+$(|D#agXyp*{~ZE~6Iw2{pki)?op6 zYl3D@8sCifVjn(;qo@oWLj^vGgLoRLJF}RZs<8?yu?rXBXd(IE?xAWKsAu2?t1rhz zY{OzF>XC%80bfVe$~oi~^CNcPO;jLjDSf(TFDms1P?<}jYU2cM#&(?RD+1{_qxr!!8Wb~cSl_1Cx*uc01Q5woTLfKbnJH|kj*L}lg(>b~Q+7*C-x z@Fi|X4>y~QJf;1syZu2s#Cf-9$@C~ZSF5+wW8!C_&?d{iU z0`>c8R6xHVHJ;8Eq>moX%6iQvPFvGM{L|rD+9R||S~E@6uVZ!c)|`sG$LVQLk0ooo zWuD&T2JgzClDUJ{LQ`!&L+hqB(Ed4;pJ!=ZG}S%jpFXtBwoHE&Zlmda`tP9^SI3s* zWp7FIqx3fDD+i@%o=*2}zkMo?`)I1mCo4(Wj56I4iY! zg~(?5-we`qAlK10CST31@^q%oVpwBJ?_`JS_lO*KnxFwE$P6Nx%kUO4I>h`3=lXUqR~;V*qQfjEaDCiyEfqLaYIh(%tD)$u!_Qs z#e&v9;Mjd}CmM5YJjSXH(GW~D?h6IS#(WG92WO^iAef2D`F~I>5ez%l|8GDpp(;+d b-fRr9^+6|W!){n{j4)-u)o|)Yd4BfaX&()n delta 1847 zcmXxkSx8h-9LMo9S~IC-lbUAcXqj3rrP<=7qh_mVnWed454I2@LW?a>GC_zEk=0N^ z)I&utks(b*QA89iFARn&-M zhNFR)M0^S{#*4Q`a^bk{FeU?UU<$s&i8yN1@bf7+n|=w#;|?5;-8c`=V*(DM6My1Z z3=cCVT2oD=5zdVnn2BzT#7$_&He^n-2bIWv%S$+p{!5I)kC=pit@|zp9Ya3{wU#2} zG>fc$CEB&r8XEdxBWh)Pu^mrf6ONBCrT}-LGWTOE-a}20JK7kUrWl#ql%wv~U@>m6 z?w`XE^m|a_T*fr!H+N}hB_B{*{2SRClf)>6n1@=y7SxXHL_Ob*T6s5Wi_co###s6T zsKmY@r}@K$p-lwa8-o+jn?WO+h8ydU(;VfZ1kRw|=~bMCPf!zukbX0|Py=EbYPBXwoTmBWbV|G3P)j~3sV+JbGov2sXfs~gy=%t|qPFOxf?Z^+*iX#{`AE%-w zSjRkxzuF z+I7tLCE8QMmeVRA7W&HU3AWX~P4>Lzwe)KVH&I5^5S7F%B6yV2s3%qus&lG0aA=(# zt33~^i6vG)h(1&u6+W9I&RtAvQJ_Ek0j#mw`r1?ulL^(~Vj_5`K9~8b97&!ATGNS4 zqKMFo*P)8l*6NdCw*rL$f%hjD5KDbMj&xhO|G6XE?vIJQVDra2D?&rcs{Naz2Oa*V M1XqavePU|pf6yMOEdT%j diff --git a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po index 308ab6ac..4b16f60e 100644 --- a/vibes_auth/locale/it_IT/LC_MESSAGES/django.po +++ b/vibes_auth/locale/it_IT/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: it-IT\n" +"Language: it-it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -124,7 +124,7 @@ msgstr "L'uuid b64-encoded dell'utente che ci ha segnalato il nuovo utente." #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "La password è troppo debole" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -164,9 +164,11 @@ msgstr "Il gettone non è valido!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"I prodotti che questo utente ha visualizzato più di recente (max 48), in " +"ordine cronologico inverso." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -425,9 +427,3 @@ msgstr "La password è stata reimpostata con successo!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Avete già attivato l'account..." - -#~ msgid "recently viewed products" -#~ msgstr "Prodotti visti di recente" - -#~ msgid "recently viwed" -#~ msgstr "Visti di recente" diff --git a/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo b/vibes_auth/locale/ja_JP/LC_MESSAGES/django.mo index f4dcc5a64ba05ef25bbad9ef7fda8bb968621113..783f1fbef42e99d1ade7d0442a3cf1c24f5a35c3 100644 GIT binary patch delta 2081 zcmYk+drZ}39LMp8+aVOfNFxK`XDBx>p&}O*2?Y&rK$d9`MsO13a@^qn)*?7yScXkK zp`)OiOxxOGd6sR)td*|0R%_8JTH5pk!auQ9f0XI!{ee^K*?E4i=lA@c>-YKn&gUDy zDQvqE72IP;W#m}$%|K(?@W&7?r0+wGNyQONz~I}Axd)R`?bl;EK8|y-2j}1*X5vMR z!CN>B=Y|;*iK%#}rdmZ|1{K?I5$?j<@j0~N%gEg3Rn$UG`u!5`;QmjH!kG*bk8!B_ zwHSfLsJ)aUKU3wucc4vMZK9x#&!BeJhpqSlR^ZB+#;nE@sFe?6J^D}+l!P-m?nc&P zYEkt~n2VkM`cE;K`!7)Ae2t0BZ>~|$io@uo5XT^)F}b(~x1)A&1Qn6vsP_G+oe!cy z{E6Qy{^vLFF6zSxrxuuiRGIsbDNPQx&8D!4LMraYY&?Yg%mpr5$S~?`uj6tIVELLb z9c!={AH{R1@#b*QT39M-139P#Kkc_0HQ#Hqh<`MNOH?Q{S5Xs=p$52ti!g%T8X%jC z>Nn%vSdI&^1r?!w)WT0}Y#9bk-K(%kcsiVWkxbOGh|J6o84Fd^-jKn;Q z#e6Ks`FIkS;6+qOe?u)GjWEb9Nc2rLYNGw9@!I@$qx$vYQv4Rb)AJAx_5g*;_#{5T zC!m2Y;b9y>Hf8oOiw0~(JwJqc+h4)$IDkR;2WkN~kvU9ItT8DVi;Cn1)K}4tar*v0 zrtkHF4Tk`d;rg*+J)Xb zy|4sSyEI(TMxls85xP)2zMuzq8Pze6Rit4YYG*~LBPqjPbfWr&)2SF2Viq=|#u?-i zfCTuzqy=vwr)=V)^HW+$&LbXWvh$K({1q z`r)b4^xwc@$^?7r&u*i?Ug$l|@+=FD&(ZnmZPcGiE;*X4r10yl)t?B*JoTc0$t~3>rZ{AGMYWlO6k|&9AS!Y%c3?khf`V{kXqrl7Zc~rC-h!35&AQ%$ zA@pyd#<`0*%x|92&`Q3dQv3%=jmcn?GAu%^U@s~o2T=DPL9N`4O7T_8K1`th4i(r> z5aoAbj_xbN23H=kw0^u4+U@qwWs&65MQAt3L^YAOh*lL8WqT8RKRyo z0sgT3hngpv1CWSis7y3F$-gGr$OR41fphQ}YJi*8^*&6ZKY-adg35@Kn~2FIU^`|b z=gXYKnRp3vupg)52)5d|hsg@)Z;d7Y^)x(0u?#<=GBKTH)#7H%#a`6PU*aho!G*Yw zqpp=*N2PWUb^j;SR)w+;ThNK>??&C%X?fg5V<{KhScL;P4HL*y9u}igx&swJkL432 ztL8mw;BTmbe_8%RJr_>e=3y~&td}-ym^Nja1{0ZIO=pq z5XCx7#9(Yk1+WLTMF(&ex>1>Yh%Y48M6VKknvsShQDF%qXu}6ItxRn2S#xr zMzMj)Of~BJU8n%NEKj4hq8m5iQ`8Dm8ARh8x4eQg^gUMS{r^luuicCcPB7M>GVlcn z+Wf^POv>~R)Q+0y4A$U1)O{1EfKrH(Ax$o7qH0`&?WhGlvaSzes*4L_H1aWix_^Lb zQ~>MnBDSF(3?|A(Ov7UAKuyq#HeII%itY=PwN_&RE}<%$IaG}i%Co+**fZ6h6\n" "Language-Team: BRITISH ENGLISH \n" -"Language: ja-JP\n" +"Language: ja-jp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -113,9 +113,7 @@ msgstr "ユーザーアカウントの有効化" #: vibes_auth/docs/drf/viewsets.py:59 msgid "activation link is invalid or account already activated" -msgstr "" -"アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション" -"されています。" +msgstr "アクティベーションリンクが無効であるか、アカウントがすでにアクティベーションされています。" #: vibes_auth/graphene/mutations.py:41 msgid "the user's b64-encoded uuid who referred the new user to us." @@ -123,7 +121,7 @@ msgstr "新規ユーザーを紹介したユーザーのb64エンコードされ #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "パスワードが弱すぎる" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -163,9 +161,9 @@ msgstr "トークンが無効です!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" -msgstr "" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" +msgstr "このユーザーが最近閲覧した商品(最大48件)を逆順に表示します。" #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -319,9 +317,7 @@ msgstr "こんにちは、%(user_first_name)sです、" msgid "" "we have received a request to reset your password. please reset your " "password by clicking the button below:" -msgstr "" -"パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワー" -"ドをリセットしてください:" +msgstr "パスワードの再設定依頼が届いております。以下のボタンをクリックして、パスワードをリセットしてください:" #: vibes_auth/templates/user_reset_password_email.html:84 msgid "reset password" @@ -331,9 +327,7 @@ msgstr "パスワードのリセット" msgid "" "if the button above does not work, please copy and paste the following URL " "into your web browser:" -msgstr "" -"上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付け" -"てください:" +msgstr "上記のボタンが機能しない場合は、以下のURLをコピーしてウェブブラウザに貼り付けてください:" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." @@ -359,9 +353,7 @@ msgstr "アカウントの有効化" msgid "" "thank you for signing up for %(project_name)s. please activate your account " "by clicking the button below:" -msgstr "" -"%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックし" -"てアカウントを有効にしてください:" +msgstr "%(project_name)sにご登録いただきありがとうございます。下のボタンをクリックしてアカウントを有効にしてください:" #: vibes_auth/templates/user_verification_email.html:95 msgid "" @@ -376,8 +368,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"上記のボタンが機能しない場合は、次のURLをコピーしてウェブブラウザに貼り付けて" -"ください。\n" +"上記のボタンが機能しない場合は、次のURLをコピーしてウェブブラウザに貼り付けてください。\n" " をウェブブラウザに貼り付けてください:" #: vibes_auth/templates/user_verification_email.html:101 @@ -408,9 +399,7 @@ msgstr "{config.PROJECT_NAME}。| パスワードのリセット" msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." -msgstr "" -"電話番号の形式が無効です。電話番号は次の形式で入力してください:" -"\"+999999999\".15桁まで入力可能です。" +msgstr "電話番号の形式が無効です。電話番号は次の形式で入力してください:\"+999999999\".15桁まで入力可能です。" #: vibes_auth/views.py:57 msgid "the token is invalid" @@ -423,9 +412,3 @@ msgstr "パスワードのリセットに成功しました!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "あなたはすでにアカウントを有効にしています..." - -#~ msgid "recently viewed products" -#~ msgstr "最近見た製品" - -#~ msgid "recently viwed" -#~ msgstr "最近閲覧した記事" diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.mo index 8a92ad390f52d365a0a9340d4e27926589c5f7b8..39257f6e3ee76ec2794dccb65d8f56f10b5ce9d8 100644 GIT binary patch delta 2107 zcmY+_TWnNC9LMq5((bmFa;aA6h3&D`-e@({qHSrZl~xN?Yyl}CX?-OXMO+1+-b zK^J2LZ8X*_XpGhue3rzGA<+jDFAqKli9{ntF(A=sj4?6M*hu2{w>`u-?VQh?**!D= z`Olp8^uXJL*(;UBXAI>awT}8vkuh2PwuB4iYo9S~co`e9xYU>$Y(ag08+PH7SdC|} z3eVyF_$k)n4P1lOWyY+=HoR3+_0qV7j-9v>_v0#j4!w99ncKX93goQo1zgMh-&l#| z3{sDNRR312z%kTXCXrtga_=4VYN<0c^x$#S%HG7M@H_@^bGb2F@HJHAmoSb$pe7h! z$>cbN#A2eT{uvy=XWjmfv6%bMQR94pP0Vku(NM%?Jf#%ZBB?P0*oV7OD_B5flwtJt&A@1i1cXHjt(nLk)Bod+`M7uzuk7e}x+7chrjiLXD^N>h1BO7PboYTp!M2c7lfX z?gHwxwvtz^Ac8uabErs{knJ_4M4?l@9+m0_)E;j_tvG?&%44W;p2lW;8I|($s7!x} zg(*CQqXBAAE0{o?&Ph~?qsTUzEGosXpoQ-sW0;GmE%_O>(lSn_zP}a~U?Vb->BM#% zMV*bKSf?dkFElvSjIP7vM+G#5B*i>~aeN)a=wlh$k|W5mF(>h$K1WUbr~7%SpT8a4 z`%xL#gUZ}-WOvL-tWt^>X>?;A73r_YT&9F&HDCj_;xH=34k~~-d;u3w8LP3DU#n)+ z#JiBSndgx+UKkS!Wf#{+sI5D=>@IXIKQu`DK57%ShpInFDqC_lN*c=^qSZ$o%C&lH zJ$rJ)-g_haxZh9hrH)c3sN+-}tCT zch$SD=K)&7x}_*tj~80YJE!fvgIZ2~*zFg}dUtM>2zL=iP4L`lg*N-9NKM$ALe)`l?bFmISO4~N-IGs+ti z=FG-eFZ9l4)(e|jjLmGw3z>~s`2Ond+PTi>f8FQ4uZRD2-PKWWIp6m#D(H$)YN=DH z18y@PJ{!vy<+0Z+9iLzde#CeT4j#Eb1sBp@fs^qN#^QNgjJI(LzQqXqjT105#4K7v z#S?^bArt3d4u<0{^x#2cOgn~}$Z5xW7)iSqqwp&x;a}%^BAt$>JrA{(<;cg1oc0Fv zXsOi%daw?)vg3FHuVOvMhM6tH!>E}DunD_S1I!<1MrirS*j9qNUXA&<)4AS`L9{zj z{XE1}#<%ALTFGZrivJ*~u_SuQ#Vphcno${PLEV1>wes_*6yI{}!ilu|P!s!(d~Ap> zy0$RV8-tV3mrjsDkb^bI$1d@u3EV{O=_6c#uTTTInSKK%qB=T*nn)XJ!Vgdr{O0%% zHBKZ4AP#d;nW%~&{~Blu7t}!$&cTzY4(>YFyKoZi9-N6^P#KBfCgx-laUae^&X--p zS$GXou^SWc3)Z-}hru*XeKh&cAZTS4Gw>|fieb))Jf_~It{Dzuo6ZvM_>=^1)pF^ek z3Tlr#P%Hj`+RFh{Ki@G8-ON%cPe-MCE%K8cL_Ob%EWl?k2y`lYP$_otl)4P1!K)s7&Cdbm>-9Xi`9W8|fTc~AJZHA_=qUq%gMMG~DP}bM_E4)d0wM0s#PTX>; z_Elv)Rj-R)5wc}9RF&KjtN_>eJH2VHlE7{6TR0P_#B_; K4m2k$9P=M(2&t$5 diff --git a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po index c0210954..6fe50f50 100644 --- a/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po +++ b/vibes_auth/locale/nl_NL/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: nl-NL\n" +"Language: nl-nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -125,7 +125,7 @@ msgstr "" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Het wachtwoord is te zwak" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -165,9 +165,11 @@ msgstr "Token is invalid!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"De producten die deze gebruiker het laatst heeft bekeken (max 48), in " +"omgekeerd-chronologische volgorde." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -322,8 +324,8 @@ msgid "" "we have received a request to reset your password. please reset your " "password by clicking the button below:" msgstr "" -"We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik " -"op de knop hieronder om je wachtwoord opnieuw in te stellen:" +"We hebben een verzoek ontvangen om je wachtwoord opnieuw in te stellen. Klik" +" op de knop hieronder om je wachtwoord opnieuw in te stellen:" #: vibes_auth/templates/user_reset_password_email.html:84 msgid "reset password" @@ -362,8 +364,8 @@ msgid "" "thank you for signing up for %(project_name)s. please activate your account " "by clicking the button below:" msgstr "" -"Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op " -"de onderstaande knop te klikken:" +"Bedankt voor het aanmelden bij %(project_name)s. Activeer je account door op" +" de onderstaande knop te klikken:" #: vibes_auth/templates/user_verification_email.html:95 msgid "" @@ -424,9 +426,3 @@ msgstr "Wachtwoord is succesvol gereset!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Je hebt de account al geactiveerd..." - -#~ msgid "recently viewed products" -#~ msgstr "Recent bekeken producten" - -#~ msgid "recently viwed" -#~ msgstr "Onlangs bekeken" diff --git a/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo b/vibes_auth/locale/pl_PL/LC_MESSAGES/django.mo index 390c3944be7a4ee82ae694402876de636245bd1d..98b928e1f4f436b916a8584b02fc08c3023dfb67 100644 GIT binary patch delta 2127 zcmYk-ZERCj9LMp~F*+&_!vf+MZU+gljR`V`GGLpCpaQ}Mh-?y|tT(Ld!<}unx&`f` zS$smXSdkZqn()Gx5F27bG$zOlCSp`f6tfVA@#&3$7siZ0@cV18hMS)IIrp^pod5rS z&)q(4{dQgUa;n+i)PrFfKOcuu`bK>~1%$Pd7gbT5BiZS!B2KD>(*ogbF0*~Mv zJc$qCC|2T4oQV|yW6H4(XKAU`bnakaD=x(joPopW$G4HS%`sFUCp^E#JGq{~AWmhH zYOF$yx8QVaL*=p;`IxYG?V?|)_R-OehftZli_hc77{ZlPjah?7QITK7IR1iKpnV#P z<31!76Ge^pVJp7mjem}%Twg%V^Bpc`eRGA5A`WnuN?eJQ#mNd47agR0PRRNyBtiXS2S&Qx(z4KBgO*oOCDCP@8v``EP%+|R&YtiBwp zNn-(S^L!Q?xz3?>{dpu=^D91%f1?6vVe7M|2_r+MA62Q>QGtAj8}Ss9oB1b8N6&N$ z4~qR}%5eqG^W1{U^aWJOj^Z*ri^|{{GKDFpjGAW=suJ~{4W6q|_qCulc^qHG>??Hi z41=uFjE7L0V-g% zrL!hZXA@rxqZa1$t2T525zZVVr>fC9p#uIB_uvgwrX9Ap3A<6d{7qB> zr_qPR|NpU_-WFP|O25M!UWv+FWzqyqH2p!+u_kwO^1{GIdTVKq=4$3t$(EdBt(|Ly0MpLMIU^*0DOQBc%Z?TKM-lyA-8t-CjZrne&>0z!^ zEFG%yQ-xkJ@p}3TXsYsK-nal{UFnofcSlmTFXbd{cPM51BTmK% z+qj!b+oaRwB+{_~TN4jGXB$`5*4s#e(S9eHa;^-Gbaf})gd1}YM!G^V>n6iaGXHXU z`=pZISpKKr)v};#dmQE&JTQ>9snHih2b}!5dAEGoHmw~^4_HNV e7SLiMxBqC04GWXT&Kz?lgc*(z1ml4wd delta 1851 zcmXxlS!~Qv6vy#1#f;WgYHO<}f)H=FrYb`BWMv0`Mv4@Byp^Oj-4p5$)5R`4D2 zYMd*W!TffYKr8uxDsd}P8uK$sE{;R3U?Zv`TT##NM6LV~s>ElUP1u+Ib5vsAk&pf1 zi=nLxo0R1o*Rf)<(>aU3wb3+5H$4uOf8sLJv--P|?Kf)pS5mk{y9wH~}i)(QRa=z>^ z4#VS^fz6nPA2H)BXP_0y$r7mlL=0dxR-+QX>b#Fi>;)F-{r^qC$8y=|H5fvYvu0EUUZMv2 zip*iN*auBiivw|&^Aswv+wSiVP~*JCQv8RSrP7V6?{?`#?;t5o#@1rt)f=lr| zYK5i#*rBULo$BqV0Z$``y6vDs+f~sX;5-*kz(Sg;qu)=a#p@p&T~i`y-ax!|CWlrW zndwdS%#YN1$E{vSe-SN6n@OvpmD93m?blR-#k9FJrK*k6rS$UJqS*fimBiCrza71( zy2>IRU%y}hQAt}rR^\n" "Language-Team: BRITISH ENGLISH \n" -"Language: pl-PL\n" +"Language: pl-pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -52,7 +52,8 @@ msgstr "Uzyskanie pary tokenów" #: vibes_auth/docs/drf/views.py:16 msgid "obtain a token pair (refresh and access) for authentication." -msgstr "Uzyskanie pary tokenów (odświeżenie i dostęp) w celu uwierzytelnienia." +msgstr "" +"Uzyskanie pary tokenów (odświeżenie i dostęp) w celu uwierzytelnienia." #: vibes_auth/docs/drf/views.py:35 msgid "refresh a token pair" @@ -125,7 +126,7 @@ msgstr "" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Hasło jest zbyt słabe" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -165,9 +166,11 @@ msgstr "Token jest nieprawidłowy!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Produkty ostatnio przeglądane przez tego użytkownika (maks. 48), w " +"kolejności odwrotnej do chronologicznej." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -410,8 +413,8 @@ msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." msgstr "" -"Nieprawidłowy format numeru telefonu. Numer musi być wprowadzony w formacie: " -"\"+999999999\". Dozwolone do 15 cyfr." +"Nieprawidłowy format numeru telefonu. Numer musi być wprowadzony w formacie:" +" \"+999999999\". Dozwolone do 15 cyfr." #: vibes_auth/views.py:57 msgid "the token is invalid" @@ -424,9 +427,3 @@ msgstr "Hasło zostało pomyślnie zresetowane!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Konto zostało już aktywowane..." - -#~ msgid "recently viewed products" -#~ msgstr "Ostatnio oglądane produkty" - -#~ msgid "recently viwed" -#~ msgstr "Ostatnio oglądane" diff --git a/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo b/vibes_auth/locale/pt_BR/LC_MESSAGES/django.mo index 639d56e6142cc2e8dcc57e21b84a60e5322a415e..73a2d8f6b3ec8c1e21cafbaacdf51bd922b6b162 100644 GIT binary patch delta 2103 zcmYk+Z){Ul7{~Eb7_AfLusSDfZkJ8>e;}~A4cLal6k)^7;babnrMt6r>#p3}GFUW~ zEJkB6l2kNCXC#X+OpGK{V?ttL7<=IhO<*C48WKkQ8$;qdU7Ydz>q_EH&;6Wx+I!A( zo^wt=Y5QV(@@g>Wl;Ju+DW?3h%$OwpxPlwkcL8H+@Cue=&Mn5Q#VXYAcVGiPgKO{< z7T_6d!dWcBMO=+*a*fHy8oWb8ZJ}~24STT``|&n>8U6SsGPZda707hfZ}4`W|HdG$ zq?1xCLAAGG9(JSVGKhT4Q1;nDzowd?q8DF4&FnpV5kJQeHm)>gE5412d=6uH9W_AD zDh9`cNGxUq)tf-W4f&W0+!V+hYHfeP zP3R+h4cLHD?8c|?9IC$p7FvPTpeE3Y3V0&x3DkJ+uO|P6RKB7?skw$4@Mly93s{SJ zysZvexT$>)-i?EJAC99kG=&O$8b|OfvhPd@FI8bBR$w>YgX2N+zu(8MrC|dNHyFJh zOPGdc*ooQ`5xgHKQ7?Xq#AYsG8(zmUEMx0y0v)IT`%$OFMeU6@@IibB73dF1Dq7Ru zQET)kDv-sj^(-KLo2QW`i92IpniJM41%cl)}dxNh)Q_`)z4vEkCRw}XR#G8 zBC#b+KKb2ALj`IEBdGK4qB@vBrTPR`;uPwX%px6_-%v}Xn*u9FwO64s(~kVa^rA91 zhF$mp=Ii|5prRlCi}zxX1=H?qLUnWq`|%h)hjXYUX=5X>ZA>qA;4o^5K1O|i9<`L; zqWTRmePyN&)o&w~>il<7X~t1C;D^WtgOMY~3M(nZQM=SOu-v5&G#5C6NWvh}^GYyQHP z?K~;ly4Z^5iA-(jZ=jC)I*PWzBiVMLq&25D21;8GP^+fYQranO`poqhcWpi$8M2o7 zH-pShl@C!KO}!qd^mU~_3)K5_t+?Y@<928yeI+mL>wDgHh7#epXT>8?&q{cKzjQJjah)+|)Oj`<4vkul zJ7l}*SMqz7FFWL>zYk6Z3M|hai-fG1kE~cC8h5N=Hxv$~2i9KpF=QryxZ_!e6Sif0 zo=p&mnbU66AqX!K8jVgk2`d)jr%Qp@F`}^vX6E$KXw0#O?4_9OSZ3^)70!e+lU6)L NsxU+Ar`H!R{|^k10KotN delta 1847 zcmYk*S!_&E9LMqh3}%#Kw6v(Uq1sZaty(&C!&pj{mR1!JK@h2keQU;=h!?4`1d&+6 zgD7HBse}?u5Ro9_0nsOYuswLO#8Thi^fqyF&;9)GojYgwpL6aOUn>l@#&kVylp5+_ z>SwoE5bt#3MrrbzW#Da0!S^@_yLa#SJ_X0}T#N&83--q&H~}wV0=`2Z{=`1mBg!mR zT@51W!Hdy268+d4SD^&7}~zEZ{uP zMUSRhNuWP2LCtJ8*5OH9j{SR@O~P%ck%zGsTTmV3M4J&>5z@EKM!m1ZB3$9TzldFV zZa}qj6VvG59uR0IA5ba&g`~!kX(b$~f@3qr@%#ogu&>Bv zf4I@K^(4LhZ~z7~2r>!$SdCnEl$!={9<`>8I0m1gI&w4owU~rz=n!fkXHf&bfg0c! z$97adec1rKTP*b`P}&-eNX>L;W$GY0{@n!$PdWp?Dnm z#F|h8e2O|nZK%EA<|s_YXw*QZ8oyx@rqX)>29UmO9|rIgGJ&AA66k!lp&IytN_9J?qmT8_ zsmMbu(Gt{vwxb$6fXc`jbp$yBZvZ>oG&;KSZF0nsE`nLM=fS z3#m;Rz-hP;wIpXzzlTvv_ZZdS4^$=+*)VD^4U@3|^Khy2d;\n" "Language-Team: BRITISH ENGLISH \n" -"Language: pt-BR\n" +"Language: pt-br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -122,7 +122,7 @@ msgstr "O uuid codificado em b64 do usuário que nos indicou o novo usuário." #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "A senha é muito fraca" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -162,9 +162,11 @@ msgstr "O token é inválido!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Os produtos que esse usuário visualizou mais recentemente (máximo de 48), em" +" ordem cronológica inversa." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -331,8 +333,8 @@ msgid "" "if the button above does not work, please copy and paste the following URL " "into your web browser:" msgstr "" -"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador " -"da Web:" +"Se o botão acima não funcionar, copie e cole o seguinte URL em seu navegador" +" da Web:" #: vibes_auth/templates/user_reset_password_email.html:88 msgid "if you did not send this request, please ignore this email." @@ -421,9 +423,3 @@ msgstr "A senha foi redefinida com sucesso!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Você já ativou a conta..." - -#~ msgid "recently viewed products" -#~ msgstr "Produtos visualizados recentemente" - -#~ msgid "recently viwed" -#~ msgstr "Visualizado recentemente" diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.mo index 44471b31e3ac807ba46af2c09b8a313083cdb397..cb57cb831aa45dd657576d368981f840efe371fa 100644 GIT binary patch delta 2123 zcmYk+TWnNC9LMolC|hbNmldpSp&i;tFHq!C3I$4$g4Ck46$L64JZ_J6)9o(VODj!f z)y5EvCQa7LgH}`$O?;5VjhGN03@tG}=z}~c3Qa(xiMJOF#!3^vzwME5va_E#vwLR# z|NqSHPuu_Ak(vzTj2f;k+EUuBS;nOB${gOfzRNYH1}|d;=FByw7^_gGZRkkXhY+=}~98H}JR@&@Yr zW2nr}qDp+hbJF{K3h!Zj9_3Vk708geA6e2gVrns+Rys9!1RL-bUDuG5+z=NKzqSkwRA@wh$^Cbf+%{A15Kcgm?!j)LS z)0&`xH;wPXd+{*dhXbezjiCZRgT44Ma_&qi4^?3$uE2I&h64fWf6&LNWk3u4$?7`I z#iXGO+fZNZ#dUZREq;bN$ zOs9z1AI33c8_lnH0;f=szQk%O?FjP2FsD(6>O)jU=TMpdg<9B8+U%amM^$zyYT*{# zhCMU)Df0oHRtCO6l_)^nl}QQeER>@rs>f2?jpg_Z61zEx#Ax0{1$G`Op1Ft$=m*rE z|ACuvG5=bRVjJrGnfJ0CV=|~OPT*Gj4T;HAaR82EGxp&H)WU0shGSz|PzfADk~i-o z)iU<2y;ow%I!O&6VwcpP<_&!Hx|f;zP~z0b?+Ovw+R76{^tIEc#h z7V7!=%V(aeL(TIf`jC8XU#ft%yIPU&^M*Iz1GIXYDxv80hooyudU{Sp-h=d1o1N)u ze~It0^e+GU&_V7yX)5j>+5uVzO~04_uVy-jXzeteB5jZ^_9S~6)K>}i(^_^kyy>WPJON#-iQHU?Of4J)yWw z#@(3hapJZ=9 zv!S39w$WI(8_S$n&@p>fESmW~P&qf?ST~+9Z*lpoRJ+!WyJ0?Z zZP1Ci)(P@Wn@ohlp+P4RjoGkU>k!Of(#ek4pc}S*PRNVtj)=xTifHLjgqd!KGcio0 b3Ugw3wP|$|(MU3EBgvU?`ZKGS)zAJ9UqcE~ delta 1847 zcmYk+SxD4T6vy#1YBMfnlV-W(mZ)vES(fIOnOl}-S{6k_s7OdYv=F6JNEA^?4iW?v zWd%t_Gz4wup1ZQMNGg~=*4e19>c@T zqP0{!op2t^#+jIlk=TT8+<~lVdr^sWIbOvHjGto^zQ<(z)>*29+)IEOmZ8#o^yp%w}v{Z>puO>`KQ$Z1r<*H8(5 zbo`B4X95>sGUlTyQSYVxT4+5FG(j8A#QmrVt~k#JF_!UTOviVqigHyh36)4Ve^h|cs3Ta7I>ODUyVC5VlTD}H@dE1Xo}niEgjpEMLmfp9>Uk|{ zqE=)rYe$vzAnMn01a+i6sLTBj&*BH{!lRr+HTt~F#_`xDJcMniOuwK?8_cTw5G)FH znG#VunvU9e3u@s#$f;N-s`is8H{j-{Xy$w8fU1?J&)tiyiPd_Nr{`7fvUk}+Su|1vtvX9xe%3c1+oeABUQ8k%*FediN8>ZWstT0ejcV`B`(5ksLR`jn&$ydV|{z$yfBt} zsl=tI1#0mCwxD)6jGEv(>UO85j7(I8F2>|N+GNi+~Ognl3YS_z%?#419!MhBxt&HvsO^;Ls< zqD+JTnzo`=?RR-5=N8c`{W~5x?ln$d8=pm}qAJpI;$PD*slvb7lU%TY-gH7Yu#nI> zsI4U2#2A9=StFsAKY}gAa{quQ)3qY-#FOO?OpNSz1>(Hb!9jI3ftKjZ(7>gHDM5j` IN#((R08pu=K>z>% diff --git a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po index 0a52db47..f072b80c 100644 --- a/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ro_RO/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: ro-RO\n" +"Language: ro-ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -125,7 +125,7 @@ msgstr "" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Parola este prea slabă" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -165,9 +165,11 @@ msgstr "Token-ul nu este valabil!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Produsele pe care acest utilizator le-a vizualizat cel mai recent (max 48), " +"în ordine cronologică inversă." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -378,8 +380,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți " -"următoarea adresă URL\n" +"Dacă butonul de mai sus nu funcționează, vă rugăm să copiați și să lipiți următoarea adresă URL\n" " în browserul dvs. web:" #: vibes_auth/templates/user_verification_email.html:101 @@ -425,9 +426,3 @@ msgstr "Parola a fost resetată cu succes!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Ați activat deja contul..." - -#~ msgid "recently viewed products" -#~ msgstr "Produse vizualizate recent" - -#~ msgid "recently viwed" -#~ msgstr "Văzut recent" diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.mo index 1600c9cb74d42164127e7f8c38051a9ac3b0e19f..4b4ed414e793a03d2993b9344825596e8b7ae81e 100644 GIT binary patch delta 2205 zcmYk+e@xVM9LMnw3P%Jek_tw_wU&D^q;OWNu`|LVtLvGsf%=hkQU`9411&wcLudA~oO z&-cEs|D`c}D>t>*P@1R@Q2(7`Oc;Mk<3jl%-Ix-*iN%kMnUWPQwG}!uOE5%`sFU14+Nd8QlMaxtPgA zim(vXzYMdn9+k^>0r_V#xy z!xX~Tgyq-a4y#4gBZ$X{kNoWYUx-_#~o&` z!wS-<#V%ZcU!wZ|##LC$5q}&HVF-tD1(vbi^Du-9u^%5s2g$|!fp20OS?le2J4{1+ z@nO=_xRLu2Y{Y4#sRzD<)p!us;Z=MBXR|N*ejPr9ov1U?hkEXbq^D5N9YO`3$w|L~ z;Yu0qs?iQT|jrFYIqJyTgnEDh|(GyGJzd#wPR7EG!iZh;} zrI1!cJ+6Y3P0^LEMXg)7-%3@EdPkn8Hc*x0-BL?KyIxP#>Cp*OQP@gVrGlyrTCJP^ z6{VoEK6=}gw{$tJmAa*9F`i4bCeK6)HJG=b{kctdJ^+AJ{vupJ}+fmES~>>=k}d)U5Yk51kW z+Gm|Z_Qlw-qWY=sekZ~==bbKl*xBzKDz!Ay*-woyC~i526F2*#{`~xKk7a+V@jP|Z z9%OvP9;`XR>#B!_4vd=P`M#Lu*($6jtPehMn pL?Xxonj>*Df-&Onw&Tn>b25p80v7{~EvOLw((wA-z_Emm9faMjUEOSi5TRZ3ln5|I*#7p}yygb0bG(G3zu z;s^=R5*vcJ>xGCAi3$?p1wrwG#1(OTf7?Hko&C&A|DAc}nfbRbXFRG5zVNo+W0bkn z-qa6KWKqL{ej^%uDywv@?DUyVHM&Y1oR&NIVY_lXb=An1QoKc-_dCSxnsxOj%eCep7>B>&|!P7y^Ze#OC<&$cwa3@6|P%)#Hd7PGnH0X&Ww z*os5ZOWylo0Ey9-;wD^&db_@%j=)D6WZxi-DjGRB1Gk_iY{4S@g;TJA?T^HrsGr}! zzW5e(Ct^7#O_<=Af|@rI75FA>!A3lWTe<1mF_^)D61+9xWxS0#;~?ScNDiP<+=SZE zRh)|Vo$+Mys-I_}j-~*WnOZEt6F3jwU>269@J8TDWWJz1qM^uNqh7<$sGWJ~<*s9x2PR95LE>>p)To9R6v=0xsVh2Un>8%nAd5Kz!Iv0XG$AQjbRg! zk{?QT`(q~4E})i%Cb@gLszOWL!|RmH+0;DhBx*Hv8dZDzSH{tpL)AWY8y diff --git a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po index a3873bfa..06c32992 100644 --- a/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po +++ b/vibes_auth/locale/ru_RU/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgstr "" "PO-Revision-Date: 2025-01-30 03:27+0000\n" "Last-Translator: EGOR GORBUNOV \n" "Language-Team: BRITISH ENGLISH \n" -"Language: ru-RU\n" +"Language: ru-ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -125,7 +125,7 @@ msgstr "" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "Пароль слишком слабый" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -165,9 +165,11 @@ msgstr "Токен недействителен!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" msgstr "" +"Продукты, которые этот пользователь просматривал в последнее время (не более" +" 48), в обратном хронологическом порядке." #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -379,8 +381,7 @@ msgid "" "if the button above does not work, please copy and paste the following URL\n" " into your web browser:" msgstr "" -"Если кнопка выше не работает, пожалуйста, скопируйте и вставьте следующий " -"URL-адрес\n" +"Если кнопка выше не работает, пожалуйста, скопируйте и вставьте следующий URL-адрес\n" " в свой веб-браузер:" #: vibes_auth/templates/user_verification_email.html:101 @@ -426,9 +427,3 @@ msgstr "Пароль был успешно сброшен!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "Вы уже активировали учетную запись..." - -#~ msgid "recently viewed products" -#~ msgstr "Недавно просмотренные товары" - -#~ msgid "recently viwed" -#~ msgstr "Недавно просмотренные" diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.mo index f0e32b0bfb9eaec08f77fdfedc4fc20dce51695a..184a1cc97307dc4559c4202dacdd77ea20f833cd 100644 GIT binary patch delta 2049 zcmXxlZBSHI9LMp414{&?Vm=^>w}E(+N`nLusEiUdLQP3x&>h%>c-UG%DoZFUL8;7@ zm@%Li=v2O8awjQ8hj8tP%AWuN_-d_@glPCOfnB;U^=E@1+K-81lGSQf?Z34I{K5*Q*i~;&rmuyakoe zQB;Q~k!Q`2Z68J5cNz8klx@FeowL{f!E~-i@r`SuIT)w!zb+gY^D3(2qnL*M$ZIs; zVFgZN8K$z1N~pzp1PiHmV>l61KU0{4f1naiTCiU+Q|a;RWjZDVr%fD3z356s2!R69Y3rd1q{7XDl8Bi?4~chQHdquf93T3PToQK_mNTBN<x{|Ay#wMb$)^6fJiNh0Ps4p5v^g)sM(JN)<&%(E{d4Ec1U5ogVRQ;OpodSB%r< z^*S9McVpmcd>~@qD?V>sdu>~*(^lWm>a@3dd``W))j8bY>G0G!&ED2F$LFc_w6rz7 z?qoE(UvqNvGuJx}Ewmo?_*y+Tx=z*B`@AjQChwt!T6dG<_0@TNf#Zw6jBy3eT?meU z7066WdvvD ln+x;fJ@ezeq28Wg*XiKcN1+c-2fO=kcD)nmS^d(Y{{fIu0Zae@ delta 1839 zcmXxlTS!zv9LMolv0YayFQulIQr=Rtykxp*X;;(AvNX$j5tVKj1(i_A21QgaU6vAx zg32NyrCfr7Fi3jwCAvtY7zOswy&fa1zQ5gZICDPpKhDnlXLio|s`Q7)`z|K*f}u20 zr&GU%7~{pq6Sz?xx{S%jN0^GEn22Fv!TzZ@pSS`O@Bqf*87#(|n1mx3g}*Tp!`;SA z(Nu{v!g(+kbI^m6u@#-TADPn}MkR90+Jn)=Z!reHU<&@V&yyK+5^)}CEsK%MEVuDG zbZV*fH1xr3sFfYT4(!AxjEyj+6x&gm`>_rCQ4{1(G=`=rN9H!GQP1nK9GmU)8yHI5 zjT)yHGnn5zrJjtVGSp7gMX~>yXbTTCKpW=ZQPco;?ejjIM*ITP@iS^iqUc0UCJuLFI&!|u zIh>7`Fa!H>27bmy2Yr}K<1|lU|I=ukA`7jo2bIVG=HrNsBUz@lZWgNlJk%+#v(I-~ z+fkoCj{2%PQT?ylxF2;!25kJ=OQVPf!`5g1MZ1E%xE?7#w4d>NJLZPbc-ZTt*Nh@Yb-4kJ4miRu@J zT5%RKm#M*-*n(Qv3Dg<6h*(r>&h>O5BA?;5}-9pO}ko_F0J* zqY|q|^{YkoYeF6BL#TeY?DI#8_5Q!4!DT*j(*Ta?!34svhB(&7Em%Oj5A(1K$=wVh zhdS`{4S}MCjF(#5D8dS=b|r&aLUrp0M`fXJhBMV&O{N=`Y881s|Y@sS$y^#9mRkW-{fmZOpK^^UtHXcVWs>&Ll!xir-r?or~2X}9y zZR>TNL)BT*kJ<|Ac+ojs<*Rk2ENY~cMb&;UrgBIFWi5AYt$s98sGF%OWkJjmtn_ue gG99b^gRWesf9m8r4u3*am)k#((CF~*Noo!G4_Ysy=Kufz diff --git a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po index 7da68893..b81f9a6b 100644 --- a/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/vibes_auth/locale/zh_Hans/LC_MESSAGES/django.po @@ -121,7 +121,7 @@ msgstr "将新用户推荐给我们的用户的 b64-encoded uuid。" #: vibes_auth/graphene/mutations.py:60 vibes_auth/graphene/mutations.py:125 msgid "password too weak" -msgstr "" +msgstr "密码太弱" #: vibes_auth/graphene/mutations.py:106 #, python-brace-format @@ -161,9 +161,9 @@ msgstr "令牌无效!" #: vibes_auth/graphene/object_types.py:39 msgid "" -"the products this user has viewed most recently (max 48), in reverse‐" -"chronological order" -msgstr "" +"the products this user has viewed most recently (max 48), in " +"reverse‐chronological order" +msgstr "该用户最近查看过的产品(最多 48 个),按倒序排列。" #: vibes_auth/graphene/object_types.py:41 vibes_auth/models.py:108 msgid "groups" @@ -399,8 +399,7 @@ msgstr "{config.PROJECT_NAME} 重置密码| 重置密码" msgid "" "invalid phone number format. the number must be entered in the format: " "\"+999999999\". up to 15 digits allowed." -msgstr "" -"电话号码格式无效。电话号码必须按格式输入:\"+999999999\".最多允许 15 位数字。" +msgstr "电话号码格式无效。电话号码必须按格式输入:\"+999999999\".最多允许 15 位数字。" #: vibes_auth/views.py:57 msgid "the token is invalid" @@ -413,9 +412,3 @@ msgstr "密码已重置成功!" #: vibes_auth/viewsets.py:112 msgid "account already activated!" msgstr "您已经激活了账户..." - -#~ msgid "recently viewed products" -#~ msgstr "最近浏览过的产品" - -#~ msgid "recently viwed" -#~ msgstr "最近浏览" From 6e5a008802460ca30e6d5a08cc41b97c8092029d Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 13:04:33 +0300 Subject: [PATCH 07/15] Features: None; Fixes: None; Extra: 1) Removed redundant "attribute" filter in AttributeValueAdmin to simplify list filters; --- core/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/admin.py b/core/admin.py index 281d523c..9c63db7f 100644 --- a/core/admin.py +++ b/core/admin.py @@ -88,7 +88,7 @@ class AttributeAdmin(BasicModelAdmin, TabbedTranslationAdmin): @admin.register(AttributeValue) class AttributeValueAdmin(BasicModelAdmin, TabbedTranslationAdmin): list_display = ("attribute", "value", "modified") - list_filter = ("attribute__group", "attribute", "is_active") + list_filter = ("attribute__group", "is_active") search_fields = ("uuid", "value", "attribute__name") autocomplete_fields = ["attribute"] From 4e269dc80164ea6bcb884be9e511c81d624dbe5d Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 14:48:16 +0300 Subject: [PATCH 08/15] Features: 1) Add `BulkOrderAction` mutation to handle bulk addition/removal of order products; 2) Introduce `bulk_add_order_products` and `bulk_remove_order_products` endpoints in viewset; 3) Add `BulkAddOrderProductsSerializer` and `BulkRemoveOrderProductsSerializer`. Fixes: 1) Update `remove_product` model method to handle zero quantity removal; 2) Correct permission check in order product removal. Extra: 1) Add `autocomplete_fields` for products in admin; 2) Enhance docs with bulk add/remove schemas; 3) Various code refactorings and minor tweaks for improved maintainability. --- core/admin.py | 1 + core/docs/drf/viewsets.py | 14 +++++++++ core/graphene/mutations.py | 55 ++++++++++++++++++++++++++++++++++- core/graphene/object_types.py | 7 ++++- core/graphene/schema.py | 2 ++ core/models.py | 19 ++++++++++-- core/serializers/__init__.py | 8 +++++ core/viewsets.py | 38 +++++++++++++++++++++++- 8 files changed, 138 insertions(+), 6 deletions(-) diff --git a/core/admin.py b/core/admin.py index 9c63db7f..6b4b573c 100644 --- a/core/admin.py +++ b/core/admin.py @@ -331,6 +331,7 @@ class PromoCodeAdmin(BasicModelAdmin): class PromotionAdmin(BasicModelAdmin, TabbedTranslationAdmin): list_display = ("name", "discount_percent", "modified") search_fields = ("name",) + autocomplete_fields = ("products",) def get_queryset(self, request): qs = super().get_queryset(request) diff --git a/core/docs/drf/viewsets.py b/core/docs/drf/viewsets.py index 45df6ad4..e2b42541 100644 --- a/core/docs/drf/viewsets.py +++ b/core/docs/drf/viewsets.py @@ -15,7 +15,9 @@ from core.serializers import ( AttributeSimpleSerializer, AttributeValueDetailSerializer, AttributeValueSimpleSerializer, + BulkAddOrderProductsSerializer, BulkAddWishlistProductSerializer, + BulkRemoveOrderProductsSerializer, BulkRemoveWishlistProductSerializer, BuyOrderSerializer, BuyUnregisteredOrderSerializer, @@ -196,12 +198,24 @@ ORDER_SCHEMA = { request=AddOrderProductSerializer, responses={status.HTTP_200_OK: OrderDetailSerializer, **BASE_ERRORS}, ), + "bulk_add_order_products": extend_schema( + summary=_("add a list of products to order, quantities will not count"), + description=_("adds a list of products to an order using the provided `product_uuid` and `attributes`."), + request=BulkAddOrderProductsSerializer, + responses={status.HTTP_200_OK: OrderDetailSerializer, **BASE_ERRORS}, + ), "remove_order_product": extend_schema( summary=_("remove product from order"), description=_("removes a product from an order using the provided `product_uuid` and `attributes`."), request=RemoveOrderProductSerializer, responses={status.HTTP_200_OK: OrderDetailSerializer, **BASE_ERRORS}, ), + "bulk_remove_order_products": extend_schema( + summary=_("remove product from order, quantities will not count"), + description=_("removes a list of products from an order using the provided `product_uuid` and `attributes`"), + request=BulkRemoveOrderProductsSerializer, + responses={status.HTTP_200_OK: OrderDetailSerializer, **BASE_ERRORS}, + ), } WISHLIST_SCHEMA = { diff --git a/core/graphene/mutations.py b/core/graphene/mutations.py index 6260b0c5..a7aaa90d 100644 --- a/core/graphene/mutations.py +++ b/core/graphene/mutations.py @@ -11,7 +11,14 @@ from graphene_django.utils import camelize from core.elasticsearch import process_query from core.graphene import BaseMutation -from core.graphene.object_types import AddressType, OrderType, ProductType, SearchResultsType, WishlistType +from core.graphene.object_types import ( + AddressType, + BulkActionOrderProductInput, + OrderType, + ProductType, + SearchResultsType, + WishlistType, +) from core.models import Address, Category, Order, Product, Wishlist from core.utils import format_attributes, is_url_safe from core.utils.caching import web_cache @@ -221,6 +228,52 @@ class BuyOrder(BaseMutation): raise Http404(_(f"order {order_uuid} not found")) +class BulkOrderAction(BaseMutation): + class Meta: + description = _("perform an action on a list of products in the order") + + class Arguments: + order_uuid = UUID(required=False) + order_hr_id = String(required=False) + action = String(required=True, description=_("remove/add")) + products = List(BulkActionOrderProductInput, required=True) + + order = Field(OrderType, required=False) + + @staticmethod + def mutate( + _parent, + info, + action, + products, + order_uuid=None, + order_hr_id=None, + ): + 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")) + user = info.context.user + try: + order = None + + if order_uuid: + order = Order.objects.get(user=user, uuid=order_uuid) + elif order_hr_id: + order = Order.objects.get(user=user, human_readable_id=order_hr_id) + + match action: + case "add": + order = order.bulk_add_products(products) + case "remove": + order = order.bulk_remove_products(products) + case _: + raise BadRequest(_("action must be either add or remove")) + + return BulkOrderAction(order=order) + + except Order.DoesNotExist: + raise Http404(_(f"order {order_uuid} not found")) + + class BuyUnregisteredOrder(BaseMutation): class Meta: description = _("purchase an order without account creation") diff --git a/core/graphene/object_types.py b/core/graphene/object_types.py index 86ff703c..ae06b024 100644 --- a/core/graphene/object_types.py +++ b/core/graphene/object_types.py @@ -2,7 +2,7 @@ from django.core.cache import cache from django.db.models import Max, Min, QuerySet from django.db.models.functions import Length from django.utils.translation import gettext_lazy as _ -from graphene import UUID, Field, Float, Int, List, NonNull, ObjectType, String, relay +from graphene import UUID, Field, Float, InputObjectType, Int, List, NonNull, ObjectType, String, relay from graphene.types.generic import GenericScalar from graphene_django import DjangoObjectType from graphene_django.filter import DjangoFilterConnectionField @@ -508,3 +508,8 @@ class SearchResultsType(ObjectType): 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) + + +class BulkActionOrderProductInput(InputObjectType): + id = UUID(required=True) + attributes = GenericScalar(required=False) diff --git a/core/graphene/schema.py b/core/graphene/schema.py index 5f6947fd..223731fc 100644 --- a/core/graphene/schema.py +++ b/core/graphene/schema.py @@ -19,6 +19,7 @@ from core.graphene.mutations import ( AddOrderProduct, AddWishlistProduct, AutocompleteAddress, + BulkOrderAction, BuyOrder, BuyProduct, BuyWishlist, @@ -294,6 +295,7 @@ class Mutation(ObjectType): remove_all_order_products = RemoveAllOrderProducts.Field() remove_order_products_of_a_kind = RemoveOrderProductsOfAKind.Field() buy_order = BuyOrder.Field() + bulk_order_action = BulkOrderAction.Field() deposit = Deposit.Field() obtain_jwt_token = ObtainJSONWebToken.Field() refresh_jwt_token = RefreshJSONWebToken.Field() diff --git a/core/models.py b/core/models.py index 6b79962b..3b1b64e9 100644 --- a/core/models.py +++ b/core/models.py @@ -546,7 +546,7 @@ class Order(NiceModel): def total_quantity(self) -> int: return sum([op.quantity for op in self.order_products.all()]) - def add_product(self, product_uuid: str | None = None, attributes: list = list): + def add_product(self, product_uuid: str | None = None, attributes: list = list, update_quantity: bool = True): if self.status not in ["PENDING", "MOMENTAL"]: raise ValueError(_("you cannot add products to an order that is not a pending one")) try: @@ -568,7 +568,7 @@ class Order(NiceModel): attributes=json.dumps(attributes), defaults={"quantity": 1, "buy_price": product.price}, ) - if not is_created: + if not is_created and update_quantity: if product.quantity < order_product.quantity + 1: raise BadRequest(_("you cannot add more products than available in stock")) order_product.quantity += 1 @@ -581,12 +581,15 @@ class Order(NiceModel): name = "Product" raise Http404(_(f"{name} does not exist: {product_uuid}")) - def remove_product(self, product_uuid: str | None = None, attributes: dict = dict): + def remove_product(self, product_uuid: str | None = None, attributes: dict = dict, zero_quantity: bool = False): if self.status != "PENDING": raise ValueError(_("you cannot remove products from an order that is not a pending one")) try: product = Product.objects.get(uuid=product_uuid) order_product = self.order_products.get(product=product, order=self) + if zero_quantity: + order_product.delete() + return self if order_product.quantity == 1: self.order_products.remove(order_product) order_product.delete() @@ -778,6 +781,16 @@ class Order(NiceModel): self.status = "FINISHED" self.save() + def bulk_add_products(self, products: list): + for product in products: + self.add_product(product.get("uuid"), attributes=product.get("attributes"), update_quantity=False) + return self + + def bulk_remove_products(self, products: list): + for product in products: + self.remove_product(product.get("uuid"), attributes=product.get("attributes"), zero_quantity=True) + return self + class OrderProduct(NiceModel): is_publicly_visible = False diff --git a/core/serializers/__init__.py b/core/serializers/__init__.py index bc0e72b2..95e372bf 100644 --- a/core/serializers/__init__.py +++ b/core/serializers/__init__.py @@ -55,11 +55,19 @@ class AddOrderProductSerializer(Serializer): attributes = JSONField(required=False, default=dict) +class BulkAddOrderProductsSerializer(Serializer): + products = ListField(child=AddOrderProductSerializer(), required=True) + + class RemoveOrderProductSerializer(Serializer): product_uuid = CharField(required=True) attributes = JSONField(required=False, default=dict) +class BulkRemoveOrderProductsSerializer(Serializer): + products = ListField(child=RemoveOrderProductSerializer(), required=True) + + class AddWishlistProductSerializer(Serializer): product_uuid = CharField(required=True) diff --git a/core/viewsets.py b/core/viewsets.py index 3297bd65..122c7dad 100644 --- a/core/viewsets.py +++ b/core/viewsets.py @@ -60,7 +60,9 @@ from core.serializers import ( AttributeValueSimpleSerializer, BrandDetailSerializer, BrandSimpleSerializer, + BulkAddOrderProductsSerializer, BulkAddWishlistProductSerializer, + BulkRemoveOrderProductsSerializer, BulkRemoveWishlistProductSerializer, BuyOrderSerializer, BuyUnregisteredOrderSerializer, @@ -305,7 +307,7 @@ class OrderViewSet(EvibesViewSet): serializer.is_valid(raise_exception=True) try: order = Order.objects.get(uuid=kwargs.get("pk")) - if not (request.user.has_perm("core.add_orderproduct") or request.user == order.user): + if not (request.user.has_perm("core.delete_orderproduct") or request.user == order.user): raise PermissionDenied(permission_denied_message) order = order.remove_product( @@ -317,6 +319,40 @@ class OrderViewSet(EvibesViewSet): except Order.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) + @action(detail=True, methods=["post"], url_path="bulk_add_order_products") + def bulk_add_order_products(self, request, *_args, **kwargs): + serializer = BulkAddOrderProductsSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + try: + order = Order.objects.get(uuid=kwargs.get("pk")) + if not (request.user.has_perm("core.add_orderproduct") or request.user == order.user): + raise PermissionDenied(permission_denied_message) + + order = order.bulk_add_products( + products=serializer.validated_data.get("products"), + ) + + return Response(status=status.HTTP_200_OK, data=OrderDetailSerializer(order).data) + except Order.DoesNotExist: + return Response(status=status.HTTP_404_NOT_FOUND) + + @action(detail=True, methods=["post"], url_path="bulk_remove_order_products") + def bulk_remove_order_products(self, request, *_args, **kwargs): + serializer = BulkRemoveOrderProductsSerializer(data=request.data) + serializer.is_valid(raise_exception=True) + try: + order = Order.objects.get(uuid=kwargs.get("pk")) + if not (request.user.has_perm("core.delete_orderproduct") or request.user == order.user): + raise PermissionDenied(permission_denied_message) + + order = order.bulk_remove_products( + products=serializer.validated_data.get("products"), + ) + + return Response(status=status.HTTP_200_OK, data=OrderDetailSerializer(order).data) + except Order.DoesNotExist: + return Response(status=status.HTTP_404_NOT_FOUND) + class OrderProductViewSet(EvibesViewSet): queryset = OrderProduct.objects.all() From 861010ae864276b4b38c4a47164f5270c01da14e Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 14:59:24 +0300 Subject: [PATCH 09/15] Features: 1) Add detailed error traceback in activation error response; Fixes: 1) Log complete error traceback for debugging activation failures; Extra: 1) Minor code adjustments and variable addition for error handling; --- vibes_auth/viewsets.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/vibes_auth/viewsets.py b/vibes_auth/viewsets.py index bfae34a7..d61f47ee 100644 --- a/vibes_auth/viewsets.py +++ b/vibes_auth/viewsets.py @@ -1,4 +1,5 @@ import logging +import traceback from contextlib import suppress from secrets import compare_digest @@ -99,6 +100,7 @@ class UserViewSet( @action(detail=False, methods=["post"]) @method_decorator(ratelimit(key="ip", rate="2/h" if not DEBUG else "888/h")) def activate(self, request): + detail = "" try: uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode() user = User.objects.get(pk=uuid) @@ -117,10 +119,10 @@ class UserViewSet( user.save() except (TypeError, ValueError, OverflowError, User.DoesNotExist) as e: user = None - logger.error(str(e)) + detail = str(traceback.format_exc()) if user is None: return Response( - {"error": _("activation link is invalid!")}, + {"error": _("activation link is invalid!"), "detail": detail}, status=status.HTTP_400_BAD_REQUEST, ) else: From 0d9df63ca71f836eb8d85e5e4394fec2bc6b9c35 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 15:14:43 +0300 Subject: [PATCH 10/15] Features: None; Fixes: 1) Ensure user retrieval bypasses caching using `.nocache()` method; Extra: None; --- vibes_auth/viewsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vibes_auth/viewsets.py b/vibes_auth/viewsets.py index d61f47ee..29c2905f 100644 --- a/vibes_auth/viewsets.py +++ b/vibes_auth/viewsets.py @@ -103,7 +103,7 @@ class UserViewSet( detail = "" try: uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode() - user = User.objects.get(pk=uuid) + user = User.objects.get(pk=uuid).nocache() if not user.check_token(request.data.get("token")): return Response( {"error": _("activation link is invalid!")}, From 34616d6cd5b0313445c2e8920baa0d2355617496 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 15:22:19 +0300 Subject: [PATCH 11/15] Fixes: 1) Correct query order to call `nocache` before `get` in `vibes_auth/viewsets.py`; Extra: None; --- vibes_auth/viewsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vibes_auth/viewsets.py b/vibes_auth/viewsets.py index 29c2905f..1a9f61d8 100644 --- a/vibes_auth/viewsets.py +++ b/vibes_auth/viewsets.py @@ -103,7 +103,7 @@ class UserViewSet( detail = "" try: uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode() - user = User.objects.get(pk=uuid).nocache() + user = User.objects.nocache().get(pk=uuid) if not user.check_token(request.data.get("token")): return Response( {"error": _("activation link is invalid!")}, From cf721a50fa5b65a53eddf7165096a06a08d0b12e Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 15:23:59 +0300 Subject: [PATCH 12/15] Features: 1) Add `activation_error` variable for enhanced error handling; 2) Raise detailed exception in debug mode during user activation failure; Fixes: 1) Capture and store specific activation errors for debugging purposes; Extra: 1) Minor cleanup in exception handling logic; --- vibes_auth/viewsets.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vibes_auth/viewsets.py b/vibes_auth/viewsets.py index 1a9f61d8..a1819b57 100644 --- a/vibes_auth/viewsets.py +++ b/vibes_auth/viewsets.py @@ -101,6 +101,7 @@ class UserViewSet( @method_decorator(ratelimit(key="ip", rate="2/h" if not DEBUG else "888/h")) def activate(self, request): detail = "" + activation_error = None try: uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode() user = User.objects.nocache().get(pk=uuid) @@ -117,10 +118,13 @@ class UserViewSet( user.is_active = True user.is_verified = True user.save() - except (TypeError, ValueError, OverflowError, User.DoesNotExist) as e: + except (TypeError, ValueError, OverflowError, User.DoesNotExist) as activation_error: user = None + activation_error = activation_error detail = str(traceback.format_exc()) if user is None: + if DEBUG: + raise Exception from activation_error return Response( {"error": _("activation link is invalid!"), "detail": detail}, status=status.HTTP_400_BAD_REQUEST, From 7f761f751a1832cb63e45f7e113b1bbbcfeffc39 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 15:26:53 +0300 Subject: [PATCH 13/15] Fixes: 1) Correct token decoding in user activation check. Extra: None. --- vibes_auth/viewsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vibes_auth/viewsets.py b/vibes_auth/viewsets.py index a1819b57..fada32f8 100644 --- a/vibes_auth/viewsets.py +++ b/vibes_auth/viewsets.py @@ -105,7 +105,7 @@ class UserViewSet( try: uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode() user = User.objects.nocache().get(pk=uuid) - if not user.check_token(request.data.get("token")): + if not user.check_token(urlsafe_base64_decode(request.data.get("token"))): return Response( {"error": _("activation link is invalid!")}, status=status.HTTP_400_BAD_REQUEST, From 61287dfd16035c3196ec55ee61a198d6784c4a9d Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Wed, 28 May 2025 15:30:25 +0300 Subject: [PATCH 14/15] Fixes: 1) Correct token decoding in user activation workflow to prevent potential errors; Extra: None; --- vibes_auth/viewsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vibes_auth/viewsets.py b/vibes_auth/viewsets.py index fada32f8..ec4a2620 100644 --- a/vibes_auth/viewsets.py +++ b/vibes_auth/viewsets.py @@ -105,7 +105,7 @@ class UserViewSet( try: uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode() user = User.objects.nocache().get(pk=uuid) - if not user.check_token(urlsafe_base64_decode(request.data.get("token"))): + if not user.check_token(urlsafe_base64_decode(request.data.get("token")).decode()): return Response( {"error": _("activation link is invalid!")}, status=status.HTTP_400_BAD_REQUEST, From b802d7266c1735ee378aa9cd424c509c441cf5ac Mon Sep 17 00:00:00 2001 From: Alexandr Waltz Date: Wed, 28 May 2025 22:37:39 +1000 Subject: [PATCH 15/15] Storefront updates --- storefront/src/App.vue | 12 +- .../src/components/base/base-footer.vue | 19 ++ .../src/components/base/base-header.vue | 26 +++ .../src/components/forms/contact-form.vue | 88 +++++++ .../src/components/forms/deposit-form.vue | 65 ++++++ .../src/components/forms/login-form.vue | 16 +- .../components/forms/new-password-form.vue | 66 ++++++ .../src/components/forms/register-form.vue | 9 +- .../components/forms/reset-password-form.vue | 50 ++++ .../src/components/forms/update-form.vue | 104 +++++++++ storefront/src/components/ui/ui-button.vue | 12 +- storefront/src/components/ui/ui-checkbox.vue | 67 ++++++ storefront/src/components/ui/ui-input.vue | 22 +- storefront/src/components/ui/ui-textarea.vue | 90 ++++++++ storefront/src/composables/auth/index.js | 6 + storefront/src/composables/auth/useLogin.js | 50 ++-- storefront/src/composables/auth/useLogout.js | 34 +++ .../src/composables/auth/useNewPassword.js | 73 ++++++ .../src/composables/auth/usePasswordReset.js | 51 ++++ storefront/src/composables/auth/useRefresh.js | 36 ++- .../src/composables/auth/useRegister.js | 16 +- storefront/src/composables/blog/index.js | 1 + .../src/composables/blog/usePostBySlug.js | 24 ++ storefront/src/composables/blog/usePosts.js | 20 ++ .../src/composables/categories/index.js | 2 + .../composables/categories/useCategories.js | 20 ++ .../categories/useCategorybySlug.js | 24 ++ storefront/src/composables/company/index.js | 1 + .../src/composables/company/useCompanyInfo.js | 26 +++ storefront/src/composables/contact/index.js | 1 + .../src/composables/contact/useContactUs.js | 59 +++++ storefront/src/composables/languages/index.js | 2 + .../languages/useLanguageSwitch.js | 61 +++++ .../src/composables/languages/useLanguages.js | 33 +++ storefront/src/composables/orders/index.js | 1 + .../usePendingOrder.js} | 2 +- storefront/src/composables/products/index.js | 1 + .../composables/products/useProductBySlug.js | 24 ++ .../src/composables/products/useProducts.js | 53 +++++ storefront/src/composables/user/index.js | 3 + storefront/src/composables/user/useDeposit.js | 48 ++++ .../src/composables/user/useUserActivation.js | 59 +++++ .../src/composables/user/useUserUpdating.js | 120 ++++++++++ storefront/src/composables/utils/index.js | 1 + .../{auth => utils}/useMainClient.js | 8 +- storefront/src/composables/wishlist/index.js | 1 + .../useWishlist.js} | 2 +- storefront/src/config/index.js | 6 +- storefront/src/core/helpers/translations.js | 42 ++-- .../graphql/fragments/categories.fragment.js | 11 + .../src/graphql/fragments/company.fragment.js | 12 + .../graphql/fragments/languages.fragment.js | 9 + .../src/graphql/fragments/orders.fragment.js | 28 +++ .../graphql/fragments/products.fragment.js | 37 +++ .../src/graphql/fragments/user.fragment.js | 17 ++ .../graphql/fragments/wishlist.fragment.js | 16 ++ storefront/src/graphql/mutations/auth.js | 77 +------ storefront/src/graphql/mutations/cart.js | 217 +----------------- storefront/src/graphql/mutations/contact.js | 6 +- storefront/src/graphql/mutations/languages.js | 17 ++ storefront/src/graphql/mutations/user.js | 41 ++++ storefront/src/graphql/mutations/wishlist.js | 105 +-------- storefront/src/graphql/queries/blog.js | 29 +++ storefront/src/graphql/queries/categories.js | 15 +- storefront/src/graphql/queries/company.js | 9 +- storefront/src/graphql/queries/docs.js | 17 -- storefront/src/graphql/queries/languages.js | 6 +- storefront/src/graphql/queries/orders.js | 58 +---- storefront/src/graphql/queries/products.js | 79 +------ storefront/src/graphql/queries/wishlist.js | 39 +--- storefront/src/locales/en-gb.json | 34 +-- storefront/src/pages/blog-page.vue | 24 ++ storefront/src/pages/home-page.vue | 14 ++ storefront/src/pages/post-page.vue | 29 +++ storefront/src/pages/product-page.vue | 29 +++ storefront/src/pages/profile-page.vue | 19 ++ storefront/src/pages/store-page.vue | 28 +++ storefront/src/router/index.js | 112 ++++++++- storefront/src/stores/auth.js | 14 +- storefront/src/stores/cart.js | 4 +- storefront/src/stores/company.js | 4 +- storefront/src/stores/languages.js | 14 ++ storefront/src/stores/wishlist.js | 4 +- 83 files changed, 2048 insertions(+), 683 deletions(-) create mode 100644 storefront/src/components/base/base-footer.vue create mode 100644 storefront/src/components/base/base-header.vue create mode 100644 storefront/src/components/forms/contact-form.vue create mode 100644 storefront/src/components/forms/deposit-form.vue create mode 100644 storefront/src/components/forms/new-password-form.vue create mode 100644 storefront/src/components/forms/reset-password-form.vue create mode 100644 storefront/src/components/forms/update-form.vue create mode 100644 storefront/src/components/ui/ui-checkbox.vue create mode 100644 storefront/src/components/ui/ui-textarea.vue create mode 100644 storefront/src/composables/auth/index.js create mode 100644 storefront/src/composables/auth/useLogout.js create mode 100644 storefront/src/composables/auth/useNewPassword.js create mode 100644 storefront/src/composables/auth/usePasswordReset.js create mode 100644 storefront/src/composables/blog/index.js create mode 100644 storefront/src/composables/blog/usePostBySlug.js create mode 100644 storefront/src/composables/blog/usePosts.js create mode 100644 storefront/src/composables/categories/index.js create mode 100644 storefront/src/composables/categories/useCategories.js create mode 100644 storefront/src/composables/categories/useCategorybySlug.js create mode 100644 storefront/src/composables/company/index.js create mode 100644 storefront/src/composables/company/useCompanyInfo.js create mode 100644 storefront/src/composables/contact/index.js create mode 100644 storefront/src/composables/contact/useContactUs.js create mode 100644 storefront/src/composables/languages/index.js create mode 100644 storefront/src/composables/languages/useLanguageSwitch.js create mode 100644 storefront/src/composables/languages/useLanguages.js create mode 100644 storefront/src/composables/orders/index.js rename storefront/src/composables/{auth/useAuthOrder.js => orders/usePendingOrder.js} (93%) create mode 100644 storefront/src/composables/products/index.js create mode 100644 storefront/src/composables/products/useProductBySlug.js create mode 100644 storefront/src/composables/products/useProducts.js create mode 100644 storefront/src/composables/user/index.js create mode 100644 storefront/src/composables/user/useDeposit.js create mode 100644 storefront/src/composables/user/useUserActivation.js create mode 100644 storefront/src/composables/user/useUserUpdating.js create mode 100644 storefront/src/composables/utils/index.js rename storefront/src/composables/{auth => utils}/useMainClient.js (71%) create mode 100644 storefront/src/composables/wishlist/index.js rename storefront/src/composables/{auth/useAuthWishlist.js => wishlist/useWishlist.js} (93%) create mode 100644 storefront/src/graphql/fragments/categories.fragment.js create mode 100644 storefront/src/graphql/fragments/company.fragment.js create mode 100644 storefront/src/graphql/fragments/languages.fragment.js create mode 100644 storefront/src/graphql/fragments/orders.fragment.js create mode 100644 storefront/src/graphql/fragments/products.fragment.js create mode 100644 storefront/src/graphql/fragments/user.fragment.js create mode 100644 storefront/src/graphql/fragments/wishlist.fragment.js create mode 100644 storefront/src/graphql/mutations/languages.js create mode 100644 storefront/src/graphql/mutations/user.js create mode 100644 storefront/src/graphql/queries/blog.js delete mode 100644 storefront/src/graphql/queries/docs.js create mode 100644 storefront/src/pages/blog-page.vue create mode 100644 storefront/src/pages/post-page.vue create mode 100644 storefront/src/pages/product-page.vue create mode 100644 storefront/src/pages/profile-page.vue create mode 100644 storefront/src/pages/store-page.vue create mode 100644 storefront/src/stores/languages.js diff --git a/storefront/src/App.vue b/storefront/src/App.vue index 4b92bf5f..e9dfd165 100644 --- a/storefront/src/App.vue +++ b/storefront/src/App.vue @@ -1,12 +1,20 @@ + + \ No newline at end of file diff --git a/storefront/src/components/base/base-header.vue b/storefront/src/components/base/base-header.vue new file mode 100644 index 00000000..7bb95a87 --- /dev/null +++ b/storefront/src/components/base/base-header.vue @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/forms/contact-form.vue b/storefront/src/components/forms/contact-form.vue new file mode 100644 index 00000000..e3bb55d0 --- /dev/null +++ b/storefront/src/components/forms/contact-form.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/forms/deposit-form.vue b/storefront/src/components/forms/deposit-form.vue new file mode 100644 index 00000000..b023fc6b --- /dev/null +++ b/storefront/src/components/forms/deposit-form.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/forms/login-form.vue b/storefront/src/components/forms/login-form.vue index aeda459f..861b22e4 100644 --- a/storefront/src/components/forms/login-form.vue +++ b/storefront/src/components/forms/login-form.vue @@ -1,5 +1,5 @@ diff --git a/storefront/src/components/forms/new-password-form.vue b/storefront/src/components/forms/new-password-form.vue new file mode 100644 index 00000000..07ffe618 --- /dev/null +++ b/storefront/src/components/forms/new-password-form.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/forms/register-form.vue b/storefront/src/components/forms/register-form.vue index 711cba31..2188c0af 100644 --- a/storefront/src/components/forms/register-form.vue +++ b/storefront/src/components/forms/register-form.vue @@ -1,5 +1,5 @@ + + \ No newline at end of file diff --git a/storefront/src/components/forms/update-form.vue b/storefront/src/components/forms/update-form.vue new file mode 100644 index 00000000..1d884a81 --- /dev/null +++ b/storefront/src/components/forms/update-form.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/ui/ui-button.vue b/storefront/src/components/ui/ui-button.vue index 967a2b14..163a3c00 100644 --- a/storefront/src/components/ui/ui-button.vue +++ b/storefront/src/components/ui/ui-button.vue @@ -1,5 +1,10 @@