Merge branch 'main' into storefront-nuxt

This commit is contained in:
Egor Pavlovich Gorbunov 2025-09-19 17:05:29 +03:00
commit 4a99d51077
229 changed files with 43727 additions and 6028 deletions

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

Binary file not shown.

View file

@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: blog/apps.py:8
msgid "blog"
msgstr ""
#: blog/models.py:36
msgid "post title"
msgstr ""
#: blog/models.py:36
msgid "title"
msgstr ""
#: blog/models.py:83
msgid "post"
msgstr ""
#: blog/models.py:84
msgid "posts"
msgstr ""
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr ""
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr ""
#: blog/models.py:123
msgid "tag name"
msgstr ""
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr ""
#: blog/models.py:128
msgid "tag display name"
msgstr ""
#: blog/models.py:136
msgid "post tag"
msgstr ""
#: blog/models.py:137
msgid "post tags"
msgstr ""

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

Binary file not shown.

View file

@ -0,0 +1,67 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: he-il\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"
#: blog/apps.py:8
msgid "blog"
msgstr "בלוג"
#: blog/models.py:36
msgid "post title"
msgstr "כותרת הפוסט"
#: blog/models.py:36
msgid "title"
msgstr "כותרת"
#: blog/models.py:83
msgid "post"
msgstr "פוסט"
#: blog/models.py:84
msgid "posts"
msgstr "פוסטים"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr "קובצי Markdown אינם נתמכים עדיין - השתמש בתוכן Markdown במקום!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr "יש לספק קובץ markdown או תוכן markdown - באופן בלעדי"
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "מזהה תגיות פנימי עבור תגיות הפוסט"
#: blog/models.py:123
msgid "tag name"
msgstr "שם היום"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "שם ידידותי למשתמש עבור תגיות הפוסט"
#: blog/models.py:128
msgid "tag display name"
msgstr "שם תצוגה של התג"
#: blog/models.py:136
msgid "post tag"
msgstr "תגית פוסט"
#: blog/models.py:137
msgid "post tags"
msgstr "תגיות פוסט"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

Binary file not shown.

View file

@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: blog/apps.py:8
msgid "blog"
msgstr ""
#: blog/models.py:36
msgid "post title"
msgstr ""
#: blog/models.py:36
msgid "title"
msgstr ""
#: blog/models.py:83
msgid "post"
msgstr ""
#: blog/models.py:84
msgid "posts"
msgstr ""
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr ""
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr ""
#: blog/models.py:123
msgid "tag name"
msgstr ""
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr ""
#: blog/models.py:128
msgid "tag display name"
msgstr ""
#: blog/models.py:136
msgid "post tag"
msgstr ""
#: blog/models.py:137
msgid "post tags"
msgstr ""

Binary file not shown.

View file

@ -0,0 +1,71 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: id-id\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"
#: blog/apps.py:8
msgid "blog"
msgstr "Blog"
#: blog/models.py:36
msgid "post title"
msgstr "Judul postingan"
#: blog/models.py:36
msgid "title"
msgstr "Judul"
#: blog/models.py:83
msgid "post"
msgstr "Pos"
#: blog/models.py:84
msgid "posts"
msgstr "Posting"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr ""
"File penurunan harga tidak didukung - gunakan konten penurunan harga sebagai"
" gantinya!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
"file penurunan harga atau konten penurunan harga harus disediakan - tidak "
"boleh ada yang sama"
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "pengidentifikasi tag internal untuk tag pos"
#: blog/models.py:123
msgid "tag name"
msgstr "Nama tag"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "Nama yang mudah digunakan untuk tag postingan"
#: blog/models.py:128
msgid "tag display name"
msgstr "Nama tampilan tag"
#: blog/models.py:136
msgid "post tag"
msgstr "Tag pos"
#: blog/models.py:137
msgid "post tags"
msgstr "Tag pos"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

Binary file not shown.

View file

@ -0,0 +1,67 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: ko-kr\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"
#: blog/apps.py:8
msgid "blog"
msgstr "블로그"
#: blog/models.py:36
msgid "post title"
msgstr "게시물 제목"
#: blog/models.py:36
msgid "title"
msgstr "제목"
#: blog/models.py:83
msgid "post"
msgstr "게시물"
#: blog/models.py:84
msgid "posts"
msgstr "게시물"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr "마크다운 파일은 지원되지 않습니다 예 - 대신 마크다운 콘텐츠를 사용하세요!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr "마크다운 파일 또는 마크다운 콘텐츠가 제공되어야 합니다."
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "게시물 태그의 내부 태그 식별자"
#: blog/models.py:123
msgid "tag name"
msgstr "태그 이름"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "게시물 태그의 사용자 친화적인 이름"
#: blog/models.py:128
msgid "tag display name"
msgstr "태그 표시 이름"
#: blog/models.py:136
msgid "post tag"
msgstr "게시물 태그"
#: blog/models.py:137
msgid "post tags"
msgstr "게시물 태그"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

Binary file not shown.

View file

@ -0,0 +1,68 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: no-no\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"
#: blog/apps.py:8
msgid "blog"
msgstr "Blogg"
#: blog/models.py:36
msgid "post title"
msgstr "Innleggets tittel"
#: blog/models.py:36
msgid "title"
msgstr "Title"
#: blog/models.py:83
msgid "post"
msgstr "Post"
#: blog/models.py:84
msgid "posts"
msgstr "Innlegg"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr "Markdown-filer støttes ikke - bruk markdown-innhold i stedet!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
"en markdown-fil eller markdown-innhold må oppgis - gjensidig utelukkende"
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "intern tagg-identifikator for innleggstaggen"
#: blog/models.py:123
msgid "tag name"
msgstr "Tagg navn"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "Brukervennlig navn for innleggstaggen"
#: blog/models.py:128
msgid "tag display name"
msgstr "Visningsnavn for taggen"
#: blog/models.py:136
msgid "post tag"
msgstr "Post tag"
#: blog/models.py:137
msgid "post tags"
msgstr "Tagger for innlegg"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

Binary file not shown.

View file

@ -0,0 +1,69 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: sv-se\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"
#: blog/apps.py:8
msgid "blog"
msgstr "Blogg"
#: blog/models.py:36
msgid "post title"
msgstr "Inläggets titel"
#: blog/models.py:36
msgid "title"
msgstr "Titel"
#: blog/models.py:83
msgid "post"
msgstr "Post"
#: blog/models.py:84
msgid "posts"
msgstr "Inlägg"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr "Markdown-filer stöds inte - använd markdown-innehåll istället!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
"en markdown-fil eller markdown-innehåll måste tillhandahållas - ömsesidigt "
"uteslutande"
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "intern taggidentifierare för inläggstaggen"
#: blog/models.py:123
msgid "tag name"
msgstr "Tagg namn"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "Användarvänligt namn för inläggstaggen"
#: blog/models.py:128
msgid "tag display name"
msgstr "Taggens visningsnamn"
#: blog/models.py:136
msgid "post tag"
msgstr "Post tagg"
#: blog/models.py:137
msgid "post tags"
msgstr "Taggar för inlägg"

Binary file not shown.

View file

@ -0,0 +1,69 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: th-th\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"
#: blog/apps.py:8
msgid "blog"
msgstr "บล็อก"
#: blog/models.py:36
msgid "post title"
msgstr "ชื่อโพสต์"
#: blog/models.py:36
msgid "title"
msgstr "ชื่อเรื่อง"
#: blog/models.py:83
msgid "post"
msgstr "โพสต์"
#: blog/models.py:84
msgid "posts"
msgstr "โพสต์"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr "ไฟล์มาร์กดาวน์ยังไม่รองรับในตอนนี้ - กรุณาใช้เนื้อหาแบบมาร์กดาวน์แทน!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
"ไฟล์มาร์กดาวน์หรือเนื้อหาแบบมาร์กดาวน์ต้องได้รับการจัดเตรียมไว้ - "
"ไม่สามารถใช้ร่วมกันได้"
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "ตัวระบุแท็กภายในสำหรับแท็กโพสต์"
#: blog/models.py:123
msgid "tag name"
msgstr "ชื่อวัน"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "ชื่อที่ใช้งานได้ง่ายสำหรับแท็กโพสต์"
#: blog/models.py:128
msgid "tag display name"
msgstr "แสดงชื่อแท็ก"
#: blog/models.py:136
msgid "post tag"
msgstr "โพสต์แท็ก"
#: blog/models.py:137
msgid "post tags"
msgstr "ป้ายกำกับโพสต์"

Binary file not shown.

View file

@ -0,0 +1,71 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: tr-tr\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"
#: blog/apps.py:8
msgid "blog"
msgstr "Blog"
#: blog/models.py:36
msgid "post title"
msgstr "Gönderinin başlığı"
#: blog/models.py:36
msgid "title"
msgstr "Başlık"
#: blog/models.py:83
msgid "post"
msgstr "Posta"
#: blog/models.py:84
msgid "posts"
msgstr "Mesajlar"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr ""
"Markdown dosyaları desteklenmiyor yer - bunun yerine markdown içeriği "
"kullanın!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
"bir markdown dosyası veya markdown içeriği sağlanmalıdır - birbirini "
"dışlayan"
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "gönderi etiketi için dahili etiket tanımlayıcısı"
#: blog/models.py:123
msgid "tag name"
msgstr "Etiket adı"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "Gönderi etiketi için kullanıcı dostu ad"
#: blog/models.py:128
msgid "tag display name"
msgstr "Etiket görünen adı"
#: blog/models.py:136
msgid "post tag"
msgstr "Mesaj etiketi"
#: blog/models.py:137
msgid "post tags"
msgstr "Gönderi etiketleri"

Binary file not shown.

View file

@ -0,0 +1,70 @@
#
msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"
"Language: vi-vn\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"
#: blog/apps.py:8
msgid "blog"
msgstr "Blog"
#: blog/models.py:36
msgid "post title"
msgstr "Tiêu đề bài đăng"
#: blog/models.py:36
msgid "title"
msgstr "Tiêu đề"
#: blog/models.py:83
msgid "post"
msgstr "Bài đăng"
#: blog/models.py:84
msgid "posts"
msgstr "Bài đăng"
#: blog/models.py:88
msgid "markdown files are not supported yet - use markdown content instead"
msgstr ""
"Tệp Markdown hiện chưa được hỗ trợ - hãy sử dụng nội dung Markdown thay thế!"
#: blog/models.py:90
msgid ""
"a markdown file or markdown content must be provided - mutually exclusive"
msgstr ""
"Phải cung cấp tệp Markdown hoặc nội dung Markdown - hai tùy chọn này là "
"tương phản nhau."
#: blog/models.py:122
msgid "internal tag identifier for the post tag"
msgstr "Mã định danh thẻ nội bộ cho thẻ bài viết"
#: blog/models.py:123
msgid "tag name"
msgstr "Tên ngày"
#: blog/models.py:127
msgid "user-friendly name for the post tag"
msgstr "Tên thân thiện với người dùng cho thẻ bài viết"
#: blog/models.py:128
msgid "tag display name"
msgstr "Hiển thị tên thẻ"
#: blog/models.py:136
msgid "post tag"
msgstr "Thẻ bài viết"
#: blog/models.py:137
msgid "post tags"
msgstr "Thẻ bài viết"

View file

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EVIBES 3.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-13 15:25+0300\n"
"POT-Creation-Date: 2025-09-19 15:04+0300\n"
"PO-Revision-Date: 2025-06-16 08:59+0100\n"
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
"Language-Team: LANGUAGE <CONTACT@FUREUNOIR.COM>\n"

View file

@ -0,0 +1,173 @@
# Generated by Django 5.2 on 2025-09-19 11:59
import markdown_field.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("blog", "0004_post_content_ar_ar_post_content_cs_cz_and_more"),
]
operations = [
migrations.AddField(
model_name="post",
name="content_fa_ir",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_he_il",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_hr_hr",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_id_id",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_ko_kr",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_no_no",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_sv_se",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_th_th",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_tr_tr",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="content_vi_vn",
field=markdown_field.fields.MarkdownField(blank=True, null=True, verbose_name="content"),
),
migrations.AddField(
model_name="post",
name="title_fa_ir",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_he_il",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_hr_hr",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_id_id",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_ko_kr",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_no_no",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_sv_se",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_th_th",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_tr_tr",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
migrations.AddField(
model_name="post",
name="title_vi_vn",
field=models.CharField(
help_text="post title",
max_length=128,
null=True,
unique=True,
verbose_name="title",
),
),
]

View file

@ -544,7 +544,7 @@ class FeedbackProductAction(BaseMutation):
user = info.context.user
try:
order_product = OrderProduct.objects.get(uuid=order_product_uuid)
if user != order_product.order.user or not user.has_perm("core.change_orderproduct"):
if user != order_product.order.user:
raise PermissionDenied(permission_denied_message)
match action:
case "add":

View file

@ -7,6 +7,7 @@ from django.db.models.functions import Length
from django.utils.translation import gettext_lazy as _
from graphene import (
UUID,
Boolean,
Field,
Float,
InputObjectType,
@ -16,7 +17,6 @@ from graphene import (
ObjectType,
String,
relay,
Boolean,
)
from graphene.types.generic import GenericScalar
from graphene_django import DjangoObjectType
@ -44,15 +44,15 @@ from core.models import (
Vendor,
Wishlist,
)
from core.utils import graphene_current_lang, graphene_abs
from core.utils import graphene_abs, graphene_current_lang
from core.utils.seo_builders import (
org_schema,
breadcrumb_schema,
brand_schema,
website_schema,
breadcrumb_schema,
category_schema,
item_list_schema,
org_schema,
product_schema,
website_schema,
)
from payments.graphene.object_types import TransactionType
from payments.models import Transaction
@ -397,6 +397,7 @@ class OrderProductType(DjangoObjectType):
attributes = GenericScalar(description=_("attributes"))
notifications = GenericScalar(description=_("notifications"))
download_url = String(description=_("download url for this order product if applicable"))
feedback = Field(lambda: FeedbackType, description=_("feedback"))
class Meta:
model = OrderProduct
@ -409,10 +410,15 @@ class OrderProductType(DjangoObjectType):
"comments",
"attributes",
"notifications",
"feedback",
)
filter_fields = ["uuid"]
description = _("order products")
def resolve_feedback(self: OrderProduct, _info):
feedbacks = Feedback.objects.filter(order_product=self)
return feedbacks.first() if feedbacks.exists() else None
def resolve_attributes(self, _info):
return camelize(self.attributes)

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

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,3 +5,38 @@ class RootDirectory:
def __init__(self):
self.label = "root"
self.path = settings.BASE_DIR / "evibes"
# Mapping from Django locale codes to DeepL API codes
DEEPL_TARGET_LANGUAGES_MAPPING = {
"ar-ar": "AR",
"cs-cz": "CS",
"da-dk": "DA",
"de-de": "DE",
"en-gb": "EN-GB",
"en-us": "EN-US",
"es-es": "ES",
"fa-ir": "unsupported",
"fr-fr": "FR",
"he-il": "HE",
"hi-in": "unsupported",
"hr-hr": "unsupported",
"id-id": "ID",
"it-it": "IT",
"ja-jp": "JA",
"kk-kz": "unsupported",
"ko-kr": "KO",
"nl-nl": "NL",
"no-no": "NB",
"pl-pl": "PL",
"pt-br": "PT-BR",
"ro-ro": "RO",
"ru-ru": "RU",
"sv-se": "SV",
"th-th": "TH",
"tr-tr": "TR",
"vi-vn": "VI",
"zh-hans": "ZH-HANS",
}
TRANSLATABLE_APPS = ["core", "vibes_auth", "blog", "payments", "root"]

View file

@ -5,9 +5,10 @@ from tempfile import NamedTemporaryFile
import polib
from django.apps import apps
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from core.management.commands import RootDirectory
from core.management.commands import RootDirectory, TRANSLATABLE_APPS
# Patterns to identify placeholders
PLACEHOLDER_REGEXES = [
@ -93,13 +94,19 @@ class Command(BaseCommand):
def handle(self, *args, **options) -> None:
langs: list[str] = options["target_languages"]
if "ALL" in langs:
langs = list(dict(settings.LANGUAGES).keys())
apps_to_scan: set[str] = set(options["target_apps"])
if "ALL" in apps_to_scan:
apps_to_scan = set(TRANSLATABLE_APPS)
root_path: str = options.get("root_path") or "/app/"
configs = list(apps.get_app_configs())
# noinspection PyTypeChecker
configs.append(RootDirectory()) # type: ignore [arg-type]
errors = 0
for app_conf in configs:
if app_conf.label not in apps_to_scan:
continue
@ -143,6 +150,7 @@ class Command(BaseCommand):
if app_issues:
self.stdout.write(f"→ App: {app_conf.label}")
for line in app_issues:
errors += 1
self.stdout.write(line)
self.stdout.write("")
else:
@ -151,3 +159,5 @@ class Command(BaseCommand):
self.stdout.write("")
self.stdout.write(self.style.SUCCESS("Done scanning."))
if errors:
exit(1)

View file

@ -7,29 +7,7 @@ import requests
from django.apps import apps
from django.core.management.base import BaseCommand, CommandError
from core.management.commands import RootDirectory
# Mapping from Django locale codes to DeepL API codes
DEEPL_TARGET_LANGUAGES_MAPPING = {
"en-gb": "EN-GB",
"ar-ar": "AR",
"cs-cz": "CS",
"da-dk": "DA",
"de-de": "DE",
"en-us": "EN-US",
"es-es": "ES",
"fr-fr": "FR",
"hi-in": "unsupported",
"it-it": "IT",
"ja-jp": "JA",
"kk-kz": "unsupported",
"nl-nl": "NL",
"pl-pl": "PL",
"pt-br": "PT-BR",
"ro-ro": "RO",
"ru-ru": "RU",
"zh-hans": "ZH-HANS",
}
from core.management.commands import RootDirectory, DEEPL_TARGET_LANGUAGES_MAPPING, TRANSLATABLE_APPS
# Patterns to identify placeholders
PLACEHOLDER_REGEXES = [
@ -107,7 +85,7 @@ class Command(BaseCommand):
action="append",
required=True,
metavar="LANG",
help="Locale code for translation, e.g. de-DE, fr-FR.",
help="Locale code for translation, e.g. de-DE, fr-FR. Use ALL to translate all languages.",
)
parser.add_argument(
"-a",
@ -116,12 +94,20 @@ class Command(BaseCommand):
action="append",
required=True,
metavar="APP",
help="App label for translation, e.g. core, payments.",
help="App label for translation, e.g. core, payments. Use ALL to translate all apps.",
)
def handle(self, *args, **options) -> None:
target_langs = options["target_languages"]
if "ALL" in target_langs:
target_langs = DEEPL_TARGET_LANGUAGES_MAPPING.keys()
target_apps = set(options["target_apps"])
if "ALL" in target_apps:
target_apps = {
app_conf.label
for app_conf in list(apps.get_app_configs()) + [RootDirectory()]
if app_conf.label in TRANSLATABLE_APPS
}
auth_key = os.environ.get("DEEPL_AUTH_KEY")
if not auth_key:
raise CommandError("DEEPL_AUTH_KEY not set")

View file

@ -5,28 +5,9 @@ import requests
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
DEEPL_API_URL = "https://api.deepl.com/v2/translate"
from core.management.commands import DEEPL_TARGET_LANGUAGES_MAPPING
DEEPL_TARGET_LANGUAGES_MAPPING = {
"en-gb": "EN-GB",
"ar-ar": "AR",
"cs-cz": "CS",
"da-dk": "DA",
"de-de": "DE",
"en-us": "EN-US",
"es-es": "ES",
"fr-fr": "FR",
"hi-in": "unsupported",
"it-it": "IT",
"ja-jp": "JA",
"kk-kz": "unsupported",
"nl-nl": "NL",
"pl-pl": "PL",
"pt-br": "PT-BR",
"ro-ro": "RO",
"ru-ru": "RU",
"zh-hans": "ZH-HANS",
}
DEEPL_API_URL = "https://api.deepl.com/v2/translate"
class Command(BaseCommand):

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more