Merge branch 'main' into storefront

This commit is contained in:
Alexandr SaVBaD Waltz 2025-05-28 15:38:26 +03:00
commit 537d361da1
100 changed files with 6920 additions and 6546 deletions

View file

@ -1,24 +1,25 @@
* @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
/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

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "علامات المشاركة"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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ů"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "投稿タグ"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "Тэги постов"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 "帖子标签"

View file

@ -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"]
@ -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)

View file

@ -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 = {

View file

@ -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")

View file

@ -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)

View file

@ -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()

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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)

View file

@ -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()

View file

@ -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"

View file

@ -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()

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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 "الأذونات"
@ -93,91 +93,98 @@ 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: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 "
"reversechronological order"
msgstr ""
"المنتجات التي شاهدها هذا المستخدم مؤخرًا (بحد أقصى 48)، بترتيب زمني عكسي."
#: 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 +277,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 "المستخدم غير موجود"
@ -416,6 +423,3 @@ msgstr "تمت إعادة تعيين كلمة المرور بنجاح!"
#: vibes_auth/viewsets.py:112
msgid "account already activated!"
msgstr "لقد قمت بتفعيل الحساب بالفعل..."
#~ msgid "recently viwed"
#~ msgstr "تمت مشاهدته مؤخراً"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,96 @@ 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 "Heslo je příliš slabé"
#: 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 "
"reversechronological 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: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 +276,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"
@ -368,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
@ -415,6 +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 viwed"
#~ msgstr "Nedávno zobrazené"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,96 @@ 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 "Adgangskoden er for svag"
#: 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 "
"reversechronological 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: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 +278,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"
@ -371,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
@ -418,6 +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 viwed"
#~ msgstr "Set for nylig"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,99 @@ 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."
"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 "Das Passwort ist zu schwach"
#: 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 "
"reversechronological order"
msgstr ""
"Die Produkte, die dieser Benutzer zuletzt angesehen hat (maximal 48), in "
"umgekehrter chronologischer Reihenfolge."
#: 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 +282,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"
@ -336,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
@ -376,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
@ -423,6 +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 viwed"
#~ msgstr "Kürzlich gesehen"

View file

@ -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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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,96 @@ 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 "
"reversechronological order"
msgstr ""
"The products this user has viewed most recently (max 48), in reverse-"
"chronological order."
#: 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 +281,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 +428,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"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,96 @@ 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 "
"reversechronological order"
msgstr ""
"The products this user has viewed most recently (max 48), in reverse-"
"chronological order."
#: 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 +276,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"
@ -414,6 +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 viwed"
#~ msgstr "Recently viewed"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,97 @@ 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 "La contraseña es demasiado débil"
#: 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 "
"reversechronological 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: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 +279,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"
@ -417,6 +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 viwed"
#~ msgstr "Vistos recientemente"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,99 @@ 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 "Le mot de passe est trop faible"
#: 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 "
"reversechronological 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: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 +285,24 @@ 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"
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"
@ -339,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
@ -362,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 ""
@ -378,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
@ -425,6 +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 viwed"
#~ msgstr "Récemment consultés"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,97 @@ 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 "La password è troppo debole"
#: 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 "
"reversechronological order"
msgstr ""
"I prodotti che questo utente ha visualizzato più di recente (max 48), in "
"ordine cronologico inverso."
#: 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 +281,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"
@ -419,6 +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 viwed"
#~ msgstr "Visti di recente"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,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 ""
"アクティベーションリンクが無効であるか、アカウントがすでにアクティベーション"
"されています。"
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 "
"reversechronological order"
msgstr "このユーザーが最近閲覧した商品最大48件を逆順に表示します。"
#: 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 +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 "ユーザーが存在しない"
@ -313,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"
@ -325,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."
@ -353,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 ""
@ -370,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
@ -402,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"
@ -417,6 +412,3 @@ msgstr "パスワードのリセットに成功しました!"
#: vibes_auth/viewsets.py:112
msgid "account already activated!"
msgstr "あなたはすでにアカウントを有効にしています..."
#~ msgid "recently viwed"
#~ msgstr "最近閲覧した記事"

View file

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,98 @@ 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 "Het wachtwoord is te zwak"
#: 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 "
"reversechronological order"
msgstr ""
"De producten die deze gebruiker het laatst heeft bekeken (max 48), in "
"omgekeerd-chronologische volgorde."
#: 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 +280,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"
@ -316,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"
@ -356,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 ""
@ -418,6 +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 viwed"
#~ msgstr "Onlangs bekeken"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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"
@ -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"
@ -96,90 +97,98 @@ 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 "Hasło jest zbyt słabe"
#: 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 "
"reversechronological order"
msgstr ""
"Produkty ostatnio przeglądane przez tego użytkownika (maks. 48), w "
"kolejności odwrotnej do chronologicznej."
#: 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 +281,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"
@ -404,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"
@ -418,6 +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 viwed"
#~ msgstr "Ostatnio oglądane"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,96 @@ 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 "A senha é muito fraca"
#: 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 "
"reversechronological 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: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 +277,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"
@ -325,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."
@ -415,6 +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 viwed"
#~ msgstr "Visualizado recentemente"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,97 @@ 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 "Parola este prea slabă"
#: 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 "
"reversechronological 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: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 +280,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ă"
@ -372,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
@ -419,6 +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 viwed"
#~ msgstr "Văzut recent"

View file

@ -3,18 +3,18 @@ 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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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"
"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,98 @@ 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 "
"reversechronological order"
msgstr ""
"Продукты, которые этот пользователь просматривал в последнее время (не более"
" 48), в обратном хронологическом порядке."
#: 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 +280,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 "Пользователь не существует"
@ -373,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
@ -420,6 +427,3 @@ msgstr "Пароль был успешно сброшен!"
#: vibes_auth/viewsets.py:112
msgid "account already activated!"
msgstr "Вы уже активировали учетную запись..."
#~ msgid "recently viwed"
#~ msgstr "Недавно просмотренные"

View file

@ -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 <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\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 "
"reversechronological order"
msgstr "该用户最近查看过的产品(最多 48 个),按倒序排列。"
#: 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 "用户不存在"
@ -393,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"
@ -407,6 +412,3 @@ msgstr "密码已重置成功!"
#: vibes_auth/viewsets.py:112
msgid "account already activated!"
msgstr "您已经激活了账户..."
#~ msgid "recently viwed"
#~ msgstr "最近浏览"

View file

@ -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)

View file

@ -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):

View file

@ -1,4 +1,5 @@
import logging
import traceback
from contextlib import suppress
from secrets import compare_digest
@ -99,10 +100,12 @@ 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 = ""
activation_error = None
try:
uuid = urlsafe_base64_decode(request.data.get("uidb64")).decode()
user = User.objects.get(pk=uuid)
if not user.check_token(request.data.get("token")):
user = User.objects.nocache().get(pk=uuid)
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,
@ -115,12 +118,15 @@ 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
logger.error(str(e))
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!")},
{"error": _("activation link is invalid!"), "detail": detail},
status=status.HTTP_400_BAD_REQUEST,
)
else: